InfoQ

News

Qi4j introduces Composite Oriented Programming

Posted by Rob Thornton on Nov 16, 2007 01:05 PM

Community
Java
Topics
Object Oriented Design,
Artifacts & Tools,
Announcements
Tags
Qi4j
"Classes are dead, long live interfaces" was declared by Rickard Oberg at Oredev this week where he announced Qi4j. Qi4j brings the new idea of Composite Oriented Programing, in which is no behaviour at all is put in a class, instead the class becomes a 'composite' of mixins and interfaces declared on the class via annotations.

Qi4j itself is a Java framework built to make Composite Oriented Programming available to all Java developers. While Composite Oriented Programming will require a large mind-shift, it does not require separate tools, language, or XML. Qi4j applications will be able to run inside a Spring application, a web application container, OSGi, and elsewhere. Qi4j makes heavy use of annotations to push the knowledge of framework specifics away and bring developers closer to the business rules. Rickard Öberg and Niclas Hedhman, the founders of the project, describe it in a press release as:

"Qi4j is a framework for domain centric application development, including evolved concepts from Aspect Oriented Programming, Dependency Injection and Domain-Driven Design, leveraging the Java 5 platform and eco-system", says Niclas Hedhman a long-term Java framework developer and now active Apache member.

"I need a system that puts the domain model and business rules back in focus, allowing clear communication between domain experts and developers.", says Rickard Öberg, the former JBoss, Webwork and XDoclet founder.

As this is only the initial revealing of the framework and paradigm, documentation and examples are still sparse. However, the goal of Composite Oriented Programming is to switch from thinking about objects to thinking about composites. Composites are composed of re-useable fragments. Fragments are the building blocks of Qi4j. They carry the state of composites (in mixins), validate and constrain the usage of them (in constraints), handle cross-cutting concerns (in concerns) and provide notifications, cache and undo management, and other asynchronous needs (in side effects). The switch of programming paradigms is not an easy one. Oberg describes the reactions to Composite Oriented Programming as:

The pattern I have seen very consistently is two reactions: a headache from the brain frantically trying to unlearn the bad ideas from everything they previously did, and a smile from understanding the potential of what we are suggesting

Qi4j is still very new and unstable. At this point they are working on stabilizing the framework and trying to get the ideas of Composite Oriented Programming developed and presented to the community. They admit that they are not quite ready for people to dive in to the framework, and suggest people focus on understanding the concepts for the next couple months.

4 comments

Reply

New Energy for Java by Rickard Öberg Posted Nov 17, 2007 6:10 AM
Re: New Energy for Java by Shawn Q Posted Nov 19, 2007 3:12 AM
Re: New Energy for Java by Rickard Öberg Posted Nov 19, 2007 6:46 AM
Re: New Energy for Java by Joubin Houshyar Posted Jan 7, 2008 2:18 PM
  1. Back to top

    New Energy for Java

    Nov 17, 2007 6:10 AM by Rickard Öberg

    I've posted some thoughts on this on my (reopened and renamed) blog: http://www.jroller.com/rickard/entry/reloaded_the_continuing_adventures_of Much more to do, but as pointed out above and on the mailing list, what we are mostly interested in at this point is to attract others who want to significantly improve the current state of application development. We want thinkers, not coders. We estimate that it will not be ready for use in production until some time later next year. But things are progressing at a furious rate, more than even I had anticipated myself, so it's difficult to make any useful time estimates.

  2. Back to top

    Re: New Energy for Java

    Nov 19, 2007 3:12 AM by Shawn Q

    Cool! Is this the evolution of your extreme AOP idea ?

  3. Back to top

    Re: New Energy for Java

    Nov 19, 2007 6:46 AM by Rickard Öberg

    Yes, and then some :-)

  4. Back to top

    Re: New Energy for Java

    Jan 7, 2008 2:18 PM by Joubin Houshyar

    Hi Rickard, 1 - Review the VS C# component model. The use of ISite is an improvement over BeanContext. 2 - Review Simonyi. [http://www.intentsoft.com/] 3 - It is not clear why you distinguish between Components and 'fragments'. Please elaborate. The key to this holy grail is Semantic Adaptation. Contextual composition is (clearly) important, but it will not solve the problem. Think illiterates assembling Laptops. /Regards "J"

Exclusive Content

10 Ways to Screw Up with Scrum and XP

Henrik Kniberg talks about 10 possible reasons to fail while doing Scrum and XP. Maybe the team does not have a definition of what Done means to them, or they don't know what their velocity is.

Tips from a Top Sports Team Coach

This article outlines 9 principles Marc Lammers discovered while building the world’s best field hockey team, mapping them to software development practices.

SOA Governance: An Enterprise View

Michael Poulin explains the necessity for SOA governance to ensure an Enterprise SOA's success, relying on concepts from the OASIS SOA Reference Model and Reference Architecture.

Developing Portlets using JSF, Ajax, and Seam (Part 2 of 3)

This article covers setting up a RichFaces portlet using JBoss Portlet Container and JBoss Portlet Bridge, deploying a RichFaces portlet, and RichFaces capabilities.

Scalability Worst Practices

This article discusses scalability worst pratices including The Golden Hammer, Resource Abuse, Big Ball of Mud, Dependency Management, Timeouts, Hero Pattern, Not Automating, and Monitoring.

Do the Hustle

Obie Fernandez shares his experience selling consulting services for both Thoughtworks and Hashrocket and give tips how Ruby developers can work with clients.

Natural Laws of Software Development - Deriving Agile Practices

Jeffries and Hendrickson derive Agile practices from the natural laws of software development. They don't just say "Be Agile!", but they explain why Agile practices make perfect sense.

Jinesh Varia About Amazon Alexa Web Service's Architecture

Jinesh Varia talks about the architecture of one of Amazon's web services called Alexa. Jinesh explains how Amazon has reached scalability, performance and reduced costs for the Alexa service.