赞
踩
长期以来,Java开发人员一直希望构建可以直接安装在本机平台上的应用程序,而不是分发jar和配置类路径。使用jpackage,可以按照特定平台的用户使用的方式安装/卸载Java应用程序,它支持Windows上的msi和exe格式,MacOS 上的pkg和dmg以及Linux上的deb和rpm。安装使用jpackage构建的应用程序时,最终用户不应注意到任何差异。
Java应用的分发一直是一个比较麻烦的问题。这是因为Java应用的运行需要虚拟机的支持,仅有Java应用打包的JAR文件是不够的,目标机器还需要安装版本匹配的JDK或JRE。随着云原生和容器化技术的流行,Java应用可以选择以容器镜像的形式来打包和分发,极大地降低了分发难度。不过仍然有相当一部分的Java应用需要直接安装在客户的机器上。
通常的解决方案是使用第三方安装工具,如install4j,创建应用的安装包。安装包负责打包应用和所依赖的Java运行环境。安装工具的问题在于过于繁琐,并且通常是收费的。很多时候我们只是需要简单的运行一个Java程序而已。比如,在客户的机器上运行Java编写的数据迁移工具,第三方框架如: quarkus 等
jpackage的输出是一个Java应用程序映像,包含所有必需的Java依赖项。映像存储在文件系统的单个目录中,可以包含以下内容:
jpackage工具计划在新的jdk.jpackage模块中成为JDK 13的一部分。
jpackage工具有两种模式:
要生成模块化应用程序镜像:
jpackage create-image --output outputdir --name AppName \ --main-class package.ClassName -module moduleName -p modulePath jpackage 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.jar jpackage 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.jar jpackage create-installer -o outputdir -n \ --app-image |
要生成Java运行时安装程序:
jpackage create-installer --runtime-installer\ --name --output outputdir jpackage create-installer --runtime-installer \ -n -o outputdir --runtime-image |
一些适用于所有平台的选项:
某些选项仅适用于Mac OS X平台:
关于jpackage的其他有趣的事情包括:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。