GraalVMの概要
GraalVMは、ネイティブ・イメージを事前にコンパイルした高度なJDKです。
GraalVMは、アプリケーションのパフォーマンスを高めると同時にリソースの消費を削減します。つまり、アプリケーションの効率性を高め、ITコストを削減します。これは、Javaアプリケーションを事前にネイティブ・バイナリにコンパイルすることで実現されます。このバイナリは小さく、最大100倍高速に起動し、ウォームアップなしで最高のパフォーマンスを提供し、Java仮想マシン(JVM)で実行されるアプリケーションよりも少ないメモリーとCPUを使用します。プロファイルに基づく最適化およびG1 (ガベージ・ファースト)ガベージ・コレクタにより、JVMで実行されるアプリケーションと比較して、レイテンシが低く、ピーク・パフォーマンスとスループットが同等かそれ以上となります。
主な利点
GraalVMの主な利点は次のとおりです:
- 低リソース使用: GraalVMによって事前にコンパイルされたJavaアプリケーションでは、実行に必要なメモリーおよびCPUが少なくなります。ジャスト・イン・タイムのコンパイルにメモリーとCPUサイクルが費やされることはありません。その結果、アプリケーションの実行に必要なリソースが少なくなり、大規模な運用のコストが低くなります。
- 高速起動: GraalVMを使用すると、Javaアプリケーションの一部を実行時ではなくビルド時に初期化することでアプリケーションをより迅速に起動でき、ウォームアップなしで予測されたピーク・パフォーマンスを即座に達成できます。
- コンパクトなパッケージング: GraalVMによって事前にコンパイルされたJavaアプリケーションは小さいため、軽量のコンテナ・イメージに簡単にパッケージ化して、迅速かつ効率的にデプロイできます。
- セキュリティの向上: GraalVMは、到達不可能なコード(未使用のクラス、メソッドおよびフィールド)、ジャストインタイム・コンパイル・インフラストラクチャおよびビルド時初期化コードを除外することで、Javaアプリケーションの攻撃対象領域を減らします。GraalVMの閉世界仮説により、リフレクション、シリアライズなどの動的機能を実行時に無効にすることで、アプリケーションが不明なコードをロードできなくなり、ビルド時にそのようなクラス、メソッドおよびフィールドの明示的なインクルード・リストが必要になります。GraalVMは、バイナリにソフトウェア部品表(SBOM)を埋め込むことができるため、一般的なセキュリティ・スキャナを使用して、公開されている共通脆弱性(CVE)についてJavaアプリケーションを簡単にチェックできます。
- クラウド・ネイティブ・マイクロサービスの簡単なビルド: Micronaut、Spring Boot、Helidon、Quarkusなどの一般的なマイクロサービス・フレームワーク、およびOracle Cloud Infrastructure (OCI)、Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azureなどのクラウド・プラットフォームは、すべてGraalVMをサポートしています。これにより、バイナリとしてコンパイルされ、小規模なコンテナにパッケージ化され、最も一般的なクラウド・プラットフォームで実行されるクラウド・ネイティブJavaマイクロサービスを簡単にビルドできます。
- Pythonおよびその他の言語でのJavaアプリケーションの拡張: GraalVMを使用すると、Python、JavaScriptなどの言語を埋め込み、Javaアプリケーションを拡張できます。
- 既存の開発およびモニタリング・ツールの使用: 既存のJavaアプリケーション開発およびモニタリング・ツールは、GraalVMアプリケーション・バイナリと連携します。GraalVMは、MavenおよびGradleのビルド・プラグインと、CI/CDのGitHubアクションを提供します。GraalVMは、Javaフライト・レコーダ(JFR)、Java Management Extensions (JMX)、ヒープ・ダンプ、VisualVMおよびその他のモニタリング・ツールをサポートしています。GraalVMは、既存のJavaエディタ/IDEおよびJUnitなどのユニット・テスト・フレームワークと連携します。
ライセンスおよびサポート
Oracle GraalVMは、GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versionsに基づいてライセンスされます。GFTCは、「License for Early Adopter Versions」を含むライセンスの条件に従うことを条件に、商業活動や生産に従事するユーザーなど、すべてのユーザーに対し使用を許可することを目的としています。再配布は有料でない限り許可されます。Oracle GraalVMはOracle Cloud Infrastructureでも無料でご利用いただけます。Oracle GraalVMライセンスの詳細は、「Oracle Java SEライセンスに関するFAQ」を参照してください。
GraalVM Community Editionは、GitHub上で使用可能なソースからビルドされたオープン・ソース・プロジェクトであり、GNU General Public License version 2 with the Classpath Exceptionに基づいて配布されます(Javaの条項と同じ)。個々のGraalVMコンポーネントのライセンスを確認してください。これは通常、特定の言語のライセンスから派生しますが、異なる場合もあります。
次に読むもの
- インストレーション・ガイドから開始してください。
- GraalVMは、Java HotSpot仮想マシンに基づいています。Java仮想マシンとしてのGraalVMおよびJust-in-Timeコンパイラ(Graalコンパイラ)の最適化の詳細を参照してください。
- GraalVMネイティブ・イメージを初めて使用する場合も、使用経験がほとんどない場合も、ネイティブ・イメージのスタート・ガイドに進んでください。ユーザー・ガイドを参照することをお薦めします。
- 他の言語のJavaへの埋込みに関心のある開発者は、言語の埋込みのドキュメントに直接進みます。
- プログラミング言語のインタプリタをビルドし、GraalVMで実行する開発者は、Truffle言語実装フレームワークのドキュメントに進みます。
- GraalVMのセキュリティに関する考慮事項についてさらに学習するには、セキュリティ・ガイドを参照してください。
- 入手可能なドキュメントで必要な答えが見つからない場合、またはトラブルシューティングに関する質問がある場合は、Slackのチャンネルで助けを求めたり、GitHubのイシューを送信してください。