将Java编译为asm.js

时间:2013-08-01 11:14:27

标签: java asm.js

asm.js即将到来。现在甚至有传言称Chrome很快会完全支持它。

但到目前为止,它已被用于将C / C ++源代码编译成JavaScript,它将以接近原生速度运行(取决于您如何定义近原生...)

我一直计划使用GWT将我的Java代码转换为JavaScript,但现在我想知道当前是否存在将纯 Java源代码编译到ASM.JS的现有路径/过程,那将是什么?

人们可能想要的另一个原因是:Java-to-ASM.js might very well run faster then Java-to-Dalvik on some Android phone!

3 个答案:

答案 0 :(得分:9)

asm.js(当前)被设计为手动管理内存分配和释放的语言的目标 - 如C / C ++。它目前无法处理具有垃圾收集语义的语言,因为可能看起来它是一个垃圾收集运行时的JavaScript。

如果您真的想要全面了解,请通过j2c传递Java代码,然后通过emscripten传递该C ++输出,这将编译为asm.js。

另一种可能性是使用VMKit通过LLVM编译器传递Java代码,并通过emscripten asm.js llvm后端传递...

答案 1 :(得分:2)

不仅垃圾收集,而且Java VM都是用C / C ++编写的,asm.js评论the possibility编译“从C / C ++到JavaScript的整个虚拟机,并实现发出JavaScript的JIT。”。

现在(2015年6月)这种可能性远非真实,所以如果你愿意,坚持使用GWT(我不推荐它)。

答案 2 :(得分:2)

从2020年开始,您可能希望转换为Web程序集而不是asm.js。这些工具目前可用: