在这篇文章中,我们将简要介绍如何将 Java 应用程序打包为一个独立的受控物 (应用程序独立),并附带自己的 Java 运行时环境(JRE) 。这种方法的优点是用户不需要单独安装 Java,可以在不影响其其他 Java 应用程序的情况下运行您的应用程序。
在发布 Java 应用程序时,通常有两种方法:一种是让用户在计算机上安装 JRE 或 JDK,然后单独提供您的应用程序,另一种是将 JRE 捆绑在应用程序中并一并提供给用户。以下为详细介绍这两种方案。
### 为什么包含 JRE?
打包 JRE 的优点:
1. 便捷性。用户不需要单独安装 JRE。
2. 独立性。用户可以在不影响他们的其他 Java 应用程序的情况下管理您的应用程序。
3. 版本控制。您可以确保您的应用程序始终使用您指定的正确 JRE 版本。
### 如何打包?
1. 使用 jlink 工具
在 Java 9 中引入了 jlink 工具。它使开发人员能够创建可执行文件,该文件包含您的应用程序所需的所有模块以及自定义运行时映像。以下为使用 jlink 的步骤:
a. 将 Java 源代码编译为模块
b. 创建一个使用所有需要的模块的 `module-info.java` 文件
c. 创建运行时映像
d. 创建可执行文件
2. 使用 native-image 工具 (GraalVM)
使用 GraalVM 中的 native-image, JVM应用程序可以编译成与操作系统相关的可执行文件。这个可执行文件将包含内置的JRE,这样您的客户就不需要单独安装 Java。步骤如下:
a. 安装并配置 GraalVM
b. 运行`native-image`命令,该命令将接受一个jar文件输入并将其转换为一个本地可执行文件
3. 使用打包工具 (Launch4j, JSmooth 等)
有一些第三方工具能将 Java 应用程序打包为 Windows .exe 文件或其他平台的可执行文件。这些工具通常允许您选择捆绑 JRE 或依赖系统 JRE。例如 Launch4j, JSmooth 和 jarsplice 等。
使用其中任何一个工具,都需要进行以下步骤:
a. 创建一个包含您的应用程序类文件和 JRE 的本地目录结构
b. 使用打包工具,按照工具文档中的说明,将上述目录结构打包为一个可执行文件
### 结论
每种方法都有其优缺点,例如可以考虑使用打包工具,因为它们可以使我们以相对简单的方式创建可执行文件。但是,如果您希望为特定的Java版本创建最小化的Java运行时映像,那么jlink可能更适合您的需求。
无论哪种选择,以上三种方法都使您能够发布一个自包含的应用程序,用户无需单独安装JRE即可运行。