”;
In Java 14, a new packaging tool, jpackage was introduced to replace javapackager. javapackager was part of JavaFX kit and was introduced in Java 8. As Java 11 onwards, JavaFX is not a standard feature of Java API, javapackager is not a part of the standard offering. jpackage serves this purpose. jpackage enables developers to package the jar file in a native installable format like exe/msi for Windows, pkg/dmg for MacOS and so on.
Developer can use jlink to compress the required JDK modules to minimum modules and use the jpackage to create a lightweight image.
Need of jpackager
When software is to be distributed, the preferred way is to deliver an installable package to the end-user. This installable package generally contains the JDK, the modules, any dependent files, and configurations and provides the user with a familiar way to install the software. Users should not be required to install JRE or JDK as a prerequisite to run the Java application. jpackage handles all these cases and packages all the required files along with JRE/JDK into a native installer.
Command Line Options for jpackager
jpackage is a command line tool and provides various options to customize installable softwares. Following are some of the features that jpackager provides:
-
Developer can provide a custom icon.
-
Developer can provide a specific location to install the application.
-
Developer can application arguments to be passed to the application, JVM options to be used while launching the application.
-
Developer can set file associations to launch the application.
-
Developer can set option to modify platform-specific menu group options to launch the application.
-
Developer can configure multiple launchers to launch the application.
-
Using XCode, a bundle can be signed as well. This is applicable for MacOS only though.
Prerequisite
Folowing are the prerequisite to use jpackager tool to prepare a installable.
-
First requirement is to have the JDK and software application.
-
Get platform specific packaging tool as specified below:
-
Windows− To create EXE/MSI Installable, a third party library wix 3.0 or later is required
-
Ubuntu Linux− To create a RPM, DEB package, we need fakeroot package.
-
Red Hat Linux− To create a RPM, DEB package, we require rpm-build package.
-
MacOS− We can create package using Xcode command line tools. -mac-sign option can be used to sign the package and -icon can be used to provide a customized icon.
-
-
Application package should be prepared as per the platform. For each platform, we”ve to run the command separately.
Create a Package
We can create the package using following command:
Syntax
jpackage --input lib --name Tester --main-jar Tester.jar --main-class com.tutorialspoint.Tester --type msi --java-options ''--enable-preview''
Where
-
input − folder containing the required libraries.
-
name − name of the installable package
-
main-jar − jar file to be launched to start the application.
-
main-class − name of the main class in the JAR to be launched. If MANIFEST.MF file in the main JAR contains the main class name then this option is not required.
-
type − type of installable. DMG/PKG for MacOS, MSI/EXE options on Windows and DEB/RPM options on Linux.
-
java-options − options for the Java runtime
This command will create a MSI file which can be installed on Windows and application can be used like any other software.
Example of a Package
public class APITester { public static void main(String[] args) { System.out.println("Welcome to TutorialsPoint."); } }
Compile and Run the program
$javac APITester.java $jar cf APITester.jar APITester.class
Output
For windows executable, you need to download WiX Toolset v3.11.2(wix311-binaries.zip) and add the toolkit to your path.
Once jar is created and path is set, put jar in a folder called lib and run the following command to create a windows MSI installer.
$jpackage --input lib --name APITester --main-jar APITester.jar --main-class APITester --type msi
”;