为什么我可以在使用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似乎肯定会有所帮助。
答案 0 :(得分:38)
我在Ruby和Groovy中进行了相当广泛的开发(以及使用Grinder作为负载测试工具的一点Jython)。
在3中,我最喜欢Groovy。我最喜欢闭包语法,我认为它与JVM上其他java类的工作方式有最紧密的集成。自从我上次使用JRuby以来已经有一段时间了,但导入Java类并使用JRuby中的类加载器对我来说感觉不太干净。
事实上,Groovy本质上也是Java的超集,这意味着大量的Java程序员将会更快地选择Groovy而不是Ruby / JRuby。他们可以像Java一样开始编程,然后慢慢开始插入idomatic groovy。
更多的是你要问的问题,我认为Groovy的另一个优点是,当你想要优化某些东西时,你所使用的语言几乎是完全相同的语法,它是Java。如果您在Ruby或Python世界中工作,那么您将不得不去C大转移或Java,这也与那些语言完全不同。 Groovy中的编程往往有助于保持Java技能的一定程度。
如果您可以访问Ruby或Python基础结构,或者熟悉这种环境的团队,那么我可以看到选择其中一种语言。
实际上,它们中的3个都是非常好的语言,您选择的内容应该更多地取决于您尝试修复的问题以及您可以使用的资源。一旦掌握了一种动态语言,就可以轻松获得第二种或第三种语言。
答案 1 :(得分:14)
我想说如果你需要将Java与Jruby / Groovy混合使用,请使用Groovy。正如大家所说,Groovy有更紧密的Java集成。
但是就语言 实现 而言,我更喜欢Ruby语言而不是Groovy,语言围绕着自身,在Groovy中有一些固有的hacks实现本身(只是观看Grails堆栈跟踪与Rails堆栈跟踪,你会看到我的意思)。
我高度建议您看看Neal Ford的comparison of Groovy and JRuby
答案 2 :(得分: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
答案 3 :(得分:1)
我只有Jython和Groovy的经验。目前,Jython的最大缺点是推荐用于生产的最新版本(2.2.1)具有“大致对应于Python-2.2”(Jython FAQ)的功能集。有一个测试版实现了我认为的Python 2.5,它现在是一个版本。不知道JRuby是否可以这样说。
答案 4 :(得分:1)
我不知道为什么你应该选择Groovy,因为我不知道你的背景。如果您是Java开发人员,那么Groovy会比您当前的语言更像JRuby或Jython。 Groovy结合了最好的Java,语言,Java,平台和Ruby语言。