如何创建自定义 JVM?[已关闭]

2022-09-02 03:40:31

我正在阅读 http://www.cafeaulait.org/javafaq.html 上的#6.10项目,我开始想知道大玩家如何创建自己的JVM实现。对于一个人来说,实验性的东西或另一个东西是可能的(也是可行的)吗?


答案 1

从技术上讲,人们创建新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以支持更多功能可能需要数年时间。

现在,如果你所需要的只是一个简单的字节码解释器,它并没有那么糟糕,但它仍然需要编写相当多的代码。


答案 2

手工制作的JVM将是了解一般虚拟机,程序语言设计问题(通过JVM规范)以及解析细节等的好方法。

如果你选择朝这个方向发展,你也可以探索优化,这是它可以变得有趣的地方,你可以拿研究论文并实现他们的算法。

话虽如此,如果您对从头开始创建 VM 的漫长而艰巨的任务不太感兴趣,则可能需要修改现有的开源 VM(如 Kaffe)。它将向您展示虚拟机的功能,但不一定是Java代码在Sun的JVM中的工作方式:

Kaffe 是 Java 虚拟机的洁净室实现,以及提供 Java 运行时环境所需的相关类库。

通过这种方式,您可以研究细节,但可以潜入实现更有趣的功能。


推荐