戻る

Javaモジュールをネイティブ実行ファイルにビルドする

GraalVM Native Imageでは、Java 9で導入されたJava Platform Module Systemがサポートされるため、モジュール化されたJavaアプリケーションをネイティブ実行ファイルに変換できます。

native-imageツールでは、モジュール関連の引数(--module(-m)、--module-path(-p)、--add-opens--add-exportsjavaランチャーと同じ))が受け入れられます。このようなモジュール関連の引数が使用されると、native-imageツール自体もモジュールとして使用されます。

すべてのモジュール関連オプションは、モジュールパスをスキャンする前に--add-readsおよび--add-modulesをサポートすることに加えて考慮されます。これにより、クラスの読み込みエラーを防ぎ、ランタイム時のモジュールインスペクションを向上させることができます。

Javaモジュールからネイティブ実行ファイルを作成するコマンドは次のとおりです。

native-image [options] --module <module>[/<mainclass>] [options]

デモの実行

モジュール式のJavaアプリケーションをネイティブ実行ファイルにビルドするには、以下の手順に従ってください。このデモでは、Mavenを使用して集められたシンプルなHelloWorld Javaモジュールを使用します。

├── hello
│   └── Main.java
│       > package hello;
│       > 
│       > public class Main {
│       >     public static void main(String[] args) {
│       >         System.out.println("Hello from Java Module: "
│       >             + Main.class.getModule().getName());
│       >     }
│       > }
│
└── module-info.java
    > module HelloModule {
    >     exports hello;
    > }

前提条件

GraalVM JDKをインストールしていることを確認してください。始め方の最も簡単な方法はSDKMAN!を使用することです。その他のインストールオプションについては、ダウンロードセクションを参照してください。

  1. デモリポジトリをダウンロードまたは複製し、ディレクトリnative-hello-module/に移動します
     git clone https://github.com/graalvm/graalvm-demos
    
     cd graalvm-demos/native-hello-module
    
  2. プロジェクトをMavenでコンパイルおよびパッケージします
     mvn package
    
  3. GraalVM JDKで実行するテスト
     java --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
    
  4. 次に、このモジュールをネイティブ実行ファイルにビルドします
     native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
    

    モジュール式のJavaアプリケーションを、プロジェクトのルートディレクトリにあるhellomoduleという名前のネイティブ実行ファイルにビルドします。これを実行できます。

     ./hellomodule