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