Groovy语言有多稳定?

Groovy语言有多稳定?,groovy,Groovy,我们正在用Java编写一个大型生产系统,我正在考虑是否可以用一种基于JVM的动态语言编写一些组件。从Java互操作性的角度来看,Groovy似乎是最佳选择。但是Groovy实现是否足够可靠,可以在生产中使用(我假设是这样),Groovy语言规范本身是否足够稳定,这样我们就不必在一两年内大量修改生产代码了?你的经历是什么 总结(5/30/09):很好的评论,我得到的感觉是,在将Groovy用于任务关键型生产用途时,您应该谨慎,它可以用于辅助用途,如组合测试用例,并且有一个中间地带,它可能很好,但首

我们正在用Java编写一个大型生产系统,我正在考虑是否可以用一种基于JVM的动态语言编写一些组件。从Java互操作性的角度来看,Groovy似乎是最佳选择。但是Groovy实现是否足够可靠,可以在生产中使用(我假设是这样),Groovy语言规范本身是否足够稳定,这样我们就不必在一两年内大量修改生产代码了?你的经历是什么

总结(5/30/09):很好的评论,我得到的感觉是,在将Groovy用于任务关键型生产用途时,您应该谨慎,它可以用于辅助用途,如组合测试用例,并且有一个中间地带,它可能很好,但首先要做您的家庭作业。性能是一个问题,需要与开发人员生产率的提高相平衡。基于Groovy的使用,Bill和Ichorus给出了同样有用的答案,所以这是一个掷硬币游戏

更新(12/3/09):最近我一直在认真研究另一种JVM语言。它由Martin Odersky设计和实现,Martin Odersky是当前javac编译器的原始作者,也是Java泛型的联合设计者。Scala是强类型的,但使用类型推断来去除大量样板文件。它是面向对象编程和函数式编程的完美结合。詹姆斯·戈斯林。《Groovy》的作者James Strachan。奥德斯基编写javac的经验意味着Scala的原始版本,这令人印象深刻


更新(4/26/11):看一看Groovy的静态类型扩展,它相当于Java。看起来很有趣。

脚本语言在语法特性方面发展得“太快”

如果您希望JVM的语言能够与 多年来,
Java是您唯一的选择;)

顺便说一句,我认为代码的可读性不是很好 由脚本语言自动保证。

编辑:四年后,Groovy变得更加可靠

我可以全心全意地为生产级项目推荐它。


我已经使用Groovy支持生产应用程序一段时间了,为此,它已经足够稳定了。至于真正的生产代码中是否有Groovy;我想我不会那么做。Groovy做了太多令人惊讶的事情。在过去一年左右的时间里,它在这方面变得更好了,但每隔一段时间我就会遇到一个bug,因为生成的代码有点难以追踪(我的问题似乎围绕着范围)

我已经脱离了Groovy(尽管我们使用的简单而可靠的东西仍然存在),并且使用了Python(jython实现),在我看来,Python的可预测性要高得多。此外,python在可读性方面胜过Groovy

您可以用Groovy编写一些非常有趣的代码,包括闭包、运算符重载等等

这些语言用于辅助代码的方便性和快速性……如果需要,这些代码可以随时切换。这些都没有投入生产。我不认为我会投入生产,除非这是一个权宜之计,以获得一些关键的门在一个重大的匆忙或作为一个概念或原型的证明


在实际生产中,它必须处于最糟糕的情况下,我会指派一个人在下一个版本中用纯Java重写它。我98%确信这两种方法在生产中都可以,但2%的风险太大了。

我们有几个生产应用程序在Grails上运行(使用Groovy作为语言)。到目前为止,没有出现任何问题。至于JVM兼容性,看看JVM字节码在过去5年中的变化有多小。。。增加了1条指令,没有一条指令被禁止

Groovy的新版本会在明年推出吗?对你会被要求换成他们吗?不。尽管你可能想,1.6是一个巨大的速度提升

这就引出了Groovy的主要缺点,即速度问题。显然,Groovy比纯Java慢。对于某些操作,当前数字最多慢10次。也就是说,你的CPU是你应用程序的瓶颈吗?对我们来说,主要是数据库访问和延迟。如果对您来说也是这样,那么CPU处理页面请求的时间从35毫秒改为200毫秒又有什么关系呢

这是Groovy唯一的问题吗?不。动态语言有重构的困难,因为代码中不一定有完整的类规范。但是,较小的代码大小部分地平衡了这一点,这使得更容易找到修改代码的位置


无论如何,Groovy是一种非常适合生产使用的语言。如果您担心可靠性,请将其与Java混合使用,以获得“关键”代码。这是Groovy最好的部分。。。与Java类混合是多么容易。

我目前正在探索使用Groovy只编写单元测试。这具有以下效果:

  • 允许以比Java简单一点的语法完成编写测试的潜在繁琐部分
  • 将Groovy代码保留在生产之外
  • 允许用非Java语言编写大部分代码库
    当然,我们还没有开始,但这至少是我尝试将替代JVM语言引入新项目(可能还有现有项目)的方式。我和你们一样担心性能,甚至比稳定性更担心性能

    在我之前的公司,我们使用Grails/Groovy作为我们的主要后端,从那次经历中,我想说,在我可能遇到的大多数情况下,我会选择Groovy而不是Java,因为它与Java无缝互操作,而且在其他方面更有趣、更具表现力。另外,我还要花钱
    public class HelloWorld {
    
        public static void main(String args[]) {
            System.out.println( "Hello, world!\n");
        }
    }