Understanding StrataCode

StrataCode helps you layer files, data and code with minimal effort. Layering of assets provides flexibility during framework development. This pattern promotes modularity and helps isolate related changes for distributing control over files, easier review, staging, and push to production.

Each feature can be used independently: java build and configuration, data binding, Java to Javascript, and modifying types. At runtime, you only need a small library of Java classes that implement the data binding and sync logic. When you use schtml or the dynamic runtime, you also need the parselets framework, and LayeredSystem.

A Java programmer trying to learn Scala, or Closure must learn lots of new syntax. StrataCode adds only a handful of syntactical extensions making code readable if you know Java. Java files in a StrataCode layer are passed through without changes. Java code named with the .sc extension works mostly the same. The types generated are the same so you can mix and match StrataCode and Java file-by-file. Under the hood, StrataCode extensions are expanded into Java code keeping the original structure, comments, etc.

Though it is easy to read any given StrataCode file, to use layers effectively in building new programs you need to understand how to use them in the way you understand how to use object oriented programming. If you succeed, you will learn a powerful design pattern, a simple syntax, an expansion of your abilility to design systems that lets you and your colleagues work with beautiful, elegant systems that lower total cost of development: one language, one toolset, many skill sets, one maintainable system.

Layers add an additional hinge point to typical object oriented design flexibility and have many possible uses. They make it easier to share your designs with declarative programmers: analysts, admins, designers without custom XML formats, style sheets, resource bundles, etc. and with much less programmer effort. You can interpret or compile layers as needed for deployment flexibility. Layers are a powerful organizational tool that can be exploited in many ways during framework development.

At the same time, it's important not to overuse them. Just a few, well designed layers that help break apart code by dependencies, role, workflow make sense.

With the demos we have so far, we are only showing a glimpse of the potential.