JVM 被广泛使用:Scala、Groovy、Jython 等。我听说它被描述为“卓越”、“出色”和“严重低估”。为什么?
更具体地说,是什么让 JVM 与众不同?随着所有资金投入 .NET,或者 C 已经存在的时间长度,或者最近创建的所有现代编程语言和 VM,为什么/为什么 JVM 是独立的?
JVM 被广泛使用:Scala、Groovy、Jython 等。我听说它被描述为“卓越”、“出色”和“严重低估”。为什么?
更具体地说,是什么让 JVM 与众不同?随着所有资金投入 .NET,或者 C 已经存在的时间长度,或者最近创建的所有现代编程语言和 VM,为什么/为什么 JVM 是独立的?
恕我直言,它已经存在了一段时间,并且有时间被淘汰。(我正在比较 JVM 今天和 15 年前的稳定性)。特别是 JIT/热点实现、垃圾收集器、线程处理都做得很好。我不认为 jvm 旨在成为一个多语言平台,但事实证明它可以很好地与非 java 语言一起工作。
将所有资金投入 .NET
.NET 不是开源的,绑定到 Microsoft 和 Windows。虽然 OpenJDK 在所有平台上都是开放且可用的。
C 存在的时间长度
C/C++ 使用起来比 java 复杂得多。虽然结果大致相同。更容易开发等于花费更少的钱。这就是为什么java是一种商业选择。
为什么/JVM独立
Java 得到了 Oracle(之前的 SUN)和社区的大力支持。它成功地吸引了大批观众。
恕我直言,您可以在 jvm 上运行其他语言这一事实没有什么了不起的。你也可以在你的操作系统上运行许多不同的语言。但我认为使用简单的字节码作为 jvm 的本地语言有很大帮助。将语言翻译/编译为简单的字节码比其他高级语言更容易。最近 jvm 规范注意到其他语言的存在并添加了当前只能从字节码访问的动态调用(没有 java 构造)。但是 jvm 也有很多限制。例如,您无法从尾调用优化中受益;启动时间是一场灾难,因此您需要作弊(始终运行守护程序)才能有效地将其用于脚本语言;调试非 Java 语言的堆栈跟踪是一场噩梦;
我认为 jvm 非常出色,因为(一年后)它非常快速(GC、JIT)稳定、便携,具有巨大的市场渗透率和数以万计的库。所以你写一次,然后在你的电脑、服务器、电话、电视和洗衣机上运行。
为什么不是 .NET 也不是 C?我猜:便携性、价格、运气。大多数服务器都是非 Windows 的。从 java 开始比 .NET 便宜。C 不可移植,没有 GC