用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 \u0026lt;main jar文件 \u0026gt;:应用程序的main JAR;包括main类
–main-class -c \u0026lt;类名\u0026gt;:要执行的应用程序main类的限定名
–installer-type \u0026lt;类型\u0026gt;:在create-image模式中创建的安装程序类型(msi、exe、rpm、deb、dmp、pkg、pkg-app-store)
–runtime-installer:为Java运行时生成特定于平台的安装程序
–jvm-args \u0026lt;java 虚拟机 参数\u0026gt;:传递给虚拟机的Java参数
–install-dir \u0026lt;文件路径\u0026gt;:应用程序安装目录的绝对路径
只适用于MacOS X平台的一些选项:
–mac-sign:请求对包进行签名
–mac-bundle-name \u0026lt;名字字符串\u0026gt;:在菜单栏中显示的应用程序名称
–mac-app-store-category \u0026lt;目录字符串\u0026gt;:Mac应用程序商店目录
–mac-signing-keychain \u0026lt;文件路径\u0026gt;:要使用的密钥链的路径
关于jpackage,有一些有趣的事情需要特别注意,其中包括:
支持打包Java应用程序,使其适合提交到Windows或MacOS应用商店
当设置文件关联时进行本机集成,以便在打开具有关联后缀的文件时启动应用程序
本机集成支持启动特定于平台的菜单组,如Windows上的“开始(Start)”菜单项
不支持交叉编译;Windows包应该通过在Windows上运行jpackage来创建
不支持JMOD文件中已经提供的法律文件,如单个许可证文件
不支持原生启动画面
不支持自动更新机制
该工具在Solaris平台上不可用
不支持Java Web Start应用程序和JavaFX的特定功能
该工具没有GUI,只提供命令行界面(CLI)
关于jpackage更多的细节,请参考JEP 343: Packaging Tool页面。开发人员可以下载用于Windows、MacOS和Linux的抢先体验版。
查看英文原文:Building Self-Contained, Installable Java Applications With JEP 343: Packaging Tool
用JEP 343打包工具,构建自包含、可安装的Java应用程序相关推荐
- 再聊inno 打包工具之关于安装或者卸载时判断程序是否在运行
再聊inno 打包工具之关于安装或者卸载时判断程序是否在运行 废话少说,show my code [code] //安装和卸载时检查程序是否运行,拷贝代码修改AppName和AppId functio ...
- [Google API](8)构建使用Google API的Java应用程序
Google 搜索引擎建立起了通过 Web 服务接口可用的索引.拼写建议和缓存页面,从而允许所有语言的程序员都能就个人使用存取信息.Google 搜索引擎还提供了 Java API,从而存取数据更为便 ...
- exe打包工具哪个最好_为你的 Python 程序写个启动工具箱
到目前为止,公众号已经介绍了不少图形界面的软件,比如猜数游戏.PDF阅读器.贪吃蛇游戏.天气查询软件.PDF 阅读器等.为了方便他人使用,我们常把图形界面打包成 exe 文件.但是如果我们只是为了自己 ...
- Java安装程序制作工具
Java安装程序制作工具 IzPack 是一个 Java 安装程序制作工具,能够制作一些简单的安装程序.制作出来的安装程序能在 Unix-like, MacOS X, Windows 等系统平台上运行 ...
- Jenkins教程(2)使用Maven构建Java应用程序
本教程将向你展示如何使用Jenkins编排并构建一个使用Maven管理的简单Java应用程序. 如果你是使用Maven的Java开发人员,并且对CI/CD概念不熟悉,或者你可能熟悉这些概念,但不知道如 ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器
一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...
- Web Bundler CheatSheet, 选择合适的构建打包工具
题注:Web Bundler CheatSheet 属于 Awesome-CheatSheet 系列,盘点数个常用的开发打包工具清单.欢迎加入阿里南京前端团队,欢迎关注阿里南京技术专刊了解更多讯息. ...
- JavaScript 是如何工作的:模块的构建以及对应的打包工具
这是专门探索 JavaScript 及其所构建的组件的系列文章的第 20 篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:引擎,运行时和调用堆栈的概述! Jav ...
最新文章
- Java自动驾驶:汽车检测
- 接入Tinker热修复和踩坑
- 2016年第七届蓝桥杯 - 国赛 - Java大学C组 - A. 平方末尾
- JSP第十四次课:JSP项目开发高级操作2---在线编辑器应用及前台首页显示商品
- SAP Commerce Cloud portal 的 deployment
- A. Slackline Adventure(思维 + 莫比乌斯)(2018-2019 ACM-ICPC Brazil Subregional Programming Contest)
- Python深入-Python的内存管理
- 金蝶EAS BOS开发常用的代码说明及常见问题
- HDOJ--2000--ASCII码排序(java实现)
- 一个api请求的流程
- linux 搜索文件后缀名,Linux -find、文件后缀名
- 计算机快速录入,如何快速把书中的文字扫描并录入电脑
- win10安装steam有损计算机,win10系统steam安装更新失败的解决方法
- Hbuilder开发APP(一)——底部导航条简单实现
- [USACO] Team Tic Tac Toe
- 2018年sfdc工作总结_常见Salesforce 异常
- CentOS 7输入startx无法启动图形化界面
- html图片滤色,css--图片处理
- 勒索病毒SARA,请勿用于非法用途。
- Android图片轮播第三弹,给你想不到的惊喜