This link has been bookmarked by 94 people . It was first bookmarked on 16 Nov 2007, by Harjeet Singh.
-
28 Nov 12
-
16 Feb 12
-
23 May 11
-
30 Mar 11
-
07 Mar 11
-
02 Mar 11
-
Qi4j™ is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD
-
-
22 Dec 10
-
13 Dec 10
-
25 Oct 10
dartmedvedQi4j is the first Composite Oriented Programming implementation leveraging the Java 5 platform, so that everything you know from Java 5 still applies. You can mix Qi4j with your ordinary Java code as much as you want. All your existing Java tools works ju
aop architecture cop dependency-injection domain domaindrivendesign framework java jvm language mda model modeling opensource programming oop aspect composite ddd di oriented qi4j
-
21 Jun 10
-
07 May 10
-
22 Mar 10
-
15 Mar 10
Alexander Ainslie#Qi4j: "Composite Oriented Programming" & framework for "domain centric" application development http://bit.ly/Qi4j #Neo4j
-
19 Feb 10
-
08 Feb 10
gavino ang.
* Behavior depends on Context
* Decoupling is a virtue
* Business Rules matters more.
* Classes are dead, long live interfaces. -
10 Jan 10
-
27 Dec 09
-
22 Dec 09
ellecerQi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
ddd programming development framework opensource java composite
-
07 Sep 09
-
21 Aug 09
-
12 Aug 09
-
30 Jul 09
-
03 Jul 09
-
29 Jun 09
-
17 Jun 09
-
14 Jun 09
-
18 May 09
Christine FürstThe short answer is that Qi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
Qi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of a -
19 Apr 09
-
30 Mar 09
-
21 Mar 09
-
23 Feb 09
-
02 Feb 09
-
01 Dec 08
-
28 Nov 08
Jerry WongThe short answer is that Qi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
Qi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of -
27 Nov 08
-
24 Nov 08
nicolas 3Qi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
Qi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of any pre-processors or new language elements. Everything you know from Java 5 still applies and you can leverage both your experience and toolkits to become more productive with Composite Oriented Programming today. -
10 Nov 08
-
23 Oct 08
-
15 Oct 08
Rodolfo HansenQi for J(ava) Composition Oriented Programming (ie: what wicket does)
wicket jva qi4j patterns modeling java framework development software programming
-
18 Sep 08
-
14 Sep 08
-
10 Sep 08
-
The short answer is that Qi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
-
In the programming world, we are constantly faced with change of requirements. These changes are often not related to any real world changes, but people coming to new insights of the problem domain. OOP makes those changes a big deal, and often we have to tear up large chunks of the model and redo the work.
-
We think that one of the the main flaws in OOP is that it is not object oriented at all, but in fact class oriented.
-
mart developers often think that low-level, infrastructure and framework code is more important and more cool to work with, than the simple domain model.
-
If most developers could focus on the Business Rules and Domain Model, and not having to worry about any infrastructure issues, such as persistence, transactions, security or the framework housing it all, the productivity would surge
-
Qi4j is trying to address the flaws of OOP and introduce Composite Oriented Programming to the world, without introducing new programming languages, or awkward constructs. Heck, we don't even use any XML.
-
-
25 Aug 08
Pete McKinstryQi4j™ is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD.
Qi4j™ is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of any pre-processors or nql4j dependency injection ioc domain java framework ddd programming aop qi4j
-
21 Aug 08
-
19 Aug 08
-
15 Aug 08
-
08 Aug 08
-
08 Jul 08
Qi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of any pre-processors or new language elements. Everything you know from Java 5 still applies and you can leverage both your experience and to
aspect annotation contract programming scripting oriented domain framework java language
-
29 Apr 08
-
21 Apr 08
Krishna SilalahiQi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of any pre-processors or new language elements.
-
27 Mar 08
-
28 Feb 08
-
06 Feb 08
-
23 Jan 08
Karsten SchmidtVery much up my street: "Composite Oriented Programming builds on some principles that are not addressed by OOP at all: Behavior depends on Context, Decoupling is a virtue, Business Rules matters more, Classes are dead, long live interfaces."
java qi4j language design programming context aop framework delicious
-
10 Jan 08
-
07 Jan 08
-
18 Dec 07
-
27 Nov 07
Hendy IrawanThe short answer is that Qi4j is a framework for domain centric application development, including evolved concepts from AOP, DI and DDD. Qi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of
architecture complexity composite dev design development di domain opensource programming ddd modeling aop framework java spring osgi sca newton infiniflow for:wongacid for:febru for:ariekusumaatmaja for:tomfreakz qi4j
-
24 Nov 07
-
23 Nov 07
-
17 Nov 07
-
16 Nov 07
-
- Behavior depends on Context
- Decoupling is a virtue
- Business Rules matters more.
- Classes are dead, long live interfaces.
- An egg becomes a chicken which in turn becomes food.
- I am a programmer at work, a father+husband at home, a victim in a traffic accident and hunter and pray in the jungle.
Principles
Composite Oriented Programming builds on some principles that are not addressed by Object Oriented Programming at all.Behavior Depends on Context
Many objects has life cycles that are more extensive than the simple model that Object Oriented Programming model wants us to believe. A few simple examples;But it is more to it than that. The composition of the object may change over time. My home now has a garage and my car have different kind of problems with their own state related to it.
In the programming world, we are constantly faced with change of requirements. These changes are often not related to any real world changes, but people coming to new insights of the problem domain. OOP makes those changes a big deal, and often we have to tear up large chunks of the model and redo the work.But wait, there is more.
Some objects traverses different scope boundaries to the extreme. For instance, a Person will have its attributes changing slightly over time, new abilities be learnt and so forth, that is mentioned above. But the Person will eventually die, but that doesn't mean that the Person object should be deleted from a system, since the "memory of" that Person may live on for a long time. In a OOP system, we would need to transfer some of the state from a LivingPerson class to a DeadPerson class. In Composite Oriented Programming, it is the same object with different behavior.
We think that one of the the main flaws in OOP is that it is not object oriented at all, but in fact class oriented. Class is the first class citizen that objects are derived from. Not objects being the first-class citizen to which one or many classes are assigned.
Decoupling is Virtue
Decoupling is more important than developers in general think. If you could have every OOP class decoupled from all other classes, it is easy to re-use that class. But when that class references another class and the chain never ends, your chances of re-use diminishes quickly.
Object Oriented Programming is suffering a lot from this, and many mechanisms have been introduced over time to counter this problem. But in reality, the best we can manage is subsystems of functionality, which client code can re-use. And these subsystems tend to be infrastructure related, since domain models are less prone to be similar enough from one project to the next, and since OOP in reality constrains the the re-use of individual domain classes, we need to re-do the domain model from scratch ever time.Business Rules matters more
Smart developers often think that low-level, infrastructure and framework code is more important and more cool to work with, than the simple domain model. But in reality, it is the Domain Model that reflects the actual need and pays the bills. Infrastructure is just a necessary evil to get things done.If most developers could focus on the Business Rules and Domain Model, and not having to worry about any infrastructure issues, such as persistence, transactions, security or the framework housing it all, the productivity would surge. Eric Evans has written an excellent book about Domain Driven Design, where he goes through the real process that makes the money for companies. However, it is very hard to follow that book, since one is constantly caught up in constraints irrelevant to the domain model, introduced by the underlying framework, from the so called smart developers.
Classes are dead, Long live interfaces.
Qi4j is trying to address the flaws of OOP and introduce Composite Oriented Programming to the world, without introducing new programming languages, or awkward constructs. Heck, we don't even use any XML.
Qi4j is not a framework. It is a new way to write code. Other people might create frameworks using Qi4j, or create a framework optimized for Qi4j, but here at Qi4j we concentrate to make Qi4j behave well in existing frameworks, application servers, platforms and environments.You are to embark on a new journey. Enjoy!
-
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.