74

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

有谁知道这些技术之间的关系,它们会被合并,还是其中一种会被放弃?

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

4

8 回答 8

88

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

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

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

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

于 2010-01-08T21:22:36.467 回答
22

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

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

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

于 2010-01-05T10:04:57.620 回答
19

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

于 2010-01-05T13:20:36.657 回答
9

IMO 两者不是很相似。尽管有相似之处,但以下是显着差异:

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

Roo 非常类似于 Grails 的命令行系统(例如 Grails 中的create-app,create-domain-class​​ , test-apptype 命令)。看到 Grails 框架的这一部分和 Roo 之间存在一些“异花授粉”,我不会感到惊讶。

于 2010-01-05T10:06:06.093 回答
4

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

于 2010-01-05T10:12:43.820 回答
1

它们实际上并没有那么相似。Roo 在编译时执行它的魔法,而 Grails 在运行时执行它。因此,Roo 项目在运行时不会对性能造成任何影响。

我看不出它们是如何合并的,因为 Grails 是建立在 Groovy 和 Java 上的 Roo 之上的。

于 2010-01-05T11:59:24.287 回答
1

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

于 2010-02-11T13:12:12.520 回答
0

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

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

我们在这两个方面探索了以下特征,以下是我们的发现。最终判决我们不确定我们是否会使用任何一个,我们仍在探索中

于 2012-04-18T10:34:30.937 回答