21

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

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

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

另一个原因是:Java-to-ASM.js 在某些 Android 手机上的运行速度可能比 Java-to-Dalvik 更快!

4

3 回答 3

10

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

如果您真的想绕道而行,请通过j2c传递 Java 代码,然后通过将编译为 asm.js的emscripten传递 C++ 输出。

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

于 2013-11-11T06:42:22.340 回答
3

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

于 2020-02-27T16:31:54.657 回答
2

不仅垃圾收集,Java VM 都是用 C/C++ 编写的,asm.js 评论“将整个 VM 从 C/C++ 编译为 JavaScript,并实现 JavaScript 发射 JIT”的可能性。

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

于 2015-06-17T21:42:18.433 回答