Categories
程式開發

CheerpJ 2.0:使用WebAssembly將Java應用移植到瀏覽器


LeaningTech最近發布了CheerpJ的第二個主要版本。 CheerpJ 2.0可以將Java應用程序轉換為HTML、WebAssembly和JavaScript的混合體,這樣開發人員就可以在瀏覽器中運行Java應用程序(包括小程序),或者將Java庫集成到Web應用程序中。 CheerpJ 2.0使用WebAssembly提高運行時的速度。

在WebAssembly和JavaScript中,CheerpJ 2.0提供了一個完整的(100%的Java 8語言)、模塊化的、優化了的Java 8 SE運行時庫。運行時由一組基於瀏覽器的各種不同功能的原生實現(例如,使用Web Worker的多線程、使用Web Audio的音頻、基於IndexedDB的文件系統訪問等等)來補充。 CheerpJ 2.0全新地利用了WebAssembly的運行時模塊,提高了運行時的速度,並減少了程序包的大小,同時降低了大量的計算成本(例如字體渲染)。

CheerpJ之前的版本為一個簡單的增量計數器應用程序就提供了超過1MB的JavaScript。 CheerpJ 2.0通過僅交付運行時所需的組件來努力降低下載的大小。然而,在考慮了Wasm模塊和等效的JavaScript模塊在解析時間上的增加之後,CheerpJ 2.0應用程序可能仍然會顯示一個用戶可感知的等待時間(從用戶使用該應用程序時開始計時)。因此,CheerpJ並不適用於開發人員的所有用例。 LeaningTech的首席執行官Stefano De Rossi特別強調了CheerpJ不支持的目標(non-goal):

CheerpJ不打算在從頭開始編寫Web應用程序(…),我們不認為CheerpJ是Java的Blazor等價物(…)

Rossi詳細介紹了CheerpJ努力解決的三個主要用例。第一個用例涉及到遺留Java應用程序和小程序(applet)的轉換。由於可以在現代瀏覽器中分發、訪問和使用,這些遺留應用程序的壽命可能會延長。 Rossi提到,數以百計的遺留教育Java小程序可能會從中受益。

第二個用例涉及到將現有的Java客戶端遷移到基於瀏覽器的應用程序,保留現有的業務邏輯並將其轉換為JavaScript/WebAssembly,同時用HTML重寫用戶界面。在第三個用例中,開發人員可以轉換現有的Java庫並將其集成到Web應用程序中。

Rossi在接受techUK的採訪時,總結了與WebAssembly相關的優勢:

多虧了Wasm,我們才能製造出將原生桌面應用程序和移動應用程序轉換為標準Web應用程序的編譯器和轉換工具,這些程序可以被任何帶有瀏覽器的設備使用,而不管這些設備使用的是何種操作系統以及瀏覽器的供應商如何。

這意味著我們可以使用現有的Java、Flash或C++應用程序,這些應用程序都是任務關鍵型的,並且都花費了數年的時間來開發;也意味著我們可以將它們自動地移植到HTML5 ,而無需人工干預。

至關重要的是,編譯到WebAssembly意味著我們的組織不再依賴遠程執行和基於雲的虛擬化來交付應用程序了。通過使用終端用戶設備上的計算能力來運行應用程序,可以將維護和運行成本降到最低。

CheerpJ是閉源的,但它可以免費用於非商業目的以及技術評估;其他用途可能需要許可證。開發人員可以使用在線平台編寫Java代碼,並在瀏覽器中實時渲染Java代碼。

Leaning Technologies是一家計算機軟件公司,專門從事WebAssembly和可編譯為JavaScript的解決方案和工具的研究,以將應用程序轉換為Web應用程序。 Leaning Technologies致力於為大型遺留應用程序提供一種自動化的、遷移低成本的、現代化的解決方案。

將Java應用程序編譯為Web應用程序的其他解決方案包括GWTTeaVMJSweetVaadin FlowJ2CL 等。 JWebAssembly開源項目當前正在開發一個Java字節碼到WebAssembly(Java-bytecode-to-WebAssembly)的編譯器。

原文鏈接:

WebAssembly Used by Java-to-Web Compiler CheerpJ 2.0 to Port Java Applications to Browsers