如何创建自定义 JVM?[已关闭]
我正在阅读 http://www.cafeaulait.org/javafaq.html 上的#6.10项目,我开始想知道大玩家如何创建自己的JVM实现。对于一个人来说,实验性的东西或另一个东西是可能的(也是可行的)吗?
我正在阅读 http://www.cafeaulait.org/javafaq.html 上的#6.10项目,我开始想知道大玩家如何创建自己的JVM实现。对于一个人来说,实验性的东西或另一个东西是可能的(也是可行的)吗?
从技术上讲,人们创建新JVM所需的所有信息都在语言和目标平台的公共规范中。JVM需要根据它是在台式计算机还是移动电话上运行而具有不同的行为,即使字节码解释在很大程度上是相同的。
开始查找信息的几个位置:
http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
阅读 Tim Lindholm
http://www.jcp.org/en/jsr/detail?id=30 的“Java 虚拟机规范”
从我所看到的Sun,IBM或Esmertec等小型公司的JVM实现来看,编写一个简单的JVM是一个需要几个月时间的项目,但是在JSR之后添加JSR以支持更多功能可能需要数年时间。
现在,如果你所需要的只是一个简单的字节码解释器,它并没有那么糟糕,但它仍然需要编写相当多的代码。
手工制作的JVM将是了解一般虚拟机,程序语言设计问题(通过JVM规范)以及解析细节等的好方法。
如果你选择朝这个方向发展,你也可以探索优化,这是它可以变得有趣的地方,你可以拿研究论文并实现他们的算法。
话虽如此,如果您对从头开始创建 VM 的漫长而艰巨的任务不太感兴趣,则可能需要修改现有的开源 VM(如 Kaffe)。它将向您展示虚拟机的功能,但不一定是Java代码在Sun的JVM中的工作方式:
Kaffe 是 Java 虚拟机的洁净室实现,以及提供 Java 运行时环境所需的相关类库。
通过这种方式,您可以研究细节,但可以潜入实现更有趣的功能。