答案 0 :(得分:33)
这些工具的相似之处在于它们都是帮助设置和配置项目的命令行工具,并且都具有生成代码的能力。 但是有一些主要的设计差异:
1)Forge旨在用于任何类型的Maven项目。 Roo与Spring紧密相关。因为Forge更通用,所以您可以为项目中使用的任何技术找到或编写插件。对于Roo来说也是如此,但只有Spring之上的技术才是如此。你可以说Forge是一个(更多)通用框架,用于构建适用于Maven项目的插件,而Roo(只是)一个Spring工具。
2)Roo也是一个编程框架,不仅仅是一个工具。代码生成大量使用AspectJ来使代码生成对程序员几乎不可见,并且提供仅在基于动态语言的框架中发现的特征(例如,对实体的动态查找器方法)。这可能是好事也可能是坏事。这很好,因为它没有“看到”生成的代码,因为它功能强大且更优雅。不好的一点是,它给了Roo一个巨大的锁定。这在技术上并不正确,因为它只是“简单”的AspectJ,但它远不是普通的Java / Spring代码。 AspectJ在所有IDE中都不能很好地工作(Eclipse和IntelliJ都很好)。由于这种编程模型,我永远不会使用Roo。如果我想要一个具有动态语言功能的框架,我使用Grails,而不是那里的东西。当然这只是我个人的意见。
Forge中的代码生成更像传统类型,具有所有缺陷,但您永远不会锁定任何非标准的东西。内置代码生成基于普通Java EE 6。