圖片來自 Ricardo Gomez Angel

Java 編譯成 WebAssembly 的工具

古早的年代想在網頁內埋 Java 還有 Java applet 可以用,在 Java applet 式微後,找來找去比較可以的辦法大概就是編譯成 WebAssembly 了吧!

想要把 Java 編譯成 WebAssembly,有下面三個工具可以選用:

TeaVM

TeaVM 是個 Java 到 JavaScript 的轉碼工具。TeaVM 接受的來源是 Java bytecode,意即不只是 Java,只要能編譯成 Java bytecode 的語言,包括 Kotlin 等,都可以透過 TeaVM 編譯成 WebAssembly 或轉碼成 JavaScript。

不過 Java 到 WebAssembly 這一部份還只在實驗階段,只適合拿來當玩具,不適合拿來做工具。

CheerpJ

與樓上一樣是 Java bytecode 到 WebAssembe 或 JavaScript 的工具。背後有商業公司支持,因此令人感覺發展的完整度也較高,相對來說,商業用途就必須付費,只有非商業用途免費,付費除了買授權外,同時也會有顧問提供技術支援,果然天下沒有白吃的午餐啊。

JWebAssembly

從名字就可以聯想到 JWebAssembly 只專注於 Java bytecode 到 WebAssembly 的轉換。一樣比較偏玩具性質。

小結

一輪調查完畢,雖然三個工具各有特色,也都各有限制,技術上的限制可能是某一些 Java 的特性很難被完整的轉換,非技術上的限制就是錢錢的問題啦,目前並沒有既免費又傻瓜的轉換器這樣的東西存在,不過還是謝謝佛心的 CheerpJ 有提供非商用的免費版給大家。