JDK14特性Java 原生代码编译工具jpackage
JEP 358: Java 原生代码编译器(JEP 358)详解
-
JEP 358 是 Java 14 引入的一项新特性,旨在提供一个工具来将 Java 应用程序打包为平台特定的原生可执行文件(native executables)。这个工具叫做
jpackage
,它允许开发者将 Java 应用程序打包成操作系统特定的安装包或可执行文件,从而简化部署和分发过程。 -
在 Java 14 之前,开发者通常需要在目标机器上安装 JDK 或 JRE 才能运行 Java 应用程序,但 JEP 358 提供了一种方式,使得 Java 应用程序可以作为独立的可执行文件运行,无需外部的 Java 运行时环境。
JEP 358 的主要目标
- 简化应用程序部署:通过
jpackage
,Java 应用程序可以打包成平台特定的安装包,如.exe
(Windows),.dmg
(macOS),.deb
或.rpm
(Linux)。 - 无外部 JRE 依赖:应用程序可以不依赖于系统上的 JRE,而是将一个合适的 JRE 随应用程序一起打包,从而避免用户安装 JDK 或 JRE 的麻烦。
- 支持多平台:
jpackage
工具支持多平台打包(Windows、macOS 和 Linux)。
JEP 358 的核心特性
- 支持自定义 JDK 运行时:打包时可以将 JDK 运行时环境一起打包到应用程序中。
- 创建平台特定的安装包:生成的平台包支持 Windows 的
.exe
文件、macOS 的.dmg
文件和 Linux 的.deb
/.rpm
文件。 - 支持应用程序图标:你可以指定图标和其他资源,使最终的打包程序看起来更加专业。
使用 jpackage
工具
- 确保安装的是 JDK 14 或更高版本
java -version
- 准备一个简单的 Java 程序
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
- 编译并打包 JAR 文件
javac HelloWorld.java
- 进入
HelloWorld.class
所在的文件夹,使用 jar 工具将编译后的 .class 文件打包成 JAR 文件jar --create --file HelloWorldApp.jar --main-class HelloWorld HelloWorld.class
- 使用 jpackage 创建原生应用程序
jpackage --input ./ --name HelloWorldApp --main-jar HelloWorldApp.jar --main-class HelloWorld --type dmg
--input ./
:指定包含 JAR 文件的目录(当前目录)
--name HelloWorldApp
:指定应用程序的名称
--main-jar HelloWorldApp.jar
:指定包含主类的 JAR 文件
--main-class HelloWorld
:指定主类
--type dmg
:指定打包类型为 macOS 的 .dmg 安装包- Windows: 创建一个
.exe
可执行文件。 - macOS: 创建一个
.dmg
安装包。 - Linux: 创建
.deb
或.rpm
包。
- Windows: 创建一个
定制更多选项
- 指定应用图标
jpackage --input target/classes --name HelloWorldApp --main-class HelloWorld --type exe --icon myapp.ico
- 定制 JDK 运行时环境:
jpackage
还允许你打包一个最小的 JDK 运行时环境,以确保目标机器上没有安装 JDK 时仍能运行应用程序。jpackage --input target/classes --name HelloWorldApp --main-class HelloWorld --type exe --runtime-image path/to/custom/jdk
原文地址:https://blog.csdn.net/yang2330648064/article/details/145269376
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!