为什么JVM被认为是一个非凡的软件工程?

时间:2013-10-03 02:19:34

标签: jvm metaprogramming jvm-languages

JVM被广泛使用:Scala,Groovy,Jython等。我听说它被描述为“非凡”,“精彩”和“大量不足”。为什么呢?

更具体地说,是什么让JVM独一无二?随着所有资金涌入.NET,或者C的时间长度,或者最近创建的所有现代编程语言和虚拟机,为什么JVM独立存在?

3 个答案:

答案 0 :(得分:1)

恕我直言,它已经存在了一段时间,并且有时间被淘汰出局。 (我正在比较JVM今天和15年前的稳定性)。特别是JIT / hotspot实现,垃圾收集器,线程处理都做得很好。我认为jvm并不打算成为一个多语言平台,但它已被证明可以很好地与非java语言配合使用。

答案 1 :(得分:0)

  

随着所有资金涌入.NET

.NET不是开源的,绑定到Microsoft和Windows。 OpenJDk是开放的,可在所有平台上使用。

  

C的时间长度

使用C / C ++比使用java要复杂得多。虽然结果大致相同。更容易开发等于花更少的钱。这就是为什么java是商业选择的原因。

  

为什么/ JVM独立

Java得到了Oracle(以前的SUN)和社区的大力支持。它设法收集了很多观众。

答案 2 :(得分:0)

imho,你可以在jvm上运行其他语言,这没什么了不起的。您也可以在您的操作系统上运行许多不同的语言。但我认为使用简单的字节码作为jvm的本地语言已经有很大帮助。将语言翻译/编译为简单的字节码而不是其他高级语言更容易。最近,jvm规范注意到了其他语言的存在,并添加了invoke-dynamic,目前只能从字节码访问(没有java构造)。 但是jvm也强制执行很多限制。例如,您无法从尾部呼叫优化中受益;启动时间是一个灾难所以你需要作弊(总是运行守护进程)来有效地使用脚本语言;调试非java语言的堆栈跟踪是一场噩梦;由于技术困难和完全不同的评估模型,haskell仍未移植到jvm

我认为jvm非常出色,因为(经过一年)它真的很快(GC,JIT)稳定,便携,具有巨大的市场渗透率和数以万计的图书馆。所以你写一次,然后在你的电脑,服务器,电话,电视和洗衣机上运行。

为什么不是.NET也不是C?我猜:便携性,价格,运气。大多数服务器都是非Windows。从java开始比用.NET开始便宜。 C不可移植,没有GC