Grails vs Roo - 为什么SpringSource推出两种非常相似的技术?

时间:2010-01-05 07:56:20

标签: grails spring-roo

SpringSource(现在的VMWare)有两种非常相似的技术:Grails和Spring Roo。我一直在使用Grails,但我发现SpringSource正积极致力于该技术的竞争对手,这让我担心Grails的未来。

有谁知道这些技术是如何相关的,它们是否会被合并,或者其中一个会被放弃?

此外,Grails和Roo之间是否有任何重要的技术差异?

8 个答案:

答案 0 :(得分:88)

SpringSource的目标是让人们尽可能快速,轻松地构建,运行和管理基于Spring的解决方案。我们同时拥有GrailsSpring Roo因为我们非常关心开发人员的工作效率,毫无疑问,这两种工具都可以大大提升团队在Spring之上可以实现的目标。

我们有两种技术,因为Roo和Grails在哲学和实施层面上非常不同(正如其他回复中所述)。每种技术都采用其主要语言(Java或Groovy)和操作模型(开发时间或运行时),其理念是“我们如何使用这种语言和操作模型组合使价值主张变得令人难以置信?”。因此,您将看到每种技术采用不同的风格,最大化组合(Roo的Java + Dev-time或Grail的Groovy + Runtime)和相应的好处。

这些差异实际上是非常积极的,因为它们意味着Spring社区可以选择他们喜欢的生产力解决方案的“味道”。虽然语言选择和运行时/开发时间操作的这些初始差异立即显现,但Grails或Roo的选择也扩展到更微妙的考虑因素,例如使用的默认技术,用户交互模型,IDE支持,依赖关系,标准,路线图,几乎所有这些差异都是为特定语言风格寻求最佳解决方案的自然结果。

我们最好的建议是考虑两种解决方案。每个都有自己的甜点,但两者之间存在差异,这将使您在一个特定环境中使用一种技术或另一种技术改善您的整体体验。这两个参考指南都详细介绍了respective benefitseach solution。当然,请记住,尝试两者的时间投入最少。在10分钟内,您可以在Roo或Grails中构建项目,因此请根据您的具体背景和项目需求,尝试一下,看看哪种感觉更自然。

答案 1 :(得分:22)

主要区别在于Roo是一个纯Java框架,而Grails利用Groovy和Java。两者都建立在核心Spring库之上,并使用流行的Java开源库。

在Roo宣布时回答了这个问题,Graeme Rocher(Grails领导)说这两个框架在Spring中占有一席之地并得到同等支持。

如果有的话,我认为Grails比Roo有更光明的未来。我喜欢用它开发,并且不认为它不是纯粹的Java。

答案 2 :(得分:19)

Grails和Roo非常不同。第一个主要区别是使用的语言。虽然您可以编写像传统Java代码一样的Groovy代码,但仍需要Groovy依赖项来运行Grails应用程序。为了在Grails中尽可能高效,您还需要掌握Groovy中当前不属于Java的功能,例如Closures。另一个区别是框架生成代码所采用的理念。 Grails在运行时生成许多方法,而Roo在开发过程中根据请求生成它们。 Roo没有使用面向方面编程的幕后魔术接受,你可以查看Roo生成的所有代码。例如,在Roo中,您必须使用命令让它生成动态查找器方法(如findByBook()),然后查看.aj文件中生成的代码。在Grails中,findByBook()方法是在运行时创建的,您无法查看生成的代码。如果您通过将所有生成的代码合并到正常的.java文件中继续拥有正在运行的应用程序,则Roo还允许您停止使用框架。然后,您无法在运行时或设计时对任何Roo库进行依赖。如果您认为自己不喜欢Grails,那么在继续使用该应用程序时,无法停止使用该框架。

答案 3 :(得分:9)

IMO两者并不十分相似。即使有相似之处,以下是显着的差异:

  • Roo使用“Stock-Standard Java”, Grails基于Groovy
  • Grails是一个Web框架,Roo不是

Roo与Grails的命令行系统非常相似(例如Grails中的create-appcreate-domain-classtest-app类型命令。看到Grails框架的这部分与Roo之间存在一些“交叉授粉”,我不会感到惊讶。

答案 4 :(得分:4)

来自SpringSource的Ben Alex在this interview谈到了Roo,他被问及Grails vs Roo。除了使用不同的语言(Groovy vs Java,如其他人提到的)之外,主要区别在于Roo主要是一个开发时间工具,Grails更多地参与运行时。

答案 5 :(得分:1)

他们实际上并不那么相似。 Roo在编译时是神奇的,Grails在运行时就是这样。因为Roo项目在运行时没有采取任何性能命中。

我无法看到它们是如何合并的,因为Grails是基于Java上的Groovy和Roo构建的。

答案 6 :(得分:1)

我在Grails邮件列表上看到了一些评论,表明作者认为Roo仅作为Grails的踏脚石存在!不过,我个人正在考虑从Grails到Roo的可能转换。我认为主要区别在于动态和静态类型语言 - 对我来说这是巨大的。我喜欢Grails的许多功能,但我更喜欢IDE支持和静态类型语言的编译时检查。其他一些人则完全相反,因此马匹就是课程。也就是说,静态groovy目前正在大力发展,所以谁知道未来会怎样。

答案 7 :(得分:0)

我们有一个要求,我们在生产中有一个应用程序,并且是在Spring MVC中开发的,并且开发新功能的速度很慢。我们不得不探索像Grails和Roo这样的替代框架。我个人花了将近一个月的时间来探索哪一个更好。

如果您想查看分析的详细信息,请访问@ http://krishnasblog.com/2012/05/08/roo-vs-grails/

我们在这些以及下面探讨了以下特征是我们的发现。最终判决我们不确定我们将使用其中任何一个,我们仍在探索