名前
jaotc - コンパイル済のJavaメソッドのネイティブ・コードを生成するJava静的コンパイラ
シノプシス
jaotc [options] [name | list]
- options
- スペースで区切ったコマンド行オプション。 「jaotcオプション」を参照してください。
- name
- Javaメソッドのコンパイル元のJavaクラスまたはjarファイル。
- list
- クラス名、モジュール、jarファイルまたはクラス・ファイルが含まれるディレクトリのコロンで区切られた(
:)リスト。
説明
jaotcコマンドはJava Ahead-Of-Time (AOT)静的コンパイラで、指定されたJavaクラス・ファイル内のJavaメソッドの共有ライブラリの形式でネイティブ・コードを生成します。 Java Virtual MachineはこれらのAOTライブラリをロードし、その中からネイティブ・コードを使用します(そのコードが該当するJavaメソッドが呼び出された場合)。 jaotcを使用すると、JITコンパイラがこれらのJavaメソッドの高速ネイティブ・コードを(バイトコードのコンパイルによる)で生成するのを待つ必要はありません。 コードはすでにjaotcによって生成されており、すぐに使用できる状態になっています。 同様に、高速コンパイルされたネイティブ・コードをかわりに実行できるため、これらのメソッドをインタプリタで実行する必要はありません。
ノート:
jaotcコマンドは試験的です。 詳細は、「JEP 295: 試行時間コンパイル」を参照してください。
jaotcオプション
--outputfile- 出力ファイル名。 デフォルト名は"unnamed.so"です。
--class-nameclass-names- コンパイルするJavaクラスのリスト。
--jarjar-files- コンパイルするJARファイルのリスト。
--modulemodules- コンパイルするJavaモジュールのリスト。
--directorydirs- コンパイルするファイルを検索するディレクトリのリスト。
--search-pathdirs- 指定されたファイルを検索するディレクトリのリスト。
--compile-commandsfileコンパイル・コマンドを含むファイルの名前:
exclude- 指定したメソッドのコンパイルを除外します。
compileOnly- 指定されたメソッドのみをコンパイルします。
正規表現を使用して、クラスおよびメソッドを指定します。 次に例を示します。
exclude sun.util.resources..*.TimeZoneNames_.*.getContents\(\)\[\[Ljava/lang/Object; exclude sun.security.ssl.* compileOnly java.lang.String.*--compile-for-tiered- 階層化コンパイルのプロファイリング・コードを生成します。 デフォルトでは、プロファイリング・コードは(将来変更される可能性があります)を生成しません。
--compile-with-assertions- Javaアサーションを使用してコードを生成します。 デフォルトでは、アサーション・コードは生成されません。
--compile-threadsnumber- 使用するコンパイル・スレッドの数を設定します。 デフォルト値は
min(16, available_cpus)です。 --ignore-errors- クラスのロード時にスローされたすべての例外を無視します。 デフォルトでは、クラスのロードで例外がスローされた場合、ツールはコンパイルを終了します。
--exit-on-error- コンパイル・エラーを終了します。 デフォルトでは、失敗したコンパイルはスキップされ、他のメソッドのコンパイルは続行されます。
--info- コンパイル・フェーズに関する情報を出力します。
--verbose- コンパイル・フェーズの詳細を出力します。
--debug- 包括的な詳細を印刷します。
--helpまたは-hまたは-?- 標準オプションのサマリーを出力し、ツールを終了します。
--version- バージョン情報を出力します。
-Jflag- ランタイム・システムに渡すフラグを提供します。 複数のフラグを渡すには、必要なフラグまたはフラグ引数ごとにこのオプションのインスタンスを指定します。
jaotcの例
AOTコンパイルを実行するには、jaotcツールを使用します。
jaotc --output libHelloWorld.so HelloWorld.class
アプリケーションの実行中に生成されたAOTライブラリを指定します:
java -XX:+UnlockExperimentalVMOptions -XX:AOTLibrary=./libHelloWorld.so HelloWorld