第1章 Red Hat build of Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルする


アプリケーション開発者は、Red Hat build of Quarkus 3.15 を使用して、OpenShift Container Platform 環境およびサーバーレス環境で実行される、Java で書かれたマイクロサービスを作成できます。Quarkus アプリケーションは、通常の Java アプリケーションとして (Java 仮想マシン (JVM) 上で) 実行することも、ネイティブ実行可能ファイルにコンパイルすることもできます。ネイティブ実行可能ファイルにコンパイルされたアプリケーションは、対応する Java アプリケーションよりもメモリーフットプリントが小さく、短時間で起動します。

このガイドでは、Red Hat build of Quarkus 3.15 Getting Started プロジェクトをネイティブ実行可能ファイルにコンパイルする方法と、ネイティブ実行可能ファイルを設定してテストする方法を説明します。Red Hat build of Quarkus スタートガイド で作成したアプリケーションが必要になります。

Red Hat build of Quarkus を使用したネイティブ実行可能ファイルのビルドでは、以下を説明します。

  • Podman または Docker などのコンテナーランタイムを使用して、シングルコマンドでネイティブ実行可能ファイルをビルドする
  • 生成されたネイティブ実行可能ファイルを使用して、カスタムコンテナーイメージを作成する
  • OpenShift Container Platform Docker ビルドストラテジーを使用して、コンテナーイメージを作成する
  • Quarkus ネイティブアプリケーションを OpenShift Container Platform にデプロイする
  • ネイティブ実行可能ファイルを設定する
  • ネイティブ実行可能ファイルをテストする

前提条件

  • JAVA_HOME 環境変数を設定して Java SDK の場所を指定している。

  • Open Container Initiative (OCI) と互換性のあるコンテナーランタイム (Podman、Docker など)。
  • Quarkus Getting Started プロジェクトを完了している。

1.1. ネイティブ実行可能ファイルの作成

ネイティブバイナリーは、特定のオペレーティングシステムおよび CPU アーキテクチャー上で実行するために作成された実行可能ファイルです。

以下は、ネイティブ実行可能ファイルの例をいくつか示しています。

  • Linux AMD 64 ビット用の ELF バイナリー
  • Windows AMD 64 ビット用の EXE バイナリー
  • ARM 64 ビット用の ELF バイナリー
注記

Red Hat build of Quarkus では、Linux x86-64 または AArch64 ビット用の ELF バイナリーのみがサポートされています。

ネイティブ実行可能ファイルを構築する利点の 1 つは、Java 仮想マシン (JVM) を含むアプリケーションと依存関係が 1 つのファイルにパッケージ化されることです。アプリケーションのネイティブ実行可能ファイルには、次の項目が含まれています。

  • コンパイルされたアプリケーションコード
  • 必要な Java ライブラリー
  • アプリケーションの起動時間を短縮し、ディスクとメモリーのフットプリントを最小限に抑えるための仮想マシン (VM) の縮小バージョン。これは、アプリケーションコードとその依存関係に合わせて調整されています。

Quarkus アプリケーションからネイティブ実行可能ファイルを生成する場合は、コンテナ内ビルドまたはローカルホストビルドのいずれかを選択できます。次の表は、使用可能なビルドオプションとその説明を示しています。

Expand
表1.1 ネイティブ実行可能ファイルの生成に使用できるビルドオプション
ビルドオプション必須用途結果利点

コンテナ内ビルド - サポート対象

コンテナーランタイム (Podman や Docker など)

デフォルトの registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 ビルダーイメージ

ホストの CPU アーキテクチャーを使用する Linux 64 ビット実行可能ファイル

GraalVM はローカルで設定する必要がないため、CI パイプライン の実行効率が向上します。

ローカルホストビルド - アップストリームでのみサポート対象

GraalVM または Mandrel のローカルインストール

quarkus.native.builder-image プロパティーのデフォルトのローカルインストール

ビルドが実行されるマシンと同じオペレーティングシステムおよび CPU アーキテクチャーを持つ実行可能ファイル

Docker や Podman などのツールを使用できない、または使用しない開発者向けの代替手段。総じて、コンテナ内ビルドアプローチよりも高速です。

重要
  • Red Hat build of Quarkus 3.15 は、GraalVM Mandrel の製品化されたディストリビューションである Java 21 ベースの Red Hat build of Quarkus Native Builder イメージ (quarkus/mandrel-for-jdk-21-rhel8) を使用したネイティブ Linux 実行可能ファイルのビルドのみをサポートします。Quarkus コミュニティーでは他のイメージも利用できますが、それらは製品ではサポートされていないため、Red Hat によるサポートが必要な実稼働ビルドには使用しないでください。
  • ソースが 17 に基づいて記述され、Java 18 - 21 の機能が使用されていないアプリケーションでも、Java 21 ベースの Mandrel 23.1 ベースイメージを使用して、そのアプリケーションのネイティブ実行可能ファイルをコンパイルできます。
  • Red Hat build of Quarkus は、Oracle GraalVM Community Edition (CE)、Mandrel コミュニティーエディション、またはその他の GraalVM ディストリビューションを使用したネイティブ実行可能ファイルのビルドをサポートしていません。詳細は、Red Hat build of Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルする を参照してください。

