34

当我可以使用 Jython 或 Jruby 时,为什么还要选择使用 Groovy?该语言是否提供任何固有优势来弥补 Jython 和 Jruby 技能适用于 JVM 之外的母语这一事实?

请记住,我故意让这个问题保持通用性,但如果在特定领域存在任何优势,请毫不犹豫地描述它们。

编辑
澄清一下,如果我在 Jruby 中编写一些代码,我现在可以在某些情况下,如果需要,将代码移到 JVM 之外,或者至少我对 Ruby 有了更好的理解。而 Groovy 技能仅在使用仅存在于 JVM 中的语言时才适用。Jython 和 Jruby 有这个内置的优势,Groovy 必须用什么来弥补这个劣势?

如果 Groovy 没有您发现的任何优势,并且您建议只使用 Jython 或 Jruby,请告诉我。

编辑 2
感谢大家的所有答案,他们中的大多数人都提出了相同的观点,Groovy 与 Java 的集成略好于 Jython 或 Jruby。

跟进
使用 Netbeans 6.5 作为我的 IDE 我发现 Groovy 与 Java 项目的集成比 Jruby 更好。我不确定缺乏集成是否是 Jruby 或 Netbeans 的失败。但是在将它用于一点 Groovy 之后,肯定似乎有了优势。

4

5 回答 5

38

我在 Ruby 和 Groovy 中进行了相当广泛的开发(以及使用 Grinder 作为负载测试工具的小 Jython)。

在这 3 个中,我最喜欢 Groovy。我最喜欢闭包语法,并且我认为它与 JVM 上的其他 java 类的工作方式具有最紧密的集成。自从我上次使用 JRuby 已经有一段时间了,但是在 JRuby 中导入 Java 类和使用类加载器对我来说并没有那么干净。

Groovy 本质上也是 Java 的超集这一事实意味着,大量的 Java 程序员将有更快的时间来选择 Groovy,而不是 Ruby/JRuby。他们可以像 Java 一样开始对其进行编程,并在他们拿起它时慢慢开始插入 idomatic groovy。

更重要的是,我认为 Groovy 的另一个优点是,当您想要优化某些东西时,您使用的语言几乎是完全相同的语法,它是 Java。如果您在 Ruby 或 Python 世界中工作,您将不得不使用 C(这是一个巨大的转变)或 Java(这也与这些语言完全不同)。使用 Groovy 进行编程也有助于保持您的 Java 技能有些敏锐。

如果您对 Ruby 或 Python 基础架构有特定的访问权限,或者您的团队熟悉此类环境,那么我可以选择其中一种其他语言。

确实,这 3 种语言都是非常好的语言,您选择的语言应该更多地取决于您要解决的问题以及您可以使用的资源。一旦你精通一种动态语言,再学一门或三门就容易多了。

于 2008-11-14T04:45:49.437 回答
14

我想说,如果您需要将 Java 与 Jruby/Groovy 混合使用,请使用 Groovy。正如大家所说,Groovy 具有更紧密的 Java 集成。

但就语言实现而言,我更喜欢 Ruby 语言而不是 Groovy,该语言围绕自身旋转,在 Groovy 中存在一些实现本身固有的技巧(只需观看 Grails 堆栈跟踪与 Rails 堆栈跟踪,你就知道了)会明白我的意思)。

强烈推荐看看 Neal Ford对 Groovy 和 JRuby 的比较

于 2008-11-17T12:34:14.137 回答
3

我认为 Dick Wall 在 Java Posse 播客(#213,大约 34:20 in)上对这三者之间的区别做了一个很好的总结……“JRuby 旨在让程序员开心……它是编程语言开发人员的选择; Python 在简单性和教育方面有着非常深厚的根基;Groovy 的目标是成为 Java 开发人员的选择……它是 Java 非常熟悉的环境……支持注解”。

在将语言移出 JVM 方面,我认为 Java 运行时不会带来太多开销——它是一个简单的安装,并且您需要设置一些环境变量——但它确实提供了许多好处,包括一个经过高度优化的成熟运行时,以及大量的库。JRuby 团队现在报告了比原生 MRI 更好的性能。http://blog.headius.com/2008/08/twas-brillig.html

于 2008-11-14T14:35:30.120 回答
1

我只使用过 Jython 和 Groovy。目前,Jython 的最大缺点是推荐用于生产的最新版本 (2.2.1) 具有“大致对应于 Python-2.2”的功能集 ( Jython FAQ )。有一个测试版实现了我认为是 Python 2.5,现在是一个落后的版本。不知道 JRuby 是否也可以这样说。

于 2008-11-13T20:27:01.813 回答
1

我不知道你为什么选择 Groovy,因为我不知道你的背景。如果您是 Java 开发人员,Groovy 感觉与您当前的语言更相似,那么 JRuby 或 Jython。Groovy 结合了 Java 语言、Java 平台和 Ruby 语言的优点。

于 2008-11-13T21:08:11.497 回答