我正在尝试编写自己的JVM。您能指向一些现有的开源实现吗? 谢谢。
请查看备选Java实现或链接页面的Kaffe VM,以下是其中的一部分内容(请查看原网站获取链接):
Latte
基于Kaffe的开源JVM。
JanosVM
多进程JVM的当前犹他工作。
KaffeOS
KaffeOS是一种Java虚拟机,允许在Kaffe内执行多个进程。它分离了这些进程消耗的资源,允许安全地终止它们,并提供直接共享。
Patrick Tullman说:
(Kaffe核心团队成员Godmar Back的博士论文)源代码还不可用,但我认为这只是因为Godmar在完成论文后正在解压缩。
JESSICA项目
项目JESSICA(Java Enabled Single-System-Image Computing Architecture)和新的JESSICA2项目都基于Kaffe,创建了一个分布式JVM,用于在PC集群上运行多线程Java应用程序。
Gilgul
Alta
Alta虚拟机是一个Java兼容的虚拟机,旨在为Java应用程序提供嵌套进程服务。 Alta基于Kaffe。
Guaraná
Guaraná是一种反射架构,旨在实现简单性,灵活性,安全性和元级代码的重用。它使用Kaffe作为其基础。 Guaraná可在GPL下下载。
kangaroo
kangaroo是一个类似于J2ME / CLDC的虚拟机。
Java语言的Red Hat Sourceware项目(gcj)。
Red Hat(收购了Cygnus)正在开发一个完整的免费软件工具包,用于开发Java语言。 gcj是egcs项目的一部分,提供Java前端和一组运行时库给egcs。还包括gij解释器。
jRate
GNU GCJ编译器前端和运行时系统的扩展,增加了对Java实时规范(RTSJ)所需功能的支持。
ORP(Open Runtime Platform)
来自英特尔。
Jikes研究虚拟机(RVM)
一个自由,自托管的虚拟机(用Java编写!)
JC
在运行它之前将Java字节码转换为C的Java虚拟机。 (来自Kaffe项目校友Archie Cobbs)
Japhar
Japhar是Hungry Programmers的Java VM。 它是从零开始构建的,没有咨询Sun的源代码。 Japhar是LGPLed并可供下载。
ElectricalFire
ElectricalFire是一个开源项目,来自Netscape取消的商业项目,并在Mozilla伞下得到赞助。
ElectricalFire是一种Java虚拟机,使用JIT(Just In Time)编译技术加速Java代码执行。 ElectricalFire
这两个列表都不是最新的,缺少像OpenJDK或Apache Harmony这样的倡议。
话虽如此,我不知道你所说的“好的开源实现”具体是什么意思。对于每个人来说,“好”的含义可能不一样,也可能取决于上下文。Kaffe是作为虚拟机教育和/或研究的基础的绝佳选择,IBM的Jikes编译器非常快,OpenJDK可能非常成熟,但可能不是教育目的的最佳选择,等等。它们都是好的实现,但我不知道哪一个对你来说更“好”。实际上,我让你自己决定。
Hotspot (由 Sun 推出,使用 GPL 协议)
Harmony(Apache 推出,也是 Android 的 Dalvik VM 基础)
CLDC - 连接有限设备配置(同样由 Sun 推出)。虽然这个不算真正的开源,但其源代码可供使用。
我认为,OpenJDK源代码并不是学习编写虚拟机的好起点。它太庞大且过于特定于平台。有一些替代方案可供选择,例如:
这里有一篇关于替代JVM实现的维基百科条目,其中一些已经在这里提到,而另一些则没有。