1.1.1. コンテナ内ビルドを使用してネイティブ実行可能ファイルを生成する

ネイティブ実行可能ファイルを作成し、ネイティブイメージテストを実行するには、コンテナ内ビルド用に Red Hat build of Quarkus が提供する native プロファイルを使用します。

前提条件

  • Podman または Docker がインストールされている。
  • コンテナーは、8 GB 以上のメモリーにアクセスできる。
  • オプション: Quarkus CLI がインストールされている。これは、ネイティブ実行可能ファイルをビルドする方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. Getting Started プロジェクトの pom.xml ファイルを開き、プロジェクトに native プロファイルが含まれていることを確認します。

    <profiles>
      <profile>
        <id>native</id>
        <activation>
          <property>
            <name>native</name>
          </property>
        </activation>
        <properties>
          <skipITs>false</skipITs>
          <quarkus.package.type>native</quarkus.package.type>
        </properties>
      </profile>
    </profiles>
    Copy to Clipboard Toggle word wrap
  2. 次のいずれかの方法を使用して、ネイティブ実行可能ファイルをビルドします。

    • Maven を使用:

      • Docker の場合:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true
        Copy to Clipboard Toggle word wrap
      • Podman の場合:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
        Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用:

      • Docker の場合:

        quarkus build --native -Dquarkus.native.container-build=true
        Copy to Clipboard Toggle word wrap
      • Podman の場合:

        quarkus build --native -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
        Copy to Clipboard Toggle word wrap

        手順を実行した結果

        これらのコマンドを実行すると、target ディレクトリーに *-runner バイナリーが作成されます。その場合は、以下が適用されます。

      • *-runner ファイルは、Quarkus が生成するビルドされたネイティブバイナリーです。
      • target ディレクトリーは、Maven アプリケーションをビルドするときに Maven が作成するディレクトリーです。

        重要

        Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルすると、分析および最適化の際にメモリーを大量に消費します。quarkus.native.native-image-xmx 設定プロパティーを設定して、ネイティブコンパイル時に使用されるメモリーの量を制限できます。メモリー制限を低く設定すると、ビルド時間が長くなる可能性があります。

  3. ネイティブ実行可能ファイルを実行するには、以下のコマンドを入力します。

    ./target/*-runner
    Copy to Clipboard Toggle word wrap

1.1.2. ローカルホストビルドを使用してネイティブ実行可能ファイルを生成する

Docker または Podman を使用しない場合は、ネイティブ実行可能ファイルの作成と実行に Quarkus ローカルホストビルドオプションを使用します。

ローカルホストビルドアプローチを使用すると、コンテナーを使用した場合と比べて高速になるため、Linux オペレーティングシステムを使用するマシンに適しています。

重要

Red Hat build of Quarkus では、本番環境での次の手順の使用はサポートされていません。この方法は、テストで、もしくは Docker や Podman が使用できない場合のバックアップアプローチとしてのみ使用してください。

前提条件

  • Quarkus の Building a native executable ガイドに従って正しく設定された、Mandrel または GraalVm のローカルインストール。

    • GraalVM インストールの場合は、native-image もインストールされている必要があります。
  • オプション: Quarkus CLI がインストールされている。これは、ネイティブ実行可能ファイルをビルドする方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. GraalVM または Mandrel の場合は、次のいずれかの方法を使用してネイティブ実行可能ファイルをビルドします。

    • Maven を使用:

      ./mvnw package -Dnative
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用:

      quarkus build --native
      Copy to Clipboard Toggle word wrap

      手順を実行した結果

      これらのコマンドを実行すると、target ディレクトリーに *-runner バイナリーが作成されます。その場合は、以下が適用されます。

      • *-runner ファイルは、Quarkus が生成するビルドされたネイティブバイナリーです。
      • target ディレクトリーは、Maven アプリケーションをビルドするときに Maven が作成するディレクトリーです。

        注記

        ネイティブ実行可能ファイルをビルドすると、quarkus.profile プロパティーで変更されない限り、prod プロファイルが有効になります。

  2. ネイティブ実行可能ファイルを実行します。

    ./target/*-runner
    Copy to Clipboard Toggle word wrap

関連情報

詳細は、Quarkus の「ネイティブ実行可能ファイルの構築」ガイドの ネイティブ実行可能ファイルの作成 セクションを参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat