Java Tutorial

Java Control Statements

Object Oriented Programming

Java Built-in Classes

Java File Handling

Java Error & Exceptions

Java Multithreading

Java Synchronization

Java Networking

Java Collections

Java List Interface

Java Queue Interface

Java Map Interface

Java Set Interface

Java Data Structures

Java Collections Algorithms

Java Miscellaneous

Advanced Java

Java APIs & Frameworks

Java Useful Resources

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