作为一个副业的背景,我一直在阅读不同的虚拟机设计,其中JVM当然得到了最多的关注。我还看了BEAM(Erlang)、GHC的RTS(有点但不完全是VM)以及一些JavaScript实现。Python也有字节码解释器,但我没有读过太多相关内容。
我没有找到一个好的解释 为什么会针对特定语言做出特定的虚拟机设计选择。我特别关心与并发和/或非常动态(Ruby、JavaScript、Lisp)语言相适配的设计选择。
我没有找到一个好的解释 为什么会针对特定语言做出特定的虚拟机设计选择。我特别关心与并发和/或非常动态(Ruby、JavaScript、Lisp)语言相适配的设计选择。
编辑: 回应评论要求具体说明,这里是一个例子。JVM使用堆栈机而不是寄存器机,在Java首次引入时非常有争议。结果证明,设计JVM的工程师打算实现平台可移植性,并且将堆栈机转换回寄存器机比克服存在太多或太少虚拟寄存器的阻抗不匹配更容易、更高效。
.class
文件无法在其上运行。在将 JVM 的字节码放入 Android 设备之前,需要将其转换为 Dalvik 字节码。 - John F. Miller