Apache has released Apache Isis, a Java framework for rapidly developing domain-driven applications. Users focus on developing domain objects and Apache Isis takes care of persistence, security and the user interface. Apache Isis follows the hexagonal architecture pattern, placing the domain model in the middle, with presentation, persistence and other services dependent upon the domain model. Apache Isis became an Apache top-level project in October 2012 and version 1.0 was released on December 2012.
Apache Isis works using convention-over-configuration where developers write POJO domain objects following a set of conventions and annotations. These are then interpreted by the Isis framework, which then takes care of presentation, security and persistence. Apache Isis can generate a representation of the domain model, at runtime, as a web application or as a RESTful API following the Restful Objects specification. Development teams can use the auto generated web application and web service for rapid prototyping or even production deployments.
Apache Isis Architecture
Apache Isis is extensible and customizable. Development teams have the option of picking different viewers, object stores, security mechanisms, profile stores, and programming models. Available viewers include Wicket, RestfulObjects, Scimpi, DnD, HTML, JUnit and BDD Concordion. Available object stores include JDO, NoSQL, SQL and XML. Security can be implemented using File, Shiro, LDAP or SQL. Profiles can be stored as XML or in the database. Domain objects, normally written in Java, can also be written in Groovy, using the Groovy Programming Model component. Isis version 1.0 comes with released versions of Isis core, File-based security, JDO object store, Wicket viewer and Restful Objects viewer. Other components are still under incubation.
To get started, visit the Apache Isis Quickstart Archetype page, which walks you through creating a new Isis application using the Isis Maven archetype. This will generate a simple one-class domain model for tracking to-do items. It will consist of multiple Maven POM files, one for the parent POM, one for the domain object model, and the rest for the different components like the JDO object store and Wicket viewer. Isis also has a CheatSheet available, to help you recall what conventions to follow or annotations to use.
For more information, visit the official Apache Isis documentation, screencasts, demo and tutorial. Source code is available from the Isis Apache repository, which is also mirrored on GitHub.
Community comments
Java on Isis .. :)
by Nurali Virani,
Re: Java on Isis .. :)
by Mark N,
Re: Java on Isis .. :)
by Dan Haywood,
Compared with other model-driven framework?
by Javier Paniza,
Nice CRUD tool
by Sławomir Sobótka,
Re: Nice CRUD tool
by Javier Paniza,
Isis has no (or at least has dropped) JPA-support
by Cor Takken,
Re: Isis has no (or at least has dropped) JPA-support
by Dan Haywood,
domain-driven applications
by prathap gym,
Java on Isis .. :)
by Nurali Virani,
Your message is awaiting moderation. Thank you for participating in the discussion.
It looks like what Ruby on Rails .. Java on Isis .. :)
Also have a look for similar stuff from JBoss .. JavaEE on Forge. (forge.jboss.org/)
Re: Java on Isis .. :)
by Mark N,
Your message is awaiting moderation. Thank you for participating in the discussion.
It is not in that RoR is generated from a DB schema whereas Apache Isis is Domain [Entity] Driven. Apache Isis part of the Naked Objects concept which has been around as long, if not longer, than RoR.
Fyi, there is a .NET version of this but it is not OpenSource.
Re: Java on Isis .. :)
by Dan Haywood,
Your message is awaiting moderation. Thank you for participating in the discussion.
Indeed, NO predates RoR. As you are right to point out the distinction that Isis is domain-driven in that we start at the domain, rather than reverse engineering a database.
A correction though: the .NET version is also open source (though is not part of Apache).
Compared with other model-driven framework?
by Javier Paniza,
Your message is awaiting moderation. Thank you for participating in the discussion.
How can be Isis compared with other model-driven frameworks such as Tynamo, RomaFramework or OpenXava?
Nice CRUD tool
by Sławomir Sobótka,
Your message is awaiting moderation. Thank you for participating in the discussion.
but actually promotes all DDD antipatters and does not support basic DDD techniques:/
Object Orientation also bleeds:P
But still nice tool that solves some class of problems (but not problems that are aimed by DDD).
I guess that main reason for that is "Naked-Objects mindset" - which claims to support DDD, but it's actually the opposite...
Reading www.amazon.com/Domain-Driven-Design-Tackling-Co... *three* times should help...
Re: Nice CRUD tool
by Javier Paniza,
Your message is awaiting moderation. Thank you for participating in the discussion.
So what?
What's the real goal when you write software? Applying patterns?
Isis has no (or at least has dropped) JPA-support
by Cor Takken,
Your message is awaiting moderation. Thank you for participating in the discussion.
Apparently due to incompatibility of licences (between Hibernate and Apache licences), the Isis project has dropped support for JPA. I have seen some comments on supporting JPA using OpenJPA but I have yet to see the support for JPA in Isis.
For me personally this is a bit of a bummer, since I have no JDO knowledge and I hesitate going over to plain old JDBC for persistency.
Is there anyone out there who knows whether and if yes when JPA will be supported in Isis again?
Re: Isis has no (or at least has dropped) JPA-support
by Dan Haywood,
Your message is awaiting moderation. Thank you for participating in the discussion.
You are right that we had planned to implement JPA support using Apache OpenJPA, but we decided to go with JDO/DataNucleus because it's arguably a better API, and it certainly is more extensible in its support for both non-RDBMS as well as RDBMS datastores.
If you are familiar with JPA, I don't think you'll have any problems with using JDO. The biggest downside is that there's somewhat less material out there on the internet to help out.
Incidentally, DataNucleus does also support JPA, so in theory adding support for JPA should be relatively easy. It might even "just work" if you add JPA annotations instead of JDO ones; I dunno, I haven't tried.
For more info, see [1] and [2]
[1] www.datanucleus.org/products/accessplatform/per...
[2] db.apache.org/jdo/jdo_v_jpa.html
domain-driven applications
by prathap gym,
Your message is awaiting moderation. Thank you for participating in the discussion.
domain-driven applications is very important for enterprise wise development
Online Java Training