看準在瀏覽器執行Java應用程式的需求,Leaning Technologies新推出CheerpJ 3.0,這是一個由HTML5和WebAssembly所開發的JVM替代解決方案,可在瀏覽器中執行Applet與Java應用程式。由CheerpJ 3.0架構升級帶來的多項優勢,不只能讓現有的Java應用程式都搬遷到瀏覽器執行,而且可能影響開發者對網頁應用程式開發語言的選擇。

CheerpJ解決方案的目的是要支援在瀏覽器中,執行大型且未經修改的Java應用程式和Applet,除了需要標準HTTP伺服器之外,CheerpJ不需要任何伺服器端元件,就可以讓Java應用程式在瀏覽器執行。

CheerpJ的特點包括不需要存取原始碼,僅在.class和.jar檔案層級運作,因此第三方函式庫、相依關係和經過程式碼混淆工程的程式,都不會對CheerpJ執行Java造成問題。而且CheerpJ還支援進階Java功能,完全支援任何Java應用程式和OpenJDK Runtime本身會使用的反射、多執行緒等功能,因此開發者將程式放到CheerpJ上執行,並不需要進行任何修改。

因為CheerpJ以未經修改的OpenJDK為基礎,因此即便在瀏覽器上運作,其行為也和原生JVM相同,其模擬層也都確保檔案系統、網路、列印、剪貼簿和其他子系統運作順暢。

但是舊版的CheerpJ存在一些問題,由於原先CheerpJ的架構使用Ahead-of-Time(AOT)編譯,這會造成系統部署和整合上的困難,而且AOT編譯模型又與Java靈活性衝突,在處理複雜框架和重複類別的時候存在一些限制。

在原架構中,要在Java應用程式添加相依項目,可能需要在執行時下載大量檔案,且還要經過解析和執行階段,如此會大幅影響應用程式的啟動速度。另外,原本架構在支援Java 9及以上版本存在困難,開發團隊需要進行繁瑣的工作,才能提供額外的版本和子版本支援。

CheerpJ 3.0的出現便是要解決這些問題,新版本是一個以WebAssembly為基礎的Java虛擬機器架構。在新版本中,CheerpJ不再使用AOT,而是轉向使用JIT編譯,CheerpJ 3.0採用多層執行模型,以快速直譯器處理很少執行的程式碼,並且運用JIT編譯器處理經常執行的程式碼,因此未使用的類別和程式碼可能不會被執行或是生成,如此便能提高應用啟動效能。

由於沒有AOT編譯器或是.jar.js檔案,所以將CheerpJ 3.0整合到現有的HTML頁面,只需要幾行程式碼就能完成。新的JIT編譯方法模擬了JVM運作方式,因此消除了重複類別所造成不相容的狀況。開發團隊將100%的OpenJDK原生程式碼,編譯成為WebAssembly以支援最新的Java版本,該方法也可滿足開發者需要支援特定Java版本的需求。

基於多項架構更新,CheerpJ 3.0現在可被視為一個完整的JVM替代解決方案。官方預計會在2023年夏季正式釋出CheerpJ 3.0,不過現在開發者已經可以在客戶端環境JavaFiddle先行嚐鮮,編譯、執行和共享Java程式碼。

熱門新聞

Advertisement