2013-08-01 60 views
18

asm.js即將到來。現在甚至有傳言稱Chrome會盡快支持它。將Java編譯爲asm.js

但到目前爲止,它已被用來編譯C/C++源代碼轉換爲JavaScript,將與接近原生的速度運行(取決於你如何定義接近原生的......)

我已經計劃使用GWT將我的Java代碼轉換爲JavaScript,但現在我想知道現在是否有一個現有的路徑/過程來編譯ASM.JS的代碼,並且那會是什麼?

還有一個原因,我們可能需要一個:Java-to-ASM.js might very well run faster then Java-to-Dalvik on some Android phone!

+0

對於那些想在瀏覽器中運行Java的人來說,模擬大部分JVM本身:http://teavm.org/和http://www.doppiojvm.org/ –

回答

8

asm.js(目前)被設計爲爲手動管理內存的分配和釋放語言的目標 - 像C/C++。它目前無法處理垃圾收集語義的語言,因爲它看起來像是一個垃圾收集運行時的JavaScript。

如果你真的想要去圓的方式,通過j2c通過Java代碼,然後通過通過emscripten C++輸出,將編譯爲asm.js.

另一種可能性是使用VMKit通過LLVM編譯器將Java代碼並傳遞通過emscripten asm.js LLVM後端...

+3

請注意,Java中的垃圾收集是用C/C++編寫的。 – Tim

2

不僅垃圾回收,但Java虛擬機寫入C/C++,asm.js對編譯「從C/C++到JavaScript的整個虛擬機,並實現JavaScript發佈JIT」的發表評論。

現在(2015年6月)這種可能性遠非真實,所以如果你喜歡它,堅持GWT(我不會推薦它)。