1.10. JVM とネイティブビルドモード
次のセクションでは、Mandrel または GraalVM の native-image
ツールを使用して、クラシック JVM アプリケーションおよびネイティブアプリケーションをコンパイルする方法を説明します。
1.10.1. アプリケーションをクラシック JVM アプリケーションとしてコンパイルする
アプリケーションを、JVM アプリケーションとしてコンパイルできます。このオプションは、quarkus.package.type
設定プロパティーに基づいており、次のいずれかのファイルを生成します。
-
fast-jar
: Quarkus およびデフォルトの設定オプション用に最適化された JAR ファイル。その結果、起動時間がわずかに短縮され、メモリー使用量がわずかに減少します。 -
legacy-jar
: 典型的な JAR ファイル。 uber-jar
: 単一のスタンドアロン JAR ファイル。これらの JAR ファイルはすべてのオペレーティングシステムで動作し、ネイティブイメージよりもはるかに短時間でビルドされます。
1.10.2. アプリケーションをネイティブイメージにコンパイルする
アプリケーションをネイティブイメージにコンパイルできます。その場合、quarkus.package.type
設定プロパティーを native
に設定します。
このプロパティーを使用すると、たとえば Windows の .exe
ファイルなど、選択したオペレーティングシステム専用にコンパイルされた実行可能バイナリーファイルを作成できます。これらのファイルは JAVA JAR ファイルよりも起動時間が短く、RAM 消費量も少なくなりますが、コンパイルには数分かかります。さらに、プロファイルに基づく最適化が欠落しているため、ネイティブバイナリーを使用して達成できる最大スループットは、通常の JVM アプリケーションよりも低くなります。
Mandrel を使用する
Mandrel は、GraalVM for Red Hat build of Quarkus 用に特化されたディストリビューションで、Linux コンテナー化環境をターゲットとするネイティブ実行可能ファイルをビルドする場合に推奨されるアプローチでもあります。Mandrel アプローチは、コンテナー化された環境にコンパイル出力を埋め込むのに最適ですが、Linux64 ビットのネイティブ実行可能ファイルしか提供されません。したがって、
.exe
などの結果はオプションではありません。Mandrel ユーザーは、ネイティブ実行可能ファイルのビルドにコンテナーを使用することが推奨されます。
公式 Mandrel イメージを使用して、Docker または Podman のローカルインストールでアプリケーションをネイティブモードにコンパイルするには、次のプロパティーを指定して
mvn package
コマンドを入力します。-Dquarkus.package.type=native -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:{MandrelVersion}-{JDK-ver-other}
- Mandrel を使用してネイティブ実行可能 ファイルをビルドする方法の詳細は、Quarkus アプリケーションのネイティブ実行可能ファイルへのコンパイル を参照してください。
- 利用可能な Mandrel イメージのリストは、Available Mandrel images で確認してください。
GraalVM を使用する
Mandrel は macOS および Windows プラットフォームをサポートしないため、Oracle GraalVM を使用してこれらのオペレーティングシステム上でネイティブ実行可能ファイルを構築できます。
ベアメタル Linux または Windows ディストリビューション上で Oracle GraalVM を直接使用して、ネイティブ実行可能ファイルをビルドすることもできます。このプロセスの詳細は、Oracle GraalVM README およびリリースノートを参照してください。
Oracle GraalVM を使用してネイティブ実行可能 ファイルをビルドする方法は、Quarkus アプリケーションのネイティブ実行可能ファイルへのコンパイル を参照してください。
関連情報
- ネイティブ実行可能ファイルの構築、コンパイル、パッケージ化、およびデバッグに関する詳細は、ネイティブ実行可能ファイルの ビルド を 参照してください。
- Java アプリケーションをネイティブ実行可能ファイルとして実行しようとすると発生する可能性のある問題のトラブルシューティングに役立つ情報は、ネイティブアプリケーションを 作成するためのヒント を参照してください。