写点什么

用 JEP 343 打包工具,构建自包含、可安装的 Java 应用程序

  • 2019-03-09
  • 本文字数:2008 字

    阅读完需:约 7 分钟

用JEP 343打包工具,构建自包含、可安装的Java应用程序

OpenJDK 社区发布了JEP 343:打包工具的早期访问版本。JEP 343:打包工具,又名 jpackage,是打包自包含 Java 应用程序和 Java 运行时环境的新工具。这个基于JavaFX javapackager 工具的原型适用于对 jpackage 感兴趣的开发人员。


长期以来,Java 开发人员一直希望构建这样的应用程序:可以安装在本机平台上,而不是分发 jar 和配置类路径。借助 jpackage,可以在特定平台上以用户习惯的方式安装或卸载 Java 应用程序,并且,它支持 Windows 上的 msi 和 exe 格式、MacOS 上的 pkg 和 dmg 格式、Linux 上的 deb 和 rpm 格式。在安装用 jpackage 构建的应用程序时,最终用户应该不会注意到任何不同。


jpackage 旨在填补其他技术留下的空白,如:


  • javapackager是随 Oracle JDK 9 发布的打包工具,在 Oracle 的 JDK 11 删除 javaFX 时,它作为其中一部分也一起删除了。

  • Java Web Start在 Java 9 中被弃用,Oracle JDK 11 中还删除了 Java Applet Viewer 和 JNLP。

  • pack200是为压缩 jar 文件而设计的工具,其在 JDK 11 中被弃用,以便从未来的版本中删除。


jpackage 支持以下类型的应用程序:


  • 已用jlink链接到自定义运行时映像的模块化应用程序

  • 模块化 jar 文件或 jmod 文件中的模块化应用程序

  • 运行在类路径上和位于一个或多个 jar 文件中的遗留应用程序


jpackage 的输出是 Java 应用程序映像,其包含所有必需的 Java 依赖项。该映像存于文件系统中的单个目录中,可以包含以下内容:


  • 本机应用程序启动器

  • Java 运行时映像,包括模块化应用程序时的应用程序模块

  • 应用程序资源,如 jar、ico 和 png

  • 配置文件,如 plist、cfg 和 properties


jpackage 工具计划成为新的 jdk.jpackage 模块中 JDK 13 的一部分。命令行界面将符合JEP 293: JDK命令行工具选项指南。此外,可以通过名为“jpackage”的ToolProvider API(java.util.spi.ToolProvider)访问 jpackage。

jpackage 命令行界面

当运行 jpackage --help 时,会显示一组有价值的信息。我们来看看其中的一些。


jpackage 工具有两种模式:


  • create-image:生成特定于平台的应用程序映像

  • create-installer:生成特定于平台的应用程序安装程序


生成模块化应用程序映像:


jpackage create-image --output outputdir --name AppName \    --main-class package.ClassName -module moduleName -p modulePathjpackage create-image --o outputdir -n AppName \    -c package.ClassName -m moduleName -p modulePath
复制代码


生成非模块化应用程序映像:


jpackage create-image --input inputdir --output outputdir \    --name AppName --main-class package.ClassName --main-jar MyJar.jarjpackage create-image -i inputdir -o outputdir -n AppName \    -c package.ClassName -j MyJar.jar
复制代码


生成应用程序安装程序:


jpackage create-installer -i inputdir -o outputdir \    -n  -c package.ClassName -j MyJar.jarjpackage create-installer -o outputdir -n \    --app-image 
复制代码


生成 Java 运行时安装程序:


jpackage create-installer --runtime-installer\    --name  --output outputdirjpackage create-installer --runtime-installer \    -n  -o outputdir --runtime-image 
复制代码


有些选项适用于所有平台:


  • –main-jar -j <main jar 文件 >:应用程序的 main JAR;包括 main 类

  • –main-class -c <类名>:要执行的应用程序 main 类的限定名

  • –installer-type <类型>:在 create-image 模式中创建的安装程序类型(msi、exe、rpm、deb、dmp、pkg、pkg-app-store)

  • –runtime-installer:为 Java 运行时生成特定于平台的安装程序

  • –jvm-args <java 虚拟机 参数>:传递给虚拟机的 Java 参数

  • –install-dir <文件路径>:应用程序安装目录的绝对路径


