コンテンツに移動
デベロッパー

ネイティブ イメージ コンパイル - 最新情報と今後の予定

2023年2月7日
Google Cloud Japan Team

ネイティブ イメージ コンパイルの最新情報と今後の予定。

※この投稿は米国時間 2023 年 1 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。

ネイティブ イメージ コンパイルはこの数年間、Java コミュニティにおいて新しいテクノロジーとして期待されていました。簡単に説明すると、ネイティブ イメージ コンパイルはメモリ使用量を縮小し、起動時間を大幅に短縮できるので、サーバーレスのユースケースに最適です。2022 年初めに Google I/O において、このテクノロジーについて深く議論し、テストフェーズでプロジェクトを開始する方法について検討しました。それ以降、SpringOne 2021 でお約束したとおり、プロジェクトはトップクラスのサポートを受けています。この投稿では、プロジェクトの今年の進捗状況、プロジェクトの開始に関する変更点について説明し、このテクノロジーを Google Cloud で活用するにあたって役立つ最新版の資料を紹介します。

最新情報

この 1 年間、Spring Native プロジェクトは、Spring Boot 3 のネイティブ イメージ公式サポートに置き換えられる前に、互換性、バグの修正、ドキュメントの改善で多くの注目すべき進歩を成し遂げました。このトップクラスのサポートの結果、Spring Initializer のデベロッパー ツールのオプションとしてネイティブ イメージ サポートを利用できるようになり、利用開始時の構成が大幅に簡略化されました。さらに、Graal チームが 1 行で JDK をダウンロードできるメソッドをリリースしたことで、GraalVM JDK のダウンロードが簡単になりました。

その他の課題

ネイティブ イメージ コンパイルを導入するにあたり、課題となるトピックはまだいくつか残っています。

到達可能性

プロジェクトで使用するすべてのライブラリを到達可能にするには、特定のライブラリ メタデータが必要になることがあります。このような種類の問題について一般的なアドバイスを提供するのは困難ですが、Community Reachability プロジェクトを参照することでトラブルシューティングの時間と労力が節約できる可能性があります。

ネイティブ テスト

ネイティブ イメージをテストして、JVM 上で実行されているアプリと比較すると、予期しない相違点が見つかることがあります。テストにデータベース アクセスやファイル ストレージなどのバックエンド サービスが関係する場合は、特にそうです。また、このようなテストでアーティファクトをビルドするには相当な時間がかかる可能性があります。幸い、このプロセスは着実に進歩しており、関連するバグの修正が定期的に公開され、オープンソースのテストコンテナが共有メタデータ リポジトリに追加されています。

モニタリング

現在アプリケーションを JVM で配布することはないため、ネイティブ イメージ アプリケーションのモニタリングは、あまり注目されないトピックです。ネイティブ バイナリはその他のバイナリと同様にモニタリングできますが、ネイティブ イメージ コンパイル向けに提供されている固有のソリューション(JFR のサポートなど)もあります。このようなソリューションは従来の Java ワークロードのモニタリングと類似する機能を提供するため、この選択肢を知っておくと役立ちます。Graal チームがこのトピックについて便利なガイドを提供しているので、まずそちらをご覧になることをおすすめします。

今後の予定

今後も Google Cloud でのネイティブ イメージ コンパイルの利用をサポートする資料を提供していく予定です。

ネイティブ イメージ コンパイルを効率的に使用したプロジェクトの例については、Pic-A-Daily Codelab をご覧ください。この Codelab では、Storage バケットに画像を保存し、ファイル作成イベントを操作し、ネイティブ アプリ イメージとネイティブ ビジョン クライアント ライブラリを使ってイメージを処理します。その他のクライアント ライブラリのネイティブ イメージ サポートに関するリファレンス ドキュメントについては、クライアント ライブラリ ガイドをご覧ください。


- Java デベロッパー アドボケイト Aaron Wanjala
- エンタープライズ アプリ モダナイゼーション担当アーキテクト Dan Dobrin
投稿先