手机浏览器Java Script_Doppio: JVM的TypeScript实现 Node和浏览器下直接运行Java

上次我们介绍了node-jvm,一个很酷的Node.js上的JVM实现。它的代码比较直白,很容易理解。可惜的是它用CPS变换来实现每个opcode的handler。这种实现方式是编译器的常见做法。然而由于JavaScript没有尾递归优化,因此爆栈很容易发生。然后实现的细节上也有一点瑕疵,例如long类型、checkcast指令等。

Doppio是一个基于TypeScript实现的JVM,可以在Node.js和浏览器里直接运行。Doppio比node-jvm要完善许多。

0e4a06e58beb0a5d02e4b4d3a518b737.png

安装

如果你想在本地安装的话,需要安装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

如果你想在浏览器里包含自己的代码,可以把.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值