我正在阅读http://www.cafeaulait.org/javafaq.html上的第6.10项,我开始想知道大公司如何创建自己的JVM实现。对于一个人来说,某种或那种实验性的东西是否可行(并且可行)?
答案 0 :(得分:12)
有几个地方开始寻找信息:
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以支持更多功能可能需要数年时间。
现在,如果您只需要一个简单的字节码解释器,它就不那么糟糕了,但它仍然需要编写很多代码。
答案 1 :(得分:6)
手工制作的JVM一般是学习虚拟机的好方法,程序语言设计的问题(通过JVM规范),以及解析的细节等等。
如果你选择在那个方向上进行,你也可以探索优化,这是它可以变得有趣的地方,你可以拿研究论文并实现他们的算法。
话虽如此,如果您对从头开始创建VM的漫长而艰巨的任务不太感兴趣,您可能希望修改现有的开源虚拟机,如Kaffe。它将向您展示虚拟机的功能,但不一定是Sun的JVM中Java代码的工作方式:
Kaffe是Java虚拟机的洁净室实现,以及提供Java运行时环境所需的关联类库。
通过这种方式,您可以研究细节,但可以深入实施更多有趣的功能。
答案 2 :(得分:4)
据我所知,目前,大型玩家从Sun获得了Java库的许可。然后他们添加自己的改进。实现之间的主要区别是字节码 - >机器码编译器。
答案 3 :(得分:3)
首先,你可能想看看Apache Harmony他们已经走了很长的路,所以他们的项目历史实际上可以让你对所需的努力有个好主意。我本人不会打赌这对一个人来说是可行的