2017-04-21 83 views

回答

5

TeaVM可用於將JVM字節碼轉換爲WebAssembly。您可以在https://github.com/konsoletyper/teavm處簽出項目主頁。

TeaVM的核心可以將JVM字節碼轉換爲JS和WebAssembly。 WebAssembly支持處於早期階段,但有些演示可用於比較簡單的JBox2D仿真與GWT,TeaVM(JS輸出)和TeaVM(WASM輸出)的性能,這些都非常令人印象深刻。

請注意,WebAssembly目前不能直接訪問DOM或其​​他JavaScript API。同樣在目前的MVP中,不支持不透明數據類型甚至GC。然而,如上述演示所示,可以從JS向WASM進行向上/向下調用,並使用一些JS技巧進行回放。

8

請參閱https://github.com/mbasso/awesome-wasm#compilers - 現在它只是C/C++,其他則是實驗性的,但「實驗」部分的數量會增加。

目前WebAssembly僅支持扁平線性內存。這適用於C/C++/Rust和很多其他語言,但大多數流行的現代語言都需要垃圾回收器才能運行。這是WebAssembly的「後MVP功能」(請參閱​​https://github.com/WebAssembly/design/issues/1079)。現在唯一的選擇是使用一些自定義代碼在wasm內部實現垃圾回收器。

+2

值得一提的是,asm.js可以輕鬆編譯爲wasm和asm.js _is_ javascript。也就是說,編譯javascript會更困難,因爲它通常缺少即時可用的上下文信息。 – Culex

27

WebAssembly支持不斷髮展。現在,它是由下列語言支持:

有正在進行積極工作,爲下列語言:

關於JavaScript,不太可能獲得支持,因爲WebAssembly是強類型彙編語言。