Kuala Lumpur, 15 April 2011 - The Qi4j community today announced Release 1.3 of the innovative Java framework, Qi4j. This release is significant for several customers, moving to deploy Qi4j in business critical 24/7 systems. “We now feel that the core features of Qi4j are as stable as software systems ever get. Qi4j is now being deployed at a major investment bank in the risk pricing domain.”, said Niclas Hedhman, co-inventor of Qi4j together with Rickard Öberg, who added “Qi4j has really proved itself in StreamFlow, and I am convinced that many of our paradigms will stand the test of time.”
This release sports many new features, such as Solr Indexing, JMX integration, Circuit-breaker library, innovative API for dealing with I/O, functional paradigms and much more, but an important focus was to stabilize the many libraries and extensions.
The main new features are listed below. The community now sets its eyes ahead towards the next release(s), which will include an industrial automation alarm system, JMX aggregation for the cloud, Entity Viewers via the Rest API and a whole lot more documentation and test coverage. We all look forward to this and many other things to come from Qi4j, the most exciting, technology challenging project in the Open Source Java world.
Rickard Öberg is once again inventing new ways to do common things. The I/O API correctly separates the concerns of reading, writing, exception handling, transformation and filtering. This resulted in a DSL like way of writing stream handling code. The I/O API is completely independent of everything in Qi4j and may be used separately. We may release it as a separate artifact in the future.
By addding a single line of code, you will get the application structure represented in your JMX “tree view”. Starting with a “Qi4j” node, under which each Qi4j Application is listed, followed by Layers, Modules and the Composites. All Services' configuration instances are exposed and can be changed via JMX, as can services be stopped, started and restarted.
All of Qi4j is now OSGi-compliant. That means that all jars are OSGi bundles, with imports and exports. On top of that, this release also contains the beginning of a OSGi-specific library, which allows Qi4j Services to be exported as OSGi services and vice versa. This library is still in beta.
The CircuitBreaker library allows external resources to be monitored for health and taken offline when facing trouble. This is also signalled via JMX for human intervention.
To allow free-text searches of content in entities, Qi4j now has integrated Solr via the Qi4j Indexing/Query extension mechanism. It is not possible to do generic queries via this extension, but it leveraging the Named Query feature. Free-text search enable your data in existing entitystores by using the Reindexer extension.
The UnitOfWorkConcern now handles an optional UnitOfWorkRetry annotation, allowing full re-runs of work. Literally a single annotation allows developers to add retry logic (or remove the complex retry logic already in place).
The JSON serializer/deserializer has been equipped to handle Maps, by named properties instead of a java serialized map as was preveiously the case. The new deserializer logic is still compatible with the old format.
A new library, org.qi4j.library.scheduler, can now launch jobs according to CRON formatted schedules.
The ModuleAssembly system has been revised heavily, to allow different parts of the application to apply assembly information to composites. This allows for near functional programming style of setting up composites.
Qi4j is innovating again, with a utility to do functional programming style in Java for Iterables. In this first release, the utility only contains the most basic operations, but will be extended over time.
New Features
Improvements
Bug
Task