只适用于 MacOS X 平台的一些选项:


  • –mac-sign:请求对包进行签名

  • –mac-bundle-name <名字字符串>:在菜单栏中显示的应用程序名称

  • –mac-app-store-category <目录字符串>:Mac 应用程序商店目录

  • –mac-signing-keychain <文件路径>:要使用的密钥链的路径


关于 jpackage,有一些有趣的事情需要特别注意,其中包括:


  • 支持打包 Java 应用程序,使其适合提交到 Windows 或 MacOS 应用商店

  • 当设置文件关联时进行本机集成,以便在打开具有关联后缀的文件时启动应用程序

  • 本机集成支持启动特定于平台的菜单组,如 Windows 上的“开始(Start)”菜单项

  • 不支持交叉编译;Windows 包应该通过在 Windows 上运行 jpackage 来创建

  • 不支持 JMOD 文件中已经提供的法律文件,如单个许可证文件

  • 不支持原生启动画面

  • 不支持自动更新机制

  • 该工具在 Solaris 平台上不可用

  • 不支持 Java Web Start 应用程序和 JavaFX 的特定功能

  • 该工具没有 GUI,只提供命令行界面(CLI)


关于 jpackage 更多的细节,请参考JEP 343: Packaging Tool页面。开发人员可以下载用于WindowsMacOSLinux的抢先体验版。


查看英文原文:Building Self-Contained, Installable Java Applications With JEP 343: Packaging Tool


2019-03-09 08:0011367
用户头像

发布了 199 篇内容, 共 88.4 次阅读, 收获喜欢 295 次。

关注

评论

发布
暂无评论
发现更多内容

穿透人效本质,盖雅工场发布人效数字化套件

ToB行业头条

亚信安慧AntDB数据库ACP认证培训

亚信AntDB数据库

AntDB

《2024快应用智慧服务生态白皮书》发布,探索AI与快应用融合之路

科技热闻

比特币质押项目Babylon引发链上Gas费大战:散户转向第三方Restaking协议的可能性

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 公链开发

万界星空科技QMS系统:重塑质量管理新纪元

万界星空科技

质量管理 万界星空科技 QMS 质量管理系统 生产质量管理

如何区分住宅代理与数据中心代理?

IPIDEA全球HTTP

线下参会报名丨智源数据与行业应用 Workshop 第二期

智源研究院

淘宝商品详情数据的高效获取与多元应用

Noah

商品详情API返回值中的商品重量与体积信息

技术冰糖葫芦

API Explorer API 测试 API 策略 pinduoduo API

优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策

不在线第一只蜗牛

redis 缓存 Web

《AIGC应用实战营》课程学习总结

江流

“大模型”热潮下,企业数智化如何落地?

人称T客

NFTScan | 08.19~08.25 NFT 市场热点汇总

NFT Research

NFT NFTScan

如何利用淘宝商品评论API返回值提升商品转化率

技术冰糖葫芦

API Explorer API 测试 API 策略 pinduoduo API

“前端”工匠系列(一):合格的工匠,究竟该搞什么

京东科技开发者

京东搜索重排:基于互信息的用户偏好导向模型

京东科技开发者

探索AC自动机:多关键词搜索的原理与应用案例

京东科技开发者

共筑运维稳定磐石!华为云“数智先锋100·企业运维稳定性治理研讨会”南京站成功举办

科技热闻

MCtalk·CEO对话×每刻科技:经济挑战期,企业如何将“好钢”用在“刀刃”上?

ToB行业头条

厚积薄发,极石汽车加速前进

极客天地

湖南贝特新能源科技:巧用草料二维码,实现设备管理数字化

草料二维码

使用 SpanMetrics Connector 将 OpenTelemetry 跟踪转换为指标

巴辉特

可观测性 OpenTelemetry

用JEP 343打包工具,构建自包含、可安装的Java应用程序_语言 & 开发_Diogo Carleto_InfoQ精选文章