Grails vs Roo – 为什么SpringSource推出了两个非常相似的技术?

SpringSource(现在的VMWare)有两个非常相似的技术:Grails和Spring Roo。 我一直在使用Grails,但是我发现SpringSource正在积极研究那些技术的竞争对手,这让我担心Grails的未来。

有谁知道这些技术是如何相互关联的,他们会被合并,还是其中一个会被抛弃?

另外,Grails和Roo有什么重要的技术差异?

SpringSource的目标是尽可能快速,简单地构build,运行和pipe理基于Spring的解决scheme。 我们同时拥有Grails和Spring Roo,因为我们非常关心开发人员的生产力,毫无疑问,这两种工具都能够大大提高团队在Spring之上的实力。

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

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

我们最好的build议是考虑这两个解决scheme。 每个人都有他们的甜蜜点,但两者之间有所不同,这将使您的整体体验更好,在一个给定的情况下,与一种技术或其他。 这两个参考指南详细介绍了每个解决scheme的各自优点 当然,请记住,尝试两者的时间投资是最小的。 在10分钟内,你可以在Roo或Grails中build立一个项目,所以给他们一个尝试,看看你对于你具体的背景和项目需求更自然。

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

当Roo被宣布时,这个问题被提出来了,Graeme Rocher(Grails领导)说,这两个框架在Spring中都有一席之地,同样受到支持。

如果有的话,我认为Grails比Roo拥有更光明的未来。 我喜欢用它开发,并没有看到它不是纯粹的Java的任何缺点。

Grails和Roo是非常不同的。 第一个主要区别是使用的语言。 虽然您可以像传统Java代码一样编写Groovy代码,但您仍然需要Groovy依赖项来运行Grails应用程序。 为了在Grails中尽可能提高生产力,您还需要掌握Groovy中目前不属于Java的部分(如闭包)的特性。 另一个区别是框架生成代码的哲学。 Grails在运行时会生成很多方法,而Roo在开发过程中会根据请求生成它们。 Roo没有幕后魔法接受使用面向方面的编程,你可以查看Roo生成的所有代码。 例如,在Roo中,您必须使用命令来生成dynamic查找程序方法,例如findByBook(),然后在.aj文件中查看生成的代码。 在Grails中,findByBook()方法是在运行时创build的,并且不能查看生成的代码。 Roo还允许你停止使用框架,如果你select的话,通过合并所有生成的代码到正常的.java文件中,继续运行一个正在运行的应用程序。 然后,在运行时或devise时,您都不会在任何Roo库上有依赖关系。 如果您决定不喜欢Grails,那么在继续运行应用程序的同时,无法停止使用该框架。

国际海事组织这两个不是很相似。 即使有相似之处,以下是显着的差异:

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

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

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

他们其实不是那么相似。 在编译的时候,Roo是不可思议的,Grails在运行时就是这样做的。 因为Roo项目在运行时没有任何性能命中。

我不明白他们是如何被合并的,因为Grails是build立在Groovy和Roo上的。

我在Grails邮件列表上看到了一些评论,这表明作者认为Roo只是作为Grails的垫脚石而已! 不过,我个人正考虑从Grails转换到Roo。 我认为主要的区别是dynamic语言和静态types语言 – 对我来说这是巨大的。 我喜欢Grails的许多function,但我更喜欢IDE支持和静态types语言的编译时检查。 其他一些人则完全相反,因此对于课程来说是马匹。 这就是说,静态groovy目前正在大力发展,所以谁知道未来是什么。

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

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

我们在这两个和下面探讨了以下function是我们的发现。 最后的判决我们不确定我们会用哪一个,我们还在探索中