自学内容网 自学内容网

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 的主要目标

  1. 简化应用程序部署:通过 jpackage,Java 应用程序可以打包成平台特定的安装包,如 .exe(Windows),.dmg(macOS),.deb.rpm(Linux)。
  2. 无外部 JRE 依赖:应用程序可以不依赖于系统上的 JRE,而是将一个合适的 JRE 随应用程序一起打包,从而避免用户安装 JDK 或 JRE 的麻烦。
  3. 支持多平台jpackage 工具支持多平台打包(Windows、macOS 和 Linux)。

JEP 358 的核心特性

  1. 支持自定义 JDK 运行时:打包时可以将 JDK 运行时环境一起打包到应用程序中。
  2. 创建平台特定的安装包:生成的平台包支持 Windows 的 .exe 文件、macOS 的 .dmg 文件和 Linux 的 .deb/.rpm 文件。
  3. 支持应用程序图标:你可以指定图标和其他资源,使最终的打包程序看起来更加专业。

使用 jpackage 工具

  1. 确保安装的是 JDK 14 或更高版本
    java -version
    
  2. 准备一个简单的 Java 程序
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
        }
    }
    
  3. 编译并打包 JAR 文件
    javac HelloWorld.java
    
  4. 进入HelloWorld.class所在的文件夹,使用 jar 工具将编译后的 .class 文件打包成 JAR 文件
    jar --create --file HelloWorldApp.jar --main-class HelloWorld HelloWorld.class
    
  5. 使用 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 包。

在这里插入图片描述

定制更多选项

  1. 指定应用图标
    jpackage --input target/classes --name HelloWorldApp --main-class HelloWorld --type exe --icon myapp.ico
    
  2. 定制 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)!