Just over ten years ago, Jeff Vroom (firstname.lastname@example.org) began this project, an ambitious attempt to build a framework based on layers and code-processing that he prefers over other available tools. After finally achieving that goal, a beta release of StrataCode is now available. For those who like developing frameworks, it's a relatively small, readable, maintainable code base with no core dependencies.
StrataCode makes a great build and configuration management tool for existing Java projects. Unlike similar tools you do less copying of build configurations and have more flexibility for customizing your environments.
It also offers code-processing features and APIs to manage your code with more awareness. Leverage data binding with three new operators: forward, reverse, and bi-directional bindings between properties and expressions. The dynamic Java runtime gives you one language for build files, customized code, configuration and adds an API to create frameworks and tools. Build quick and customizable management UIs from your domain models. Build apps from scratch with declarative frameworks that leverage the layered pattern, data sync, Java to JS, HTML to Java. Deploy apps as static html/js, server-only or client/server using the same code: fully isomorphic Java. Provides an efficient state model for declarative state lifecycle management: global, per-session, per-window, per-request, multi-tenant, etc.
To get started, StrataCode supports git, maven, and an IntelliJ plugin that integrates well with Java. The test-suite processes code from dozens of standard Java projects, validating type references and catching most errors before compilation.
Grammars in StrataCode are debuggable, making it easier to add new languages and to transform or transpile code. The API lets you make incremental changes to source files by changing properties in the AST objects. For example, to change the type name, set the ClassDeclaration.typeName property or to edit the statements of a method, add or remove statements from the MethodDefinition.body property.The IntelliJ plugin is also built on top of this API, supporting several languages: scj, sc, schtml, sct, scr, and sccss.
StrataCode's runtime and IntelliJ plugin will be free to download during the trial period. It is not yet open source. We are looking for feedback on the right license but we'd like to make a sustainable developer's tool that has some way to compensate the developers who build great tools. We are looking for projects to build with StrataCode so if you need something built, contact Jeff and perhaps he can help you build it.
Although still in beta, it is already great tool and set of frameworks for building apps from scratch, with a fairly high level of support. It would also be useful to refactor large existing Java code bases, supporting continual evolution during the refactoring process. It can also be used to build or upgrade an existing SaaS platform, or build your own language oriented tools in Java. Extend the IntelliJ plugin, add your own formats and features.
Everyone wants faster software, that takes less work to build and more pleasant to use. StrataCode helps that goal by empowering not only end-users but also back-office employees, administrators, operations, designers, and other people that use and customize the solution. We believe it can empower a new class of applications, built from layered domain models, annotated with layered configuration, driven by management UIs that can reach down into the code for customized rules and operations.
Read more in these articles.