node-jvm 实现了纯 Node.js 环境下的 Java 虚拟机。

subchen 2013-11-01

https://github.com/YaroslavGaponov/node-jvm

 

非常简单的 jvm 实现,用 javascript ,代码清晰,初学者可以学习一下 jvm 的基本原理。

 

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的结构就正常多了。而且各种语义的实现也比较正确。
Global site tag (gtag.js) - Google Analytics