Tuesday, February 26, 2013
About Apache Isis
It has been a long time since my last blog post, as I have been very busy with many projects and if I did not stop writing my blog post at home, late at night, my wife would be very disappointed.
In October 2012 the Apache Isis framework has been graduated from the Apache incubator. For those who have never heard about it, Isis is a framework for developing applications in Java using domain-driven-design, an approach that focuses on the core business domain.
Do you remember when you spent hours designing the *perfect* domain object model? Your UML diagrams look complex to the business people and your deep and insightful model does not fit with the powerful features of the target framework.
Instead of sharing technical diagrams, Isis allows to automatically render the domain classes in a working prototype with an object-oriented user interface. Users and business experts can see the business entities, their relationships and business operations using the automatically generated user interface.
Changes to the domain model are immediately visible on the running prototype giving the opportunity to developers and business experts to work together on the domain model exploring different solutions and new ideas. At the end of the exploration, if required, a more sophisticated custom user interface providing an optimal user experience can be built on top of the domain model.
Isis is also interesting from a technical point of view. The dominant idea behind most significant frameworks, irrespective of the target language, is the model-view-controller pattern. Each framework offers one (or more) way to define how the model, the view and the controller interacts.
Scaffolding, code generation, meta-programming allow to create automatically simple CRUD interface but more complex operations must be implemented with custom code on the controller.
One of the most interesting features of the Isis framework is its deliberate lack of a controller layer making all the defined business operations automatically available to the user interface.
The Isis framework is componentized with, in particular, an object-store component providing the persistence of domain objects with different data storage options (most notably JDO/DataNucleus) and a security component for authentication (most notably Apache Shiro). Its programming model conventions can also be extended or customized as required.
In order to explore in deep the potential offered by Isis, and with the objective to adopt it in future development, we have start working on a dhtmlx-isis-viewer based on the DHTMLX component library. The very first basic prototype is almost complete, we will announce officially the release of the project as soon as it is ready.
In the meantime, we want to thank Dan Haywood, the PMC chair of Apache Isis and one of its most active committers for his help in answering all our questions.