• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:jpackage在Java-16中可以投入生产

java 搞代码 4年前 (2022-02-19) 50次浏览 已收录 0个评论
文章目录[隐藏]

JDK 16具备打包自蕴含Java应用程序的性能。

如果您不停地思考针对不同平台进行编译,我会感觉到。Java的承诺之一就是WORA(一次写入,可在任何中央运行)原理,在彻底改变平台独立性的同时,又进行了一步,那就是可能在任何中央进行部署。就集体而言,我认为WORADA听起来很棒,但我想在Docker之前人们还没有意识到打消“我的机器上的工作”就像运送机器一样简略。

因而,您编写了一个类,构建了一个jar文件,而后须要正确的JVM(或JDK)和所有正确的依赖项,它们以十分非凡的形式进行组织能力使其失常工作。有哪些机会能够将这些常识残缺地从Dev筒仓残缺地转移到Ops筒仓?

“运送您的机器”容器反动

容器扭转了所有。只管在过来的几年中,“我至多很难在每个平台上运行,但其余所有甚至都没有做到”,埋怨“我在部署Java应用程序上遇到了很大的麻烦”,但Docker和容器的衰亡使“至多它是多平台的”论点。忽然之间,多平台反对就没有那么重要了(因为您曾经交付了指标平台),然而有了一个软件包,其中将蕴含整个应用程序,这是一个赢家。

意识jpackage,本机Java App安装程序生成器

在Docker JEP 311首次公布仅4年后:Java Packager API和CLI才刚刚起步。这个想法是采纳旧的废除的Javapackager工具(其指标是“用作Ant工作的替代品”,这是Oracle官网文档的引文,我不通知你!)清理,记录下来,提供适当的API,并

来源gao!%daima.com搞$代*!码网

容许Java开发人员创立适当的安装程序。在Java 16发行版中,它已被JEP 343和392:打包工具所取代,这是一个洁净的重写,而且很棒。开始了:

$ jpackage create-installer –runtime-installer \

--name  --output outputdir

Boom,您刚刚创立了一个蕴含所有内容的安装程序(.msi/.exe1,.dmg或.deb/.rpm)(您的应用程序,您的依赖项,整个JRE和厨房水槽)。

所有?听起来很多!

的确是!然而,您不用真正打包所有货色。运行以下内容,以仅应用您的应用程序创立可执行文件:

$ jpackage –name myapp –input lib –main-jar main.jar \

--main-class myapp.Main

该软件包将包含该应用程序的启动器,也称为myapp。要启动该应用程序,启动程序会将从输出目录复制的每个JAR文件放在JVM的类门路上。

嘿,我的JRE去哪了?

然而…然而…咱们不是通过排除JRE来毁坏整个指标吗?是的咱们做了。让咱们通过蕴含JRE(但不是全副)找到一种两头办法。您能够应用该jlink命令创立JRE的子集,仅包含您真正须要的模块:

$ jlink –add-modules java.base,java.sql –output smalljre

当初,您有了一个自定义(且很小)的JRE smalljre。让咱们用它来创立一个安装程序,而不是整个野兽:

$ jpackage –name myapp –input lib –main-jar main.jar \

--runtime-image smalljre

不jpackage酷吗?它是!它会取代Docker吗?并不真地。真的是要替换Docker吗?不,那有什么作用?好了,当初咱们有了一个独立的Java应用程序,咱们能够在任何中央运行。

将Java软件包带到任何中央

太好了,咱们创立了一个很棒的程序包。怎么办?好吧,这取决于此程序包是什么。这里有几个抉择:

这是一个可下载的桌面应用程序。在这种状况下,您须要一个云散发服务。JFrog Platform提供了一个齐全能够做到这一点的 收费云帐户。您能够将Java程序包部署到通用存储库,而后让人们将其下载到他们的设施中。
JFrog Platform还可用作Debian和rpm软件包存储库类型,因而您能够本地托管和服务Debian和rpm Java软件包!
如果您想进一步改善发行体验,则其余JFrog Platform订阅级别包含 CDN(内容交付网络)反对,该反对可在世界任何中央提供更好的下载速度。
它是Docker映像的一部分。在这种状况下,请获取收费的 JFrog容器注册表进行自我托管,或者在JFrog平台上关上收费的云帐户。在这两种状况下,您都会取得一个收费的Docker映像的Docker注册表,以及一个用于这些映像的内容的通用存储库,即咱们的Java包。接下来,一条简略的ADD指令将一个文件– Java包复制到您的映像中,从而使Dockerfile放弃整洁,简略和整洁。

参考: 《2020最新Java根底精讲视频教程和学习路线!》
原文链接:https://www.gaodaima.com/weixin_…


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:jpackage在Java-16中可以投入生产

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址