jlink
ツールは、一連のモージュールとその依存性をカスタム・ランタイム・イメージとしてアセンブルして最適化する場合に使用できます。
形式
jlink [options] --module-path modulepath --add-modules module [,module...]
options
スペースで区切ったコマンド行オプション。「jlinkのオプション」を参照してください。
modulepath
jlink
ツールで参照可能なモジュールを検出するパス。これらのモジュールは、モジュラJARファイル、JMODファイル、展開したモジュールのいずれかです。
module
ランタイム・イメージに追加するモジュールの名前。jlink
ツールにより、これらのモジュールとその推移的な依存性が追加されます。
説明
jlink
ツールでは、一連のモジュールをその推移的な依存性とともにリンクして、カスタム・ランタイム・イメージを作成します。
注意:
開発者は、カスタム・ランタイム・イメージの更新を担当します。
カスタム・ランタイム・イメージとは異なり、WebにデプロイされたJavaアプリケーションは、アプリケーション・アップデートが入手可能になるとすぐに、Webからそのアップデートを自動的にダウンロードします。Java自動更新メカニズムでは、毎年数回、最新のセキュアなバージョンへのJREの更新を処理します。カスタム・ランタイム・イメージには、自動更新の組込みサポートがありません。
jlinkのオプション
--add-modules mod [,mod...]
指定のモジュールmod
をルート・モジュールのデフォルト・セットに追加します。ルート・モジュールのデフォルト・セットは空です。
--bind-services
サービス・プロバイダ・モジュールとその依存性をリンクします。
-c ={0|1|2}
または--compress={0|1|2}
リソースの圧縮を有効にします。
0
: 圧縮なし1
: 定数文字列の共有2
: ZIP--disable-plugin pluginname
指定されたプラグインを無効にします。サポートされるプラグインのリストは、「jlinkのプラグイン」を参照してください。
--endian {little|big}
生成されるイメージのバイト順を指定します。デフォルト値は、システムのアーキテクチャの形式です。
-h
または--help
ヘルプ・メッセージを出力します。
--ignore-signing-information
ランタイム・イメージ内で署名付きモジュラJARがリンクされている場合、致命的エラーを抑制します。署名付きモジュラJARの署名関連ファイルは、ランタイム・イメージにコピーされません。
--launcher command=module
または--launcher command=module/main
モジュールのランチャ・コマンド名またはモジュールおよびメイン・クラスのコマンド名(モジュールとメイン・クラス名はスラッシュ(/
)で区切ります)を指定します。
--limit-modules mod [,mod...]
参照可能なモジュールの領域を、指定されたモジュールmod
の推移閉包内にあるモジュールと、メイン・モジュール(存在する場合)、さらに--add-modules
オプションで指定されたその他のモジュールに制限します。
--list-plugins
コマンド行オプションによってアクセスできる使用可能なプラグインをリストします(「jlinkのプラグイン」を参照)。
-p
または--module-path modulepath
モジュール・パスを指定します。
--no-header-files
ヘッダー・ファイルを除外します。
--no-man-pages
manページを除外します。
--output path
生成されるランタイム・イメージの場所を指定します。
--save-opts filename
指定されたファイルにjlink
のオプションを保存します。
--suggest-providers [name, ...]
指定されたサービス・タイプをモジュール・パスから実装するプロバイダを推奨します。
--version
バージョン情報を出力します。
@filename
指定されたファイルからオプションを読み取ります。
オプション・ファイルとは、オプションと、通常コマンド・プロンプトに入力する値が含まれるテキスト・ファイルです。オプションは、1行で書き込まれることも、複数行で書き込まれることもあります。パス名の環境変数を指定しなくてもかまいません。行の先頭にハッシュ記号(#
)を付けると、その行をコメント・アウトできます。
jlink
コマンドのオプション・ファイルの例を次に示します。
#Wed Dec 07 00:40:19 EST 2016 --module-path C:/Java/jdk9/jmods;mlib --add-modules com.greetings --output greetingsapp
jlinkのプラグイン
注意:
この項に記載されていないプラグインは、サポートされておらず、変更される可能性があります。
pattern-list
を必要とするプラグイン・オプションの場合、値は要素のカンマ区切りのリストで、各要素では次の形式のいずれかを使用します。
glob-pattern
glob:glob-pattern
regex:regex-pattern
@filename
filename
は、使用されるパターン(行ごとに1パターン)が含まれるファイルの名前です。すべての使用可能なプラグインの詳細リストを表示するには、コマンドjlink --list-plugins
を実行します。
表2-4 使用可能なjlinkのプラグインのリスト
プラグイン名 | オプション | 説明 |
---|---|---|
|
|
クラスの最適化、 |
|
|
出力イメージのすべてのリソースを圧縮します。
含めるファイルのパターンをリストする場合、オプションの |
|
|
すべての法律上の注意点において重複を排除します。 |
|
|
除外するファイルを指定します。次に例を示します。 --exclude-files=**.java,glob:/java.base/lib/client/** |
|
|
|
|
|
除外するリソースを指定します。次に例を示します。 --exclude-resources=**.jcov,glob:**/META-INF/** |
|
|
事前に生成する |
|
|
例: --add-modules jdk.localedata --include-locales=en,ja,*-IN |
|
|
指定されたパスを優先順位で並べます。 例: --order-resources=**/module-info.class,@classlist,/java.base/java/lang/** |
|
|
次のように、リリース・プロパティをロード、追加または削除します。
|
|
|
出力イメージからデバッグ情報を削除します |
|
|
ネイティブ・コマンド( |
|
|
モジュール・ディスクリプタを高速ロードします(常に有効) |
|
|
出力イメージのHotSpot VMを選択します。デフォルトは、 |
jlinkの例
次のコマンドは、ディレクトリgreetingsapp
でランタイム・イメージを作成します。このコマンドは、モジュールcom.greetingsをリンクします(このモジュールの定義は、ディレクトリmlib
に格納されています)。ディレクトリ$JAVA_HOME/jmods
には、java.base.jmodとその他の標準モジュールおよびJDKモジュールが格納されています。
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
次のコマンドは、ランタイム・イメージgreetingsapp
内のモジュールをリストします。
greetingsapp/bin/java --list-modules
com.greetings
java.base@9
java.logging@9
org.astro@1.0
次のコマンドは、ディレクトリcompressedrt
でデバッグ記号が削除されたランタイム・イメージを作成し、圧縮を使用して領域を削減し、フランス語の言語ロケール情報を含めます。
jlink --module-path $JAVA_HOME/jmods --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt
次の例では、ランタイム・イメージcompressedrt
(デバッグ記号が削除されておらず、圧縮を使用していない)のサイズをfr_rt
と比較します。
jlink --module-path $JAVA_HOME/jmods --add-modules jdk.localedata --include-locales=fr --output fr_rt du -sh ./compressedrt ./fr_rt 23M ./compressedrt 36M ./fr_rt
次の例では、java.security.Providerを実装するプロバイダをリストします。
jlink --module-path $JAVA-HOME/jmods --suggest-providers java.security.Provider
Suggested providers:
java.naming provides java.security.Provider used by java.base
java.security.jgss provides java.security.Provider used by java.base
java.security.sasl provides java.security.Provider used by java.base
java.smartcardio provides java.security.Provider used by java.base
java.xml.crypto provides java.security.Provider used by java.base
jdk.crypto.cryptoki provides java.security.Provider used by java.base
jdk.crypto.ec provides java.security.Provider used by java.base
jdk.crypto.mscapi provides java.security.Provider used by java.base
jdk.deploy provides java.security.Provider used by java.base
jdk.security.jgss provides java.security.Provider used by java.base
次の例では、java.namingおよびjdk.crypto.cryptokiとその依存性のみが含まれ、他のプロバイダは含まれないmybuild
という名前のカスタム・ランタイム・イメージを作成します。これらの依存性は、モジュール・パスに存在する必要があります。
jlink --module-path $JAVA_HOME/jmods --add-modules java.naming,jdk.crypto.cryptoki --output mybuild
次のコマンドは、greetingsapp
という名前のランタイム・イメージを作成するコマンドと似ていますが、ルート・モジュールから解決されるモジュールとサービス・バインディングをリンクする点が異なります。Configuration.resolveAndBindメソッドを参照してください。
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp --bind-services
次のコマンドは、このコマンドで作成されたランタイム・イメージgreetingsapp
内のモジュールをリストします。
greetingsapp/bin/java --list-modules
com.greetings
java.base@9
java.compiler@9
java.datatransfer@9
java.desktop@9
java.logging@9
java.management@9
java.management.rmi@9
java.naming@9
java.prefs@9
java.rmi@9
java.scripting@9
java.security.jgss@9
java.security.sasl@9
java.smartcardio@9
java.xml@9
java.xml.crypto@9
jdk.accessibility@9
jdk.charsets@9
jdk.compiler@9
jdk.crypto.cryptoki@9
jdk.crypto.ec@9
jdk.crypto.mscapi@9
jdk.deploy@9
jdk.dynalink@9
jdk.internal.opt@9
jdk.jartool@9
jdk.javadoc@9
jdk.jdeps@9
jdk.jlink@9
jdk.localedata@9
jdk.management@9
jdk.naming.dns@9
jdk.naming.rmi@9
jdk.scripting.nashorn@9
jdk.security.auth@9
jdk.security.jgss@9
jdk.unsupported@9
jdk.zipfs@9
org.astro@1.0