如何创建自定义JVM?

ian*_*c45 18 java jvm

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

mic*_*ert 13

从技术上讲,人们创建新JVM所需的所有信息都在语言和目标平台的公共规范中.JVM需要表现不同,具体取决于它是在台式计算机还是手机上运行,​​即使字节码解释大致相同.

一些地方开始寻找信息:

http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
阅读Tim Lindholm撰写的"Java虚拟机规范"
http://www.jcp.org/en/jsr/detail?id=30

根据我所看到的Sun,IBM或像Esmertec这样的小公司的JVM实现,编写一个简单的JVM是一个人工月的项目,但在JSR之后添加JSR以支持更多功能可能需要数年时间.

现在,如果您只需要一个简单的字节码解释器,它就不那么糟糕,但它仍然需要编写相当多的代码.


Kai*_*Kai 7

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

如果你选择在那个方向上进行,你也可以探索优化,这是它可以变得有趣的地方,你可以拿研究论文并实现他们的算法.

话虽如此,如果您对从头开始创建VM的漫长而艰巨的任务不太感兴趣,您可能希望修改像Kaffe这样的现有开源虚拟机.它将向您展示虚拟机的功能,但不一定是Sun的JVM中Java代码的工作原理:

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

这样,您可以研究细节,但可以深入实施更多有趣的功能.