From the post:
After nearly 2 years of hard work, the Qi4j Community today launched its second generation Composite Oriented Programming framework.
Qi4j is Composite Oriented Programming for the Java platform. It is a top-down approach to write business applications in a maintainable and efficient manner. Qi4j let you focus on the business domain, removing most impedance mismatches in software development, such as object-relation mapping, overlapping concerns and testability.
Qi4j’s main areas of excellence are its enforcement of application layering and modularization, the typed and generic AOP approach, affinity based dependency injection, persistence management, indexing and query subsystems, but there are much more.
The 2.0 release is practically a re-write of the entire runtime, according to co-founder Niclas Hedhman; “Although we are breaking compatibility in many select areas, most 1.4 applications can be converted with relatively few changes.”. He continues; “These changes are necessary for the next set of planned features, including full Scala integration, the upcoming JDK8 and Event Sourcing integrated into the persistence model.”
“It has been a bumpy ride to get this release out the door.”, said Paul Merlin, the 2.0 Release Manager, “but we are determined that Qi4j represents the best technological platform for Java to create applications with high business value.” Not only has the community re-crafted a remarkable codebase, but also created a brand new website, fully integrated with the new Gradle build process.
See: http://qi4j.org and http://qi4j.org/2.0/.
Principles of Composite Oriented Programming:
- Behavior depends on Context
- Decoupling is a virtue
- Business Rules matters more
- Classes are dead, long live interfaces
“Behavior depends on Context” sounds a lot like identity depends on context, either of what the object represents or a user.
Does your application capture context for data or its users? If so, what does it do with that information?
Speak of the devil,… I just mentioned Peter Neubauer in a prior post, then I see his tweet on Qi4j. 😉