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

Grails vs Roo-为什么SpringSource推出两种非常相似的技术?,grails,spring-roo,Grails,Spring Roo,SpringSource(现在的VMWare)有两种非常相似的技术:Grails和SpringRoo。我一直在使用Grails,但我看到SpringSource正在积极开发一些与该技术竞争的产品,这让我担心Grails的未来 有人知道这些技术是如何联系在一起的吗?它们是要被合并,还是其中一项将被放弃 此外,Grails和Roo之间有什么重要的技术区别吗?主要区别在于Roo是一个纯Java框架,而Grails利用了Groovy和Java。两者都构建在核心Spring库之上,并利用流行的Java开源

SpringSource(现在的VMWare)有两种非常相似的技术:Grails和SpringRoo。我一直在使用Grails,但我看到SpringSource正在积极开发一些与该技术竞争的产品,这让我担心Grails的未来

有人知道这些技术是如何联系在一起的吗?它们是要被合并,还是其中一项将被放弃


此外,Grails和Roo之间有什么重要的技术区别吗?

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

这个问题是在Roo发布时被问到的,Graeme Rocher(Grails负责人)说这两个框架在Spring中都有一席之地,并且受到同等的支持


如果有什么不同的话,我认为Grails比Roo有更光明的未来。我喜欢使用它进行开发,并且不认为它有任何缺点,因为它不是纯Java。

在我看来,两者并不十分相似。尽管有相似之处,但以下是显著差异:

  • Roo使用“股票标准Java”, Grails基于Groovy
  • Grails是一个Web框架,Roo不是

Roo与Grails的命令行系统非常相似(例如,
create-app
create-domain-class
test-app
键入Grails中的命令)。如果看到Grails框架的这一部分与Roo之间出现一些“异花授粉”,我不会感到惊讶。

SpringSource的Ben Alex在中谈到了Roo,他被问及Grails与Roo的关系。除了使用不同的语言(Groovy和Java,正如其他人提到的)之外,主要的区别在于Roo主要是一个开发时工具,而Grails更多地涉及到运行时。

它们实际上并不那么相似。Roo在编译时发挥了神奇的作用,而Grails则在运行时发挥作用。因为Roo项目在运行时不会受到任何性能影响


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

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

的目标是使人们能够尽可能快速、轻松地构建、运行和管理基于Spring的解决方案。我们拥有这两种工具,因为我们非常关心开发人员的生产力,毫无疑问,这两种工具都极大地促进了团队在Spring上的成就

我们拥有这两种技术,因为Roo和Grails在哲学和实现层面上有很大的不同(正如其他回复中已经提到的)。每种技术都以“我们如何使用这种语言和操作模型组合使价值主张难以置信地好”的理念来接近其主要语言(Java或Groovy)和操作模型(开发时间或运行时)。因此,您将看到每种技术都采用了不同的风格,最大限度地实现了这种组合(Roo的Java+Dev时间或Grail的Groovy+Runtime)和相应的好处

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


我们最好的建议是考虑两种解决方案。每种技术都有各自的优点,但两者之间存在差异,这将使您在给定环境中使用一种或另一种技术时获得更好的总体体验。两个参考指南都详细介绍了。当然,请记住,在尝试这两种方法时,时间投入是最小的。在10分钟内,您可以用Roo或Grails构建一个项目,因此,请尝试一下,看看根据您的特定背景和项目需求,什么对您来说更自然。

我在Grails邮件列表上看到一些评论,这些评论表明作者认为Roo的存在只是Grails的一块垫脚石!然而,我个人正在考虑从Grails到Roo的转换。我认为动态类型语言和静态类型语言之间的主要区别——对我来说这是巨大的。我喜欢Grails的许多特性,但我更喜欢IDE支持和静态类型语言的编译时检查。另一些人的感觉正好相反,因此,马的路线。也就是说,静态groovy目前是unde