1

I'm currently evaluating QI4J, as it provides interesting concepts regarding properties handling, in the context of an application connecting some ontologies together to create a partially semantic application.

As a consequence, I would like to find some alternatives regarding properties handling, composition, and integration in Java EE environment.

eskatos
  • 4,174
  • 2
  • 40
  • 42
Riduidel
  • 22,052
  • 14
  • 85
  • 185
  • 1
    Look at **[this answer](http://stackoverflow.com/questions/2287624/java-multiple-class-compositing-and-boiler-plate-reduction/2287732#2287732)** – lschin May 20 '11 at 07:51

3 Answers3

2

The most obvious similar thing to Qi4j, I think, is Scala. However, it is a new language and all the good and bad things that comes with that.

For Qi4j, we are aiming for strong Scala support, so that for instance Scala traits can be used in Qi4j composites.

1

According to Ohloh page of QI4J, possible alternatives are

Riduidel
  • 22,052
  • 14
  • 85
  • 185
  • 2
    Qi4j provide both Composite Oriented Programming (using Mixins) **and** a DDD oriented framework. Indriagen is a dead project. javATE provides a DDD oriented full stack but without COP. learn-ddd is only a sample DDD oriented application. zipper-framework provides only configuration and service locators in a DDD oriented way, its development seems to be staled. – eskatos Sep 06 '12 at 12:11
0

I think you can do most of what Qi4j does (and way way more) with AspectJ ITDs (the language not the @AspectJ Java alternative).

Jordao mentions it in his answer to the similar post mentiond by @Ischin.

Here is an example of trait-like functionality I mentioned in another post: https://stackoverflow.com/a/7403617/318174 . Just by adding an interface to a class you can magically add methods.

Community
  • 1
  • 1
Adam Gent
  • 47,843
  • 23
  • 153
  • 203
  • Sure but keep in mind that AspectJ force you to use their toolchain and that you can't use it with plain JDK. It means that you'll need to tweak your build and use a AspectJ enabled IDE. Once compiled of course AspectJ based code works on any JRE. Qi4j do not have this downside. – eskatos Sep 10 '12 at 09:41
  • Qi4J in my mind has way more downsides in that your tightly coupled to a library. Such is not the case with AspectJ and will work great with any framework like Spring or JPA. Also with AspectJ you can now refactor with either eclipse (or I think Maven) to do the code weave inline. That is you can actually tell AspectJ to modify your code. ie you can remove the AspectJ dependency if you want to in the future. AspectJ is also agnostic of your architecture methodology (whether its plain OOP or Component oriented, Functiona (separation of behavior and state)). Qi4j is not. – Adam Gent Sep 10 '12 at 10:38
  • You can write Qi4j agnostic code and use Qi4j assembly code to compose it. Moreover, Qi4j provides more than just composites and AOP constructs: a DDD oriented framework, libraries, extensions and dev tools. Composite Oriented Programming is at Qi4j's heart but its scope goes beyond that. – eskatos Sep 10 '12 at 11:42
  • Nothing stops you to use only qi4j-core alongside anything you're already using or choose to use more from the SDK. Obviously, the more you use, the more your software depend on Qi4j to run but it's about the same with all frameworks, libraries or tools. BTW, AspectJ is awesome and has greatly inspired Qi4j. Vendor lock-in is an interesting question, if you have suggestions about this pop on the Qi4j mailing list. – eskatos Sep 10 '12 at 11:42