Java – Packaging Tools


Java – Packaging Tools


”;


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

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *