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_…