2011-05-20 114 views
1

我目前正在评估QI4J,因为它提供了关于属性处理的有趣概念,在应用程序将某些本体连接在一起以创建部分语义应用程序的上下文中。QI4J替代品

因此,我想找到一些关于Java EE环境中的属性处理,组合和集成的替代方法。

+1

看看** [这个答案](http://stackoverflow.com/questions/2287624/java-multiple-class-compositing-and-boiler-plate-reduction/2287732#2287732)** – lschin 2011-05-20 07:51:08

回答

1
+2

Qi4j同时提供面向复合的编程(使用Mixins)**和**面向DDD的框架。 Indriagen是一个死的项目。 javate提供了一个面向DDD的完整堆栈,但没有COP。 learn-ddd只是一个面向DDD的示例应用程序。拉链框架仅以面向DDD的方式提供配置和服务定位器,其发展似乎已经展开。 – eskatos 2012-09-06 12:11:38

2

最明显的类似的事情Qi4j,我想,是斯卡拉。然而,这是一种新的语言,伴随着所有的好事和坏事。对于Qi4j,我们的目标是提供强大的Scala支持,例如Scala特征可用于Qi4j复合材料。

0

我认为你可以使用AspectJ ITD(语言不是@AspectJ Java选择)来完成大部分Qi4j的工作(并且更方便)。

Jordao mentions it in his answer to the similar post提到@Ischin

下面是我在另一篇文章中提到的特征类功能的示例:https://stackoverflow.com/a/7403617/318174。只需添加一个接口到一个类,你可以奇迹般地添加方法。

+0

当然,但请记住,AspectJ强迫你使用他们的工具链,并且你不能用普通的JDK来使用它。这意味着您需要调整构建并使用支持AspectJ的IDE。一旦编译完成,基于AspectJ的代码就可以在任何JRE上运行。 Qi4j没有这个缺点。 – eskatos 2012-09-10 09:41:43

+0

在我看来,Qi4J有更多的缺点,因为你和图书馆紧密相连。 AspectJ并非如此,并且可以很好地处理Spring或JPA等任何框架。此外,使用AspectJ,您现在可以重构eclipse(或者我认为Maven)来进行内联代码编织。那就是你可以告诉AspectJ修改你的代码。也就是说,如果您希望将来可以删除AspectJ依赖项。 AspectJ对您的体系结构方法论(不论其明确的面向对象或面向组件,功能(行为和状态的分离))都是不可知的。 Qi4j不是。 – 2012-09-10 10:38:32

+0

您可以编写Qi4j不可知的代码并使用Qi4j汇编代码编写它。此外,Qi4j提供的不仅仅是组合和AOP构造:面向DDD的框架,库,扩展和开发工具。面向复合的编程是Qi4j的核心,但它的范围超出了这个范围。 – eskatos 2012-09-10 11:42:06