Apache Isis: Java Framework for Domain-Driven Design

| by Bienvenido David on Jan 17, 2013. Estimated reading time: 1 minute |

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

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.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Java on Isis .. :) by Nurali Virani

It looks like what Ruby on Rails .. Java on Isis .. :)
Also have a look for similar stuff from JBoss .. JavaEE on Forge. (

Re: Java on Isis .. :) by Mark N

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

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

How can be Isis compared with other model-driven frameworks such as Tynamo, RomaFramework or OpenXava?

Nice CRUD tool by Sławomir Sobótka

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 *three* times should help...

Re: Nice CRUD tool by Javier Paniza

but actually promotes all DDD antipatters and does not support basic DDD techniques

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

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

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]


domain-driven applications by prathap gym

domain-driven applications is very important for enterprise wise development

Online Java Training

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

9 Discuss