逐步用Groovy替代Java

逐步用Groovy替代Java,java,groovy,Java,Groovy,我一直在研究Groovy,我觉得将Java程序一点一点地移动到Groovy——抓取一个类并使其成为Groovy类,然后一次转换一点方法的内脏——可能是利用Groovy语言的一些特性的相对明智的方法。我还会用Groovy编写新的类 问题: 这是一种合理的转换方式吗 我可以用Java保存所有公共方法和字段吗?Groovy只是一个超集,对吗 在Groovy中,您不会做哪些事情,而是更喜欢Java 发件人: 大多数Java代码在语法上也是 有效的Groovy 及 一些Groovy代码看起来是这样的 在J

我一直在研究Groovy,我觉得将Java程序一点一点地移动到Groovy——抓取一个类并使其成为Groovy类,然后一次转换一点方法的内脏——可能是利用Groovy语言的一些特性的相对明智的方法。我还会用Groovy编写新的类

问题:

  • 这是一种合理的转换方式吗
  • 我可以用Java保存所有公共方法和字段吗?Groovy只是一个超集,对吗
  • 在Groovy中,您不会做哪些事情,而是更喜欢Java
  • 发件人:

    大多数Java代码在语法上也是 有效的Groovy

    一些Groovy代码看起来是这样的 在Java语言中,Groovy是 不是Java的超集
    。然而,除非 很少有不兼容,通常可以 将.java文件重命名为.groovy文件 它会起作用的。Groovy允许 编码器省略了一些 在Java中是必需的,所以Groovy代码 可以更紧凑。这使得 Java的Groovy学习曲线 开发人员需要循序渐进,因为他们可以 从Java语法开始,逐步 学习添加Groovy特性

    关于你问题的其余部分,我认为这似乎是一个合理的进展方式。不过,我会尝试将重点放在更改相关类以同时使用Groovy上,这样在将任务分配给可能不懂两种语言的开发人员时,我就很容易知道哪些类使用哪种语言

    这是一种合理的转换方式吗

    我可以用Java保存所有公共方法和字段吗?Groovy只是一个超集,对吗

    几乎是超集,但不完全是。例如,Groovy中的
    ==
    调用
    .equals
    方法,但在Java中它检查两个引用是否引用同一个对象。另一个例子是Groovy不支持这种构造数组的语法

    Object[] objs = new Object[] { 1, 2, 4 }
    
    最后一个例子是,当调用重载方法时,Groovy在选择调用哪个方法时使用参数的运行时类型,而Java使用编译时参数类型。有一个相当全面的两种语言之间的差异列表

    在Groovy中,您不会做哪些事情,而是更喜欢Java

    我用Groovy写所有的东西,因为我用Groovy比Java更有效率,而且我更喜欢Groovy编程。只有当某些代码出现性能问题时,我才会使用Java,并且我可以证明用Java编写代码解决了问题。实际上,我从来没有遇到过这种情况


    使用Java也可能有社会政治原因,例如,一些代码需要由许多人维护,其中一些人不了解Groovy,也不想学习它。

    有趣的是,这解决了一些问题。也许是全部。唐非常感谢你的回答,尤其是最后一部分。早期优化可能不是很好,而且是对开发时间的极大浪费。您如何发现Groovy中的autocomplete(好的,坏的,不在乎)?IntelliJ中的autocomplete很好。上一次我检查Eclipse/Netbeans时,它并不令人满意,但那是大约6个月前的事了,从那时起情况可能有所改善。特别是Eclipse中的自动更正功能(在类X中生成方法?)在Groovy中没有发生。我之所以对这个问题如此感兴趣,是因为我在Ruby中工作时几乎没有自动完成(Netbeans),但我认为可能是Ruby太难做到正确。无论如何再次感谢。我今天启动了我的免费intellij,所以我要查看一下。仅供参考,intellij的社区版包括对Groovy的支持,但不包括Grails@Don,我刚刚浏览了你的答案,它真的很完整,链接很到位。谢谢你的帮助。