Java言語アーキテクトのMark Reinhold氏は、新しいOpenJDKプロジェクトLeydenの作成を提案した。これは起動が高速でメモリが少ない静的アプリケーションバイナリだ。一度承認されて完了すれば、 これは開発者がJavaコード (just-in-time) をネイティブアプリケーション (ahead-of-time) にコンパイルすることができるようになり、 GraalVMのネイティブモードに似た機能を提供する。
このプロジェクトはRed HatはもちろんReinhold氏を通じてOracleから概念的な支持を受けている。プロジェクトの提案を受けて、RedHatのOpenJDKリーダであるAndrew Haley氏は「これは素晴らしいニュースだ。そろそろ静的なAOTコンパイルを引き入れる時期です。成し遂げよう!」と同意した。類似した感想はAmazonから来た。PaulHohensee氏は「この提案を見てとても嬉しいです」と述べている。RedHatはJava コミュニティ・プロセス・エクゼクティブ委員会のメンバーであり、AmazonはJavaディストリビューションであるAmazon Correttoを支持する有力なコミュニティー・メンバーだ。AWS LambdaやAzure Functionsのようなサーバレスフレームワークのユーザーは、使用時間に応じて料金を支払うため、Leydenの恩恵を受けることができる。起動と実行に要する時間は、コールド・スタートのコストが削減でき、呼び出しごとのコストが最小コストのしきい値に近づいたり下回ることができるだろう。
LeydenとGraalVMは、開発者がアプリケーションを書いたり構築したりするために従う同様の足かせを介して動作だろう。
-
開発者は、選択されたライブラリ (通常はJARファイル) のAPIに接続し、依存するカスタムソースコードを作成します。
-
カスタムコードは、1つまたは複数のJARファイルベースでパッケージ化されたバイトコードにコンパイルされる。
-
Leydenは、アプリケーションの実行方法に関する新しい分割するパスを導入するだろう。
-
アプリケーションは従来のコースに従ってバイトコードを実行し、アプリケーションの実行時にアプリケーションの「ホットスポット」をネイティブのマシンコードに最適化する。
-
OS固有のライブラリに対してアプリケーションをコンパイルし、他のネイティブコンパイラツールと同様に単一のOS上で動作するネイティブアプリケーションを作成する新しい機会です。
-
このプロジェクトは、開発者がアプリケーションを配布するために使用している現在のJavaに存在する機能の上に構築され、改善するだろう。
- javapackagerは、1つのアプリケーションのためにカスタマイズされ組み込まれたJREとともにアプリケーションを配布するために使用される。エンド・ユーザーは、各アプリケーションを実行するためにシステム全体にJavaのインストールを必要としない。これは、アプリケーションの起動場所が、同梱されたJava実行可能ファイルを通り抜けるためだ。
- jaotcはいくつかのプラットフォーム用の実験的なコンパイラで、ネイティブの実行ファイルを生成します。Leydenはjaotcの上に直接拡張されるかもしれない。.
ネイティブにコンパイルされたアプリケーションの利点は、RedHatの超音速・亜原子のJavaアプリケーションフレームワークであるQuarkusを通じて既に顕著に見えている。QuarkusはGraalVMネイティブ・イメージを活用して、サーバーレス関数としての最初の要求または起動時に「超音速の」、ネイティブにコンパイルされたアプリケーションが元のJavaバイトコードよりも小さい「亜原子」アプリケーションを生成する。Quarkusのホームページには、これらのメトリックが、視覚的に比較できるボックス付きのわかりやすいチャートで表示される。
- JDKモードでは、CRUDアプリは145 MBのRAMを使用。
- ネイティブモードでは、CRUDアプリは28 MB RAMを使用し、約80%減少。
- JDKモードでは、CRUDアプリは最初のHTTP応答まで2.033秒。
- ネイティブモードでは、CRUDアプリは0,042秒かかり、約98%減少。
Leydenの完了には期限がなく、プロジェクトを日付駆動ではなく機能駆動にできる。Javaの6ヶ月のリリース周期で、効果的なフィードバックサイクルを確立するために、評価候補がリリースの中で現れるだろう。