天天看點

Doppio: JVM的TypeScript實作 Node和浏覽器下直接運作Java

上次我們介紹了 node-jvm ,一個很酷的Node.js上的JVM實作。它的代碼比較直白,很容易了解。可惜的是它用CPS變換來實作每個opcode的handler。這種實作方式是編譯器的常見做法。然而由于JavaScript沒有尾遞歸優化,是以爆棧很容易發生。然後實作的細節上也有一點瑕疵,例如

long

類型、

checkcast

指令等。 Doppio 是一個基于 TypeScript 實作的JVM,可以在Node.js和浏覽器裡直接運作。Doppio比node-jvm要完善許多。
Doppio: JVM的TypeScript實作 Node和浏覽器下直接運作Java
你可以 直接在浏覽器裡體驗 Doppio

安裝

如果你想在本地安裝的話,需要安裝

node >= 0.10

wget

git clone https://github.com/int3/doppio.git

cd doppio

tools/setup.sh

make

使用

在本地運作伺服器:

make dev

tools/server.coffee --dev

以上使用dev版,如果你打算使用release版,則使用:

make release

tools/server.coffee --release

然後通過

http://localhost:8000/

通路

如果你想在浏覽器裡包含自己的代碼,可以把

.class

檔案放在

classes/

目錄下,然後再次運作

make dev

make release

目前Doppio還不支援從JARs中加載類檔案,以後會增加支援。目前需要先解壓縮JAR。

終端下一樣可以使用:

make dev-cli

node build/dev-cli/console/disassembler.js classes/demo/Fib

# doppio-dev -> node build/dev/console/runner.js

./doppio-dev classes/demo/Fib

./doppio-dev classes/demo/Fib 7        # 向JVM傳遞參數

./doppio-dev -jar my_application.jar   # 解壓縮并運作JAR

make release-cli

建構程式的優化版本,生成的代碼可以在

build/release-cli

中找到。使用

./doppio

可以調用運作時環境。

測試

運作所有測試

make test -j4

運作特定測試

sh node build/dev-cli/console/test_runner.js -h node build/dev-cli/console/test_runner.js classes/test/Strings

Doppio項目首頁