7

​​​​​​​使用jlink +jpackage生成本地本机可执行Java程序或镜像

 3 years ago
source link: https://www.jdon.com/57024
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
​​​​​​​使用jlink +jpackage生成本地本机可执行Java程序或镜像

将jlink和jpackage一起使用可以交付打包好的直接执行的Java应用程序,可以在不依赖最终用户安装特定 JDK 的情况下做到这一点,因为jlink在您的应用程序安装程序中为他们提供了他们需要的 JDK 子集。

使用 jlink 创建纤薄的自定义运行时runtime

如果您今天下载 JDK,它大约有 300 兆字节,其中一半实际上是两次完全相同的数据。因为 JDK 包含以两种不同方式打包的模块:

  • 第一,作为包含程序实际运行数据的链接版本,
  • 第二,作为独立模块。如果您在应用程序中包含 JDK,那么您包含的位比实际需要的要多得多。

使用jlink,您可以创建仅包含您的应用程序需要的自定义运行时。所以,如果你有一个小型应用程序,也许你只需要平台中 60 多个模块中的一小部分,如果你有容器环境,你正在构建一个 Docker 镜像并希望它保持纤薄和小巧,这尤其有用。

另一件需要了解的事情jlink是,通过使用 JVM 中内置的类数据共享,您可以预先计算一些状态并将其存储在 HotSpot JVM 的类数据共享 (CDS) 存档中。因此,您进行一次试验运行,将该数据存储到磁盘,然后,在后续运行中,您可以重复使用该训练数据,这为您的应用程序提供了更快的启动时间和更小的内存占用。如果您在同一台机器上运行多个进程,这尤其有用。

最后,应用程序无需知道模块即可使用此工具:您可以使用jlink1990 年代的旧 Java 应用程序,一切都会正常运行。

如果使用jlink,则需要确保使用最新更新来更新自定义运行时镜像/映像。与自定义运行时映像不同,Web 部署的 Java 应用程序会在应用程序更新可用时使用Java Auto Update 自动从 Internet 下载应用程序更新。但是,jlink的自定义运行时映像没有对自动更新的内置支持。

使用jpackage绑定

使用jpackage绑定一个Java应用程序或Java运行时到一个Docker镜像,包括所有必要的依赖,产生的结果是:操作系统特定格式的本机包,例如.exe适用于 Windows 的.dmg文件或适用于 macOS的文件。

与jlink结合使用时,jpackage可为您提供完整的端到端部署系统。

案例源码


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK