1. Overview
1.概述
In this tutorial, we’ll explore the new packaging tool introduced in Java 14, named jpackage.
在本教程中,我们将探讨Java 14中引入的新的打包工具,名为jpackage。
2. Introduction
2.简介
jpackage is a command-line tool to create native installers and packages for Java applications.
jpackage是一个命令行工具,用于为Java应用程序创建本地安装程序和软件包。
It’s an incubating feature under the jdk.incubator.jpackage module. In other words, the tool’s command-line options or application layout aren’t yet stable. Once stable, the Java SE Platform or the JDK will include this feature in an LTE release.
它是jdk.incubator.jpackage模块下的一个孵化功能。换句话说,该工具的命令行选项或应用程序布局还不稳定。一旦稳定,Java SE平台或JDK将在LTE版本中包含这一功能。
3. Why jpackage?
3.为什么jpackage??
It’s standard practice while distributing software to deliver an installable package to the end-user. This package is compatible with the user’s native platform and hides the internal dependencies and setup configurations. For example, we use DMG files on macOS and MSI files on Windows.
在分发软件时,向最终用户提供一个可安装的软件包是标准做法。这个软件包与用户的本地平台兼容,并隐藏了内部的依赖关系和安装配置。例如,我们在macOS上使用DMG文件,在Windows上使用MSI文件。
This allows the distribution, installation, and uninstallation of the applications in a manner that’s familiar to our end users.
这允许以我们的终端用户熟悉的方式分发、安装和卸载应用程序。
jpackage allows developers to create such an installable package for their JAR files. The user doesn’t have to explicitly copy the JAR file or even install Java to run the application. The installable package takes care of all of this.
jpackage允许开发者为他们的JAR文件创建这样一个可安装包。用户不需要明确地复制JAR文件,甚至不需要安装Java来运行应用程序。可安装包负责所有这些工作。
4. Packaging Prerequisite
4.包装的先决条件
The key prerequisites for using the jpackage command are:
使用jpackage命令的关键先决条件是。
- The system used for packaging must contain the application to be packaged, a JDK, and software needed by the packaging tool.
- And, it needs to have the underlying packaging tools used by jpackage:
- RPM, DEB on Linux: On Red Hat Linux, we need the rpm-build package; on Ubuntu Linux, we need the fakeroot package
- PKG, DMG on macOS: Xcode command line tools are required when the –mac-sign option is used to request that the package be signed, and when the –icon option is used to customize the DMG image
- EXE, MSI on Windows: On Windows, we need the third party tool WiX 3.0 or later
- Finally, the application packages must be built on the target platform. This means to package the application for multiple platforms, we must run the packaging tool on each platform.
5. Package Creation
5.包的创建
Let’s create a sample package for an application JAR. As mentioned in the above section, the application JAR should be pre-built, and it will be used as an input to the jpackage tool.
让我们为一个应用程序的JAR创建一个样本包。如上节所述,应用程序的JAR应该是预先建立的,它将被用作jpackage工具的输入。
For example, we can use the following command to create a package:
例如,我们可以使用以下命令来创建一个包。
jpackage --input target/ \
--name JPackageDemoApp \
--main-jar JPackageDemoApp.jar \
--main-class com.baeldung.java14.jpackagedemoapp.JPackageDemoApp \
--type dmg \
--java-options '--enable-preview'
Let’s go through each of the options used:
让我们来看看所使用的每个选项。
- –input: location of the input jar files(s)
- –name: give a name to the installable package
- –main-jar: JAR file to launch at the start of the application
- –main-class: main class name in the JAR to launch at the start of the application. This is optional if the MANIFEST.MF file in the main JAR contains the main class name.
- –type: what kind of the installer do we want to create? This depends on the base OS on which we’re running the jpackage command. On macOS, we can pass package type as DMG or PKG. The tool supports MSI and EXE options on Windows and DEB and RPM options on Linux.
- –java-options: options to pass to the Java runtime
The above command will create the JPackageDemoApp.dmg file for us.
上述命令将为我们创建JPackageDemoApp.dmg文件。
We can then use this file to install the application on the macOS platform. After the installation, we’d be able to use the application just like any other software.
然后,我们可以使用这个文件在macOS平台上安装该应用程序。安装完成后,我们就能像其他软件一样使用该应用程序。
6. Conclusion
6.结论
In this article, we saw the usage of the jpackage command-line tool introduced in Java 14.
在这篇文章中,我们看到了Java 14中引入的jpackage命令行工具的用法。