本文主要知识点: 1. 基于jdk14的java模块化, 2. jlink的使用
前言
看过小刀最近朋友圈的小伙伴应该都知道, 最近小刀在写一个桌面的工具包, 可以连k8s, 可以做图床等等, 其中用到的技术栈就是 jdk14+javaFX.
JDK14(Module)+javaFx
JDK14(Module)
选用JDK14 , 主要是因为其中的jpackage命令, 这个命令可以帮我们把java程序打包成win中的exe , 打包成mac 中的dmg, pkg . 这样使用者就不需要再单独安装jdk/jre了, 加上java9之后java的module化, 可以最大程度上的精简jre, 虽然是精简了,但实际上,大家可以看到, 每次我在群里面发的包,还是接近100MB了.
javaFX
java身为一个跨平台语言,我们对其更多直观的感受是在win/mac 上写了一个springboot的程序, 然后丢到win/linux服务器上去运行. 不仅仅是服务端应用, 桌面端应用也可以这样跨平台. 用上面用jpackage打包之后的应用, 在不同的平台上打的包, 可以在不同的平台上运行. 虽然在UI/字符显示上会有些许差别,但是差别不怎么大. 可以通过接口-不同平台实现类的方式进行处理.
系统配置要求
本文及后续文章系统要求:
jdk14(为了使用jpackage命令),
idea社区版2020.1或以上(这个版本开始支持jdk14),
gradle 6.3及以上(gradle 6.3开始支持jdk14)
小刀的交流群(一个人踩坑? 踩的想砸电脑.....)
java Module
模块化和非模块化的区别,在代码的体现上就是module-info.java的区别