https://github.com/YaroslavGaponov/node-jvm
非常简单的 jvm 实现,用 javascript ,代码清晰,初学者可以学习一下 jvm 的基本原理。
subchen
2013-11-01
|
|
RednaxelaFX
2013-11-01
这当然不是第一个用JavaScript实现JVM的尝试,也不是最好的一个。
这个实现代码确实比较直白,但我并不喜欢它的结构划分。它的解释器用了continuation-passing style (CPS)方式来实现每个opcode的handler。这或许是受写Node.js程序的习惯影响。但在解释器核心用这种方式,在没有tail-call optimization的JavaScript语言这样搞太容易爆栈了。 而且很明显有些地方需要完善才能真的正确运行Java程序,例如说它并没有正确实现Java的long类型;checkcast指令也还没实现,instanceof是错的。 Doppio比这个要完善多了。Doppio是一个用TypeScript(以前用CoffeeScript)实现的JVM,可以在Node.js和浏览器里直接运行Java程序。 Doppio的结构就正常多了。而且各种语义的实现也比较正确。 |