InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Qi4j introduces Composite Oriented Programming

Posted by Rob Thornton on Nov 16, 2007

Sections
Enterprise Architecture,
Operations & Infrastructure,
Process & Practices,
Architecture & Design,
Development
Topics
Object Oriented Design ,
Announcements ,
Java ,
Artifacts & Tools
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.

New Energy for Java by Rickard Öberg Posted
Re: New Energy for Java by Q Shawn Posted
Re: New Energy for Java by Rickard Öberg Posted
Re: New Energy for Java by Joubin Houshyar Posted
  1. Back to top

    New Energy for Java

    by Rickard Öberg

    I've posted some thoughts on this on my (reopened and renamed) blog:
    www.jroller.com/rickard/entry/reloaded_the_cont...

    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

    by Q Shawn

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

  3. Back to top

    Re: New Energy for Java

    by Rickard Öberg

    Yes, and then some :-)

  4. Back to top

    Re: New Energy for Java

    by Joubin Houshyar

    Hi Rickard,

    1 - Review the VS C# component model. The use of ISite is an improvement over BeanContext.
    2 - Review Simonyi. [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"

Educational Content

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.