LeaningTechはCheerpJのメジャーイテレーション第2弾を先日リリースした。CheerpJ 2.0では、JavaアプリケーションをHTML、WebAssembly、JavaScriptの混合に変換できる。そのため、開発者はJavaアプリケーション(アプレットを含む)をブラウザで実行したり、JavaライブラリをWebアプリケーションに統合できる。CheerpJ 2.0ではWebAssemblyを利用して実行速度を向上させる。
CheerpJ 2.0は、完全な(Java 8言語の100%)モジュール化され最適化されたJava 8 SEランタイムライブラリをWebAssemblyとJavaScriptで提供する。ランタイムは、さまざまな機能(例:web workersによるマルチスレッド、Web Audioによるオーディオ、IndexedDB上のファイルシステムアクセスなど)のブラウザベースのネイティブ実装の集まりによって補完される。CheerpJ 2.0では、新たにWebAssemblyのランタイムモジュールを活用して実行速度を向上させ、計算コストの高いパッケージ(フォントレンダリングなど)のサイズを縮小する。
CheerpJの以前のバージョンでは、単純な増加するカウンタアプリケーション用のJavaScriptが1MB以上で出荷されていた。CheerpJ 2.0は、ランタイムに必要なコンポーネントのみを出荷することで、ダウンロードサイズを小さくすることを目指している。しかし、Wasm モジュールと同等の JavaScript モジュールの解析時間の増加をもたらした後、CheerpJ 2.0 アプリケーションは、ユーザーがアプリケーションを使用し始めるまでかなりの待ち時間を示すかもしれない。その結果、CheerpJはすべての開発者のユースケースに適合するわけではない。特に、LeaningTechのCEOであるStefano De Rossi氏は、CheerpJのゴールではないことを強調した。
CheerpJはWebアプリケーションをゼロから書くことを目的としたものではない(…)。CheerpJはJavaのBlazorと同等のものとは考えていない(…)。
Rossi氏は、CheerpJが取り組む3つの主要なユースケースを詳述した。最初のユースケースは、レガシーなJavaアプリケーションとアプレットの変換に関するものだ。このようなレガシーアプリケーションは、最新のブラウザで配布、アクセス、使用することができるため、その寿命が延びる可能性があるだろう。Rossi氏は、何百ものレガシー教育用Javaアプレットが例えば恩恵を受けるかもしれないことに言及した。
2つ目のユースケースでは、既存のJavaクライアントをブラウザベースのアプリケーションに移行に関わる。既存のビジネスロジックを維持してJavaScript/WebAssemblyに変換しながら、HTMLでユーザーインターフェースを書き換える。3つ目のユースケースでは、開発者は既存のJavaライブラリを変換して、Webアプリケーションに統合するだろう。
Rossi氏はtechUKのインタビューで、WebAssemblyと連動した利点をまとめた。
Wasmのおかげで、ネイティブのデスクトップやモバイルアプリケーションを標準的なWebアプリケーションに変換するコンパイラや変換ツールを作れる。それはOSやブラウザベンダーを問わず、ブラウザを搭載したあらゆるデバイスで利用できる。
つまり、ミッションクリティカルで開発に何年もかかった既存の Java、Flash、または C++ アプリケーションを、手動で介在することなく、自動的に HTML5 に移植できる。
決定的に、WebAssemblyにコンパイルすることは、アプリケーションを配信するために組織がリモート実行やクラウドベースの仮想化に頼らないことを意味する。これにより、アプリケーションを実行するためにエンドユーザーの機器の計算能力を使用することで、メンテナンスとランニングコストを最小限に抑えられる。
CheerpJはクローズドソースですが、非営利目的での利用や技術評価のために無料で利用できる。他のユーザはライセンスが必要だ。開発者がJavaコードを書き、それがブラウザでリアルタイムに描画されるのを見られるオンラインの遊び場が用意されている。
Leaning Technologiesは、WebAssemblyとJavaScriptへのコンパイルソリューションとアプリケーションをWebアプリに変換するためのツールに特化したコンピュータソフトウェア会社だ。Leaning Technologiesは、大規模なレガシーアプリケーション向けに、自動化された低コストの移行およびモダナイゼーションソリューションを提供することに努めている。
その他、JavaアプリケーションをWebアプリケーションにコンパイルするソリューションとしては、GWT、TeaVM、JSweet、Vaadin Flow、J2CLなどがある。JWebAssemblyオープンソースプロジェクトでは、現在JavaのバイトコードをWebAssemblyへ変換するコンパイラを開発している。