2012-02-07 31 views

回答

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.

  • 聲明。我是Forge撰稿人,可能會有偏差;-)