So far, the software we have made available has mostly enabled people to play with the CAL language and tools. We have not yet made available the full Java SDKs that allow the Quark Framework and arbitrary functional logic to be embedded in regular Java apps. Our tools have a way to generate JAR's, but to generate entry points to logic therein requires the SDK.
The next release, therefore, will open the Java SDK, which will allow:
- Simple evaluation of functional logic included in CAL files or JARs.
- Dynamic discovery of functions by type (such as "What are all the functions that take an Int and return a String?").
- Advanced evaluation concepts, such as extracting parts of a result at a time, with the ability to restart a suspension to get more results.
- Applying and querying for metadata. Includes enumeration of Gems with particular metadata set, or extracting properties set on a specific Gem (again, useful in dynamic programming where such properties might be menu text, usage descriptions, default argument values etc.)
- Construction of new Gems on-the-fly using a high-level composition API (a programmatic equivalent of using the Gem Cutter)
- Construction of new Gems and other entities using a lower-level 'source model' API (a programmatic equivalent of using the CAL language)
- Setting locally constant properties into an ExecutionContext, so that Gems running in that environment can directly access this state.
- Sharing ExecutionContexts or keeping separate environments depending on the threading strategies in the Java code.
- Registering objects for clean-up automatically when the functional environment is disposed
- Creating and disposing of transient modules, for Java code to maintain scratch areas for temporary compositions used as abstract building blocks or specific single-shot transformations.
While the Quark Framework has at its core a serious and general purpose functional language, the Java integration is the whole purpose of its existence and the motivation for Business Objects to create this technology.
Watch this space for more news...