自己完結型 (つまり、Java Runtime を含んだ形) で Java アプリケーションをパッケージ化するツールです。jpackage というコマンドになっています。
JavaFX に javapackager というツールが含まれていたのですが、Java 11 以降、JavaFX は JDK に含まれなくなっていたので、javapackager も JDK に含まれなくなっていました。今回はこの javapackager ベースのパッケージ化ツールが復活したような形です。
javapackager 同様、Windows, Linux, MacOSX のインストーラが生成できます。一方、以下のようなことは出来なくなっています。
- Java Web Start, JavaFX, Ant などの考慮は無くなった
- GUI も無し
- クロスコンパイル無し (他プラットフォーム向けの生成が出来ない)
- 自動更新機能無し
基本的な使い方
非パッケージアプリケーションの場合は、jpackage --name myapp --input lib --main-jar main.jar --main-class myapp.Main
パッケージアプリケーションの場合は、
jpackage --name myapp --module-path lib -m myapp/myapp.Main
のように jpackage コマンドを実行することで、プラットフォーム標準のインストーラが生成されます。
実行例
まず、非パッケージ型のアプリケーション jar を用意しました。Swing でウィンドウを開いて「Hello, world!」するだけの簡単なお仕事。プラットフォームは MacOSX です。
$ java -jar lib/jpkgsample.jar
$ jpackage --name jpkgsample --input lib --main-jar jpkgsample.jar WARNING: Using incubator modules: jdk.incubator.jpackage