我正在学习Java。 我学习并使用过Ruby。 Ruby书籍总是讲述Ruby优于Java的优势。但必须有一些优势,这就是为什么很多人(特别是公司)使用Java而不是Ruby。 请告诉Java相对于Ruby的绝对(不是哲学!)优势。
答案 0 :(得分:18)
其中许多优点都是Java生态系统比Ruby更成熟的结果。其中许多观点都是主观的,如静态与动态类型。
答案 1 :(得分:12)
我不太了解Ruby,但我可以猜出以下几点:
答案 2 :(得分:7)
请告诉Java的优点......而不是Ruby
程序员应该很少处理绝对值。
我敢说,并且说作为规则,静态类型(Java)比动态类型(Ruby)更有优势,因为它有助于更快地识别错误,而无需潜在困难的单元测试 1)。
智能地利用静态类型检查的强类型系统可以节省时间。
1)我不反对单位测试!但良好的单元测试很难,编译器可以帮助减少必要测试用例的绝对数量。
答案 3 :(得分:5)
原因#1。那里有很多遗留的Java代码。 Ruby是新的,没有那么多的程序员知道它,甚至更少的人擅长它。同样,Java可用的库代码比Ruby多得多。
因此可能有技术原因Ruby比Java更好,但是如果你要求出于商业原因,Java仍然会胜过它。
答案 4 :(得分:3)
Java Virtual Machine,已经进行了十多年的改进,包括:
答案 5 :(得分:2)
我喜欢这种比较(在Markus给出的链接上发现!谢谢!)...感谢所有......我也期待更多离散的优势
它的伟大!!
答案 6 :(得分:2)
语言。
我的观点是Java语言本身的特定属性使我们获得了IDE和工具的强大功能。当您必须处理非常大的代码库时,这些功能特别有用。
如果我尝试枚举这些属性,那就是:
到目前为止我们在IDE中已经得到了什么,例如Eclipse:
Java有很多工具。作为一个伟大的工具的例子,我想提到Maven。实际上,我认为只有当我们拥有像Maven这样的工具时才能实现代码重用。围绕它构建的基础架构以及与IDE的集成使得非常有趣的thinsg成为可能。示例:我安装了m2eclipse插件。我在Eclipse中有一个新的空项目。我知道我需要在存储库中的某个地方使用一个类(实际重用),比如说StringUtils。我在代码'StringUtils'中编写,Eclipse的编辑告诉我项目中没有这样的类,并用红色强调它。我按Ctrl + 1,看到有能力在公共存储库中搜索此类(实际上在索引中,而不是存储库本身)。找到了一些库,我在特定版本中选择了其中一个,并且该工具下载了jar,配置了我项目的calsspath,我已经得到了我需要的所有内容。
所以关于程序员的工作效率。
JVM。
我认为JVM(特别是Sun的HotSpot)是当今最有趣的软件之一。当然,这里的关键点是表演。但是,HotSpot JVM的当前实现探索了实现如此卓越性能的非常前沿的方法。它探讨了即时编译静态的所有可能优势,在JIT编译之前收集代码使用情况的统计信息,优化虚拟调用的可能性,可以内联更多静态编译器可以使用的东西,等等。在这里,所有这些东西都在JVM中,而不是语言本身(与C#相反)。实际上,如果你只是学习Java语言,我强烈建议你学习JVM现代实现的细节,这样你就知道什么是真正的性能损害,什么不是,并且不要在Java代码中加入不必要的优化,并且不要害怕使用该语言的所有可能性。
<强>因此... 强> 它实际上是关于IDE和工具的,但由于某种原因,我们将它们用于Java而不是任何其他语言或平台(.NET当然是Windows世界中的一个很好的竞争对手)。
答案 7 :(得分:2)
Network effect。 Java具有更多人使用Java的优势。谁自己使用Java是因为更多的人使用Java。
答案 8 :(得分:1)
如果您需要构建一个大型软件,则需要进行协作。通过让很多程序员在那里,您确信即使最初的开发人员离开公司,也会有人被要求维护您的软件。
静态类型检查和良好的Java IDE没有任何魔力,这对很多维护者而不是Ruby都有好处。
答案 9 :(得分:1)
仅表示java是静态类型并且ruby是动态类型是不够的。
如果我错了,请纠正我,但这是否涵盖了红宝石中你可以添加甚至更多的事实 在运行时更改程序(类定义,方法定义等)? AFAIK你可以拥有非“动态”的动态类型语言(可以在运行时更改)。
因为在Ruby中,您可以在运行时更改程序,直到您实际运行程序的行为方式才会知道,即使这样您也不知道将在下次表现相同,因为您的代码可能已经被调用您正在编写和测试的代码的其他代码更改。
这种可预测性取决于上下文,Java的优势 - 这是一个优势的上下文之一是当你有大量不同技能水平的开发人员在一个相当大的企业应用程序上工作时。
答案 10 :(得分:1)
我会说只是学习Java并自己决定它的优点是什么。了解这两种语言本身可以胜过其他人可以提供的任何比较/建议。知道另一种语言通常是件好事,所以你不要浪费时间。
答案 11 :(得分:1)
Java的否定:
Java的积极因素:
我的观点都不是很科学,但我认为Java和Ruby背后的哲学和个性差异使得它们彼此截然不同。
答案 12 :(得分:1)
这可能已经被打死了,但我个人的观点是,Ruby擅长快速创建的Web应用程序(和框架),这些应用程序易于学习,阅读美观,并且足够快用于网络应用。
Java更适合原始肌肉和速度。
例如,我编写了一个Ruby程序,将192 MB的文本文件转换为MongoDB集合。 Ruby花了小时来运行。 Ruby代码就像你可以得到的那样简单/优化(1.9.2)。
我用Java重写它,它在4分钟内运行。是。小时到4分钟。因此,请考虑它的价值。
答案 13 :(得分:0)
更好的表现
答案 14 :(得分:0)
还有更多选择:
请注意,这与LANGUAGES无关:)
答案 15 :(得分:0)
读到这个:Is Ruby as cross-platform as Java?让我意识到java至少有一个超过ruby的事实优势:
兼容J2ME的java子程序比ruby
更易于移植只要JRuby不能在J2ME上运行,这可能永远是