java - 了解 Java 9+ 上的部署
问题描述
在忽略 Java 更新很长一段时间后,我现在想从在某处发现的有点阴暗的 Java 10.0.2 Runtime 继续前进到 Java 13。事实证明,Oracle 在 Java 8 之后停止了“单体”JRE 哲学,我可以对于我将如何进行部署的问题,我似乎没有找到任何明确的答案。
以下是我认为保持不变的内容:
- IDE (eclipse) 工作流程基本保持不变
- 如果我想自己使用该程序,我可以将其编译为 .jar,该 jar 将在 JDK 附带的 JVM 上运行,就像使用 Java 8 运行时一样
现在,我无法理解的棘手部分来了:在其他机器上部署
- 创建一个 module-info.java 列出该程序的依赖项
- 像往常一样使用 eclipse 对话框编译 .jar
- 使用 jlink 为该程序创建一个运行时映像,以便与它一起发布
...但是现在呢?
这些图像如何使程序工作?我读到它们只是该程序的某种小型 JRE,这将消除在目标系统上安装 Java 的需要,但是这将如何跨平台呢?
还是它们是可从官方站点下载的 JRE 的某种“补丁” ?这可以解释为什么它仍在更新,但它不会消除在目标机器上安装 Java 的需要。
TL;博士:
- 到目前为止我的理解有什么问题吗?
- jlink-ed 运行时映像如何工作?
- 它们是如何跨平台的?
- 目标机器是否仍需要任何类型的预安装 Java 相关软件,例如运行时/链接中提供的运行时?
非常感谢您阅读我的文字墙,并提前感谢您的回答!
编辑:使问题四更清楚。
解决方案
Slaw 在对原始问题的评论中回答了我所有的问题,因此我将在此答案中对其进行总结。
- 到目前为止我的理解是正确的
jlink
使用程序需要的模块创建一个 mini-JRE,如module-info.java
- 他们不是,一个人需要例如 Linux-JDK 来创建一个特定于 linux 的版本等。
- 运行/解释程序所需的所有文件都包含在运行时映像中
也感谢您提供的外部信息!我一定会调查一下JMOD
,从我读到的内容来看jpackage
,这是一件非常令人兴奋的事情。
推荐阅读
- video - 如何在页面刷新时停止 boostrap 模态视频自动播放
- sql-server - SQL Geography.STContains 返回错误值
- css - 全高弯曲的角材料垫抽屉,内容自动溢出
- r - R - doc_parse_file 中的错误
- python - 通过python读取其中一列作为超链接的Excel文件
- php - JSON 多维数组未在 PHP 上显示
- python - 如何在 Scrapy 项目中使用 PyMongo 插入新记录 MongoDB 时删除重复项
- android - 使用 tasker 或 shell 设置数据限制/数据警告
- f# - Visual Studio 中的 Xamarin Android -- fsproj 文件存储我在调试器中运行的设备
- javascript - 如何更改 input type="date" datepicker 的外观?