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


74

SpringSource(现为VMWare)具有两种非常相似的技术:Grails和Spring Roo。我一直在使用Grails,但是我看到SpringSource正在积极致力于这项技术的竞争者,这让我担心Grails的未来。

有谁知道这些技术之间的关系,是要合并这些技术,还是将其中一种技术抛弃?

此外,Grails和Roo之间是否有重要的技术区别?

Answers:


88

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

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

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

我们最好的建议是同时考虑这两种解决方案。每种都有其优点,但是两者之间存在差异,这将使您在给定的背景下使用一种或多种技术能获得更好的总体体验。两个参考指南详细各自优点各溶液。当然,请记住,花时间进行最少的尝试是最少的。在10分钟内,您可以在Roo或Grails中构建一个项目,因此请尝试一下,看看在您的特定背景和项目需求下您觉得更自然的事情。


1
非常感谢您的深入回答!
PiotrKochański,2010年

3
10分钟?我花了将近10个小时来获取1.1.1 GAE和GWT支出示例进行编译(更不用说工作了)。究竟引入了哪些GAE数据存储增强功能?如何使用它们?我感到困惑,真的开始质疑SpringSource的质量检查流程...添加一个对所有roo样本进行roo --script + mvn构建的JUnit才是真正值得投资的10分钟;)
Eran Medan

叶兰,不知道哪里出了问题你,但我们确实在运行连续CI roobuild.springsource.org即完成集成测试的样本,包括旋转起来Web服务器,以确保结果的应用等工作
奔亚历克斯

3
如果不是使用“ Best-of-Breed”一词,这个答案将是很好的-我讨厌流行语!
mjaggard 2011年

Roo样本永远无法正常工作,首页开始者的事情是垃圾。如果在设置Web gwt之后执行所有web gwt的工作--proxyPackage com.foo.client.request --requestPackage com.foo.client.request,那么它将与GWT一起使用,但不适用于Tomcat :)
Rob Grant

22

主要区别在于Roo是纯Java框架,而Grails既使用Groovy也使用Java。两者都是基于核心Spring库构建的,并利用了流行的Java开源库。

当Roo宣布时,这个问题又被问到了。GraemeRocher(Grails领导)说,这两个框架在Spring中都占有一席之地,并且受到同等支持。

如果有的话,我认为Grails比Roo的前途光明。我喜欢用它进行开发,并且不认为它不是纯Java有任何缺点。


感谢您的回答,本·亚历克斯(Ben Alex)的回答确认了您所写的内容,并提供了有关Grails vs. Roo问题的SpringSource视图的更多详细信息。
PiotrKochański2010年

19

Grails和Roo有很大的不同。第一个主要区别是所使用的语言。尽管您可以像传统的Java代码一样编写Groovy代码,但仍然需要Groovy依赖项才能运行Grails应用程序。为了在Grails中尽可能地提高生产力,您还需要掌握Groovy中当前不属于Java的功能,例如Closures。另一个区别是框架用于生成代码的理念。Grails在运行时会生成许多方法,而Roo在开发过程中会根据要求生成它们。Roo对于面向方面的编程的使用并没有魔力的支持,并且您可以查看Roo生成的所有代码。例如,在Roo中,您必须使用命令使它生成动态查找程序方法(例如findByBook()),然后在.aj文件中查看生成的代码。在Grails中,findByBook()方法是在运行时创建的,您无法查看生成的代码。Roo还允许您在继续运行应用程序的情况下选择停止使用该框架,方法是将所有生成的代码合并到正常的.java文件中。这样,您在运行时或设计时就不会依赖任何Roo库。如果您决定不喜欢Grails,那么在继续拥有正常运行的应用程序的同时,就无法停止使用该框架。


9

IMO两者不是很相似。即使存在相似之处,也存在以下明显差异:

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

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


4

来自SpringSource的Ben Alex在这次采访中谈到了Roo,并向他询问了Grails vs Roo。除了使用不同的语言(其他提到的是Groovy vs Java)以外,主要区别在于Roo主要是开发时间工具,而Grails更多地参与运行时。


1

它们实际上并不相似。Roo在编译时做魔术,而Grails在运行时做魔术。因此,Roo项目在运行时不会对性能造成任何影响。

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


1

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


0

我们有一个需要在生产中应用的需求,并在Spring MVC中进行了开发,并且开发新功能的速度很慢。我们必须探索诸如Grails和Roo之类的替代框架。我个人花了将近一个月的时间来探索哪个更好。

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

我们探索了以下这些功能,下面是我们的发现。我们不确定我们是否会使用其中任何一项的最终裁决,我们仍在探索中


1
抱歉,Alex,我已修复链接,请查看以让我知道。谢谢
克里希纳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.