代码之家  ›  专栏  ›  技术社区  ›  RubyDubee

Java相对于Ruby/JRuby的优势

  •  13
  • RubyDubee  · 技术社区  · 15 年前

    我正在学习Java。 我学习并使用了Ruby。Ruby书籍总是讲述Ruby优于Java的优点。但是肯定有一些优势,这就是为什么很多人(尤其是公司)使用Java而不是Ruby。 请告诉我Java相对于Ruby的绝对优势(不是哲学上的!)。

    16 回复  |  直到 14 年前
        1
  •  18
  •   Mnementh    15 年前
    • 有更多的开发人员对 Java比Ruby更适合。
    • 也有助于JRuby)。
    • 优势和劣势)。
    • 保持。
    • 良好的工具支持。
    • 更多更深入的文档和 教程。
    • 和陷阱。
    • 对公司来说很有趣。

    这些优点中有许多是Java生态系统比Ruby更成熟的结果。这些要点中有许多是主观的,比如静态和动态打字。

        2
  •  12
  •   Roy Tinker    13 年前

    我不太了解Ruby,但我可以猜到以下几点:

    • Java有 更多文档 (书籍、博客、教程等);总体文档质量非常好
    • 更多工具
    • Java有 (我猜是由于静态类型系统)
    • Java的应用比Ruby更广泛
    • Java有一个
    • 据我所知,Java对线程和unicode有更好的支持(JRuby在这里可能会有所帮助)
    • Java的总体性能最近相当不错(由于hotspot、G1新的垃圾收集器等原因)
    • appengine
        3
  •  7
  •   Konrad Rudolph    15 年前

    请告诉我Java相对于Ruby的绝对优势

    程序员不应该绝对地处理问题。

    我敢这么说 ,静态类型(Java)比动态类型(Ruby)更具优势,因为它有助于更快地识别错误,并且无需进行潜在的困难的单元测试 1) .

    通过智能化利用,一个具有静态类型检查的强类型系统可以节省实时时间。


    1) 我愿意 反对单元测试!但是好的单元测试是很困难的,编译器可以在减少必要测试用例的数量方面起到很大的作用。

        4
  •  5
  •   gbjbaanb    15 年前

    理由#1。有很多遗留Java代码。Ruby是一个新事物,知道它的程序员不多,擅长它的更少。类似地,Java可用的库代码比Ruby多得多。

    所以可能有技术上的原因,Ruby比Java好,但如果你问的是业务上的原因,Java仍然比它强。

        5
  •  3
  •   oxbow_lakes    15 年前

    Java Virtual Machine ,经过十多年的改进,包括:

    • 实时编译 热点
    • 过多的 垃圾收集算法 和调谐参数
    • , JVisualVM 等)
        6
  •  2
  •   Community Nick Dandoulakis    8 年前

    我喜欢这个比较(在Markus提供的链接上找到!谢谢!)。。。谢谢大家。。。我还期待着更多的离散优势

    Java-Ruby Comparison


    太棒了!!

        7
  •  2
  •   alsor.net    15 年前

    我的观点是,Java语言本身的特殊属性使我们能够使用IDE和工具的强大功能。当您必须处理非常大的代码库时,这些功能尤其有价值。

    • 当然是强静态类型
    • 语言的语法是LALR(1)语法,因此构建解析器很容易
    • 完全限定名(包)

    到目前为止,我们在IDE中得到了什么,例如Eclipse:

    • 探索非常大的代码库的强大能力。您可以毫不含糊地找到所有引用、调用层次结构、类或公共和受保护成员的用法——这在您研究项目代码或准备更改某些内容时非常有价值。
    • 非常有用的代码编辑器。我注意到,当我在Eclipse的java编辑器中编写代码时,我实际上是在手工输入cals或方法的名称,然后按下Ctrl+1,编辑器为我生成了很多东西。尤其值得一提的是,eclipse鼓励您首先编写代码片段的用法,甚至在正式编写代码之前。所以,在创建方法之前先进行方法调用,然后编辑器为您生成方法存根。或者,在调用方法或构造函数时,在该位置添加额外的参数,然后编辑器为您更改签名。还有更复杂的事情-你把一些对象传递给接受一些接口的方法-如果对象的类没有实现这个接口-编辑器可以帮你。。。等等有很多有趣的事情。

    Java有很多工具。作为一个伟大工具的例子,我想提到Maven。实际上,我的观点是,只有当我们拥有像Maven这样的工具时,代码重用才真正可能。围绕它构建的基础设施以及与IDE的集成使非常有趣的事情变得可行。示例:我已经安装了m2eclipse插件。我在Eclipse中有一个新的空项目。我知道在存储库的某个地方有一个类我需要使用(实际上是重用),比如说StringUtils。我在代码“StringUtils”中写道,Eclipse的编辑器告诉我项目中没有这样的类,并用红色下划线。我按下Ctrl+1,可以在公共存储库(实际上是在索引中,而不是存储库本身)中搜索此类。找到了一些lib,我在特定版本中选择了其中一个,该工具下载jar,配置我的项目的calsspath,我已经得到了我所需要的一切。

    所以这一切都是关于程序员的生产力。

    JVM。

    我的观点是JVM(特别是Sun的热点)是当今最有趣的软件之一。当然,这里的关键是性能。但是当前HotSpot JVM的实现探索了非常先进的方法来实现如此出色的性能。它探索了即时编译相对于静态编译的所有可能优势,在JIT编译之前收集代码使用情况的统计信息,优化可能的虚拟调用,可以内联静态编译器可以内联的更多内容,等等。这里最棒的是,所有这些东西都在JVM中,而不是在语言本身中(与C#示例相反)。实际上,如果您只是在学习Java语言,我强烈建议您学习JVM的现代实现的细节,这样您就知道什么是真正影响性能的因素,什么不是,不要在Java代码中进行不必要的优化,也不要害怕使用该语言的所有可能性。

    所以 实际上,这都是关于IDE和工具的,但出于某种原因,我们将它们用于Java,而不是用于任何其他语言或平台(.NET当然是Windows世界中一个伟大的竞争对手)。

        8
  •  2
  •   cbmeeks    13 年前

    足够快 用于web应用程序。

    Java更适合于原始肌肉和速度。

    小时

    我用Java重新编写了它,它在4分钟内运行。对小时到4分钟。所以,不管它值多少钱。

        9
  •  2
  •   Andrew Grimm atk    13 年前

    Network effect . Java具有更多人使用Java的优势。他们自己使用Java是因为越来越多的人使用Java。

        10
  •  1
  •   nanda    15 年前

    静态类型检查和优秀的JavaIDE并没有什么神奇之处,这对很多维护人员来说是好的,而不是Ruby。

        11
  •  1
  •   Michael Wiles    15 年前

    仅指出java是静态类型而ruby是动态类型是不够的。

    在运行时更改程序(类定义、方法定义等)?AFAIK您可以拥有非“动态”的动态类型语言(可以在运行时更改)。

    因为在Ruby中,您可以在运行时更改程序,直到您实际完成了更改后才知道

    这种可预测性是Java的优势,这取决于环境——其中一个优势是当您有许多不同技能水平的开发人员在相当大的企业应用程序上工作时。

        12
  •  1
  •   MAK    15 年前

    依我看,一个人认为有利的东西对另一个人来说可能是不利的。有些人喜欢静态输入,而另一些人喜欢动态输入。这是相当主观的,主要取决于工作和做这件事的人。

    我想说,只要学习Java,自己决定它的优点是什么。自己掌握这两种语言胜过其他人能给出的任何比较/建议。而且知道另一种语言通常是件好事,这样你就不会浪费时间了。

        13
  •  1
  •   Dan Harper    15 年前

    Java的否定:

    • Java可用的库和框架中存在大量重复。
    • Java中还有很多遗留问题需要维护。
    • 过分迎合商业用户,导致中层管理人员感觉更好。换句话说,Java中的一些哲学更关注BS,而不是完成任务。这就是为什么公司喜欢使用Java。
    • 您通常需要用Java编写比Ruby更多的代码。
    • 通过Ruby获得一个完全工作的Java开发环境需要更多的配置/安装/设置。

    • 文档

        14
  •  0
  •   Maurice Perry    15 年前

        15
  •  0
  •   Thorbjørn Ravn Andersen    15 年前

    有更多的选择:

    • 开发商-需要租用的地块
    • IDE——有很多开发环境可供选择。不仅仅是vi/emacs+shell。
    • 运行时——如果您出于某种原因不喜欢在系统上使用的JVM,您可以下载或购买另一个实现,它很可能会正常工作。有多少个Ruby实现?

    请注意,这与语言本身无关:)

        16
  •  0
  •   Community Nick Dandoulakis    7 年前

    阅读以下内容: Is Ruby as cross-platform as Java? 让我认识到java相对于ruby至少有一个实际优势:

    与J2ME兼容的java子测试比ruby更具可移植性