为什么JVM被认为是软件工程中如此引人注目的一部分?

为什么JVM被认为是软件工程中如此引人注目的一部分?,jvm,metaprogramming,jvm-languages,Jvm,Metaprogramming,Jvm Languages,JVM被广泛使用:Scala、Groovy、Jython等。我听说它被描述为“卓越的”、“卓越的”和“被严重低估的”。为什么? 更具体地说,是什么让JVM独一无二?所有的钱都投入到了.NET中,或者C已经存在了很长时间,或者所有现代编程语言和最近创建的虚拟机,为什么JVM是独立的 IMHO它只是存在了一段时间,有时间被洗掉了。(我比较了今天和15年前JVM的稳定性)。特别是JIT/hotspot实现、垃圾收集器和线程处理都做得很好。我不认为jvm是一个多语言平台,但它被证明可以很好地与非java

JVM被广泛使用:Scala、Groovy、Jython等。我听说它被描述为“卓越的”、“卓越的”和“被严重低估的”。为什么?


更具体地说,是什么让JVM独一无二?所有的钱都投入到了.NET中,或者C已经存在了很长时间,或者所有现代编程语言和最近创建的虚拟机,为什么JVM是独立的

IMHO它只是存在了一段时间,有时间被洗掉了。(我比较了今天和15年前JVM的稳定性)。特别是JIT/hotspot实现、垃圾收集器和线程处理都做得很好。我不认为jvm是一个多语言平台,但它被证明可以很好地与非java语言配合使用

所有的钱都注入了.NET

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

C已经存在的时间长度

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

为什么JVM是独立的


Java得到了Oracle(SUN之前)和社区的大力支持。它成功地吸引了大量的观众。

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

我认为jvm非常出色,因为(一年后)它非常快速(GC、JIT)、稳定、可移植、具有巨大的市场渗透力和数不清的库。所以你写一次,然后在你的电脑、服务器、电话、电视和洗衣机上运行


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

我很想知道这个问题的答案,但它可能会接近基于意见的。是的:/t编辑了我的问题,将其更多地集中在jvm的区别上。