我创建了一个依赖于 OpenJDK 11 和 JavaFX 的小型 HelloWorld Java 应用程序。该应用程序打包在一个 jar 文件中,只有在我的系统上分别安装了 Java 11 和 JavaFX 才能运行。
现在我想将我的 jar 转换成 self-contained Java application其中包括 JavaFX 和功能齐全的 Java 运行时环境。这将允许我在不安装 OpenJDK 11 的情况下运行我的应用程序(这会带来技术障碍,例如正确设置 PATH 等)。
我可以找到有关在 Java 10 上创建自包含 Java 应用程序的信息,但找不到有关将 Java 应用程序与 OpenJDK 11 和 JavaFX 捆绑在一起的信息。
如何使用 OpenJDK 11 和 JavaFX 发布独立的 Java 应用(包括 Java 运行时)?
最佳答案
模块化 Java、jlink 和 jpackage
关注these tutorials在 new home for JavaFX 找到在拥有been spun out之后Oracle 到 Gluon .
您将需要使用模块化 Java 编写代码。将 JavaFX 11 作为依赖项添加到您的项目中。并使用新的链接/打包工具将 JDK 的一个子集捆绑到您的应用中。
了解:
- Java Platform Module System
- jlink ( JEP 282 )
- jpackage ( JEP 343 )
不再有 JRE
Oracle 不再打算让最终用户安装 JRE 或 JDK。 Java Applets在浏览器中和 Java Web Start应用程序交付都被逐步淘汰,最终用户不再需要 JRE。基于 Java 的应用程序应该捆绑自己的 Java 实现。唯一有意识地安装 JDK 的人将是开发人员和服务器端系统管理员。
重要:
- 清楚地了解 OpenJDK 的性质项目,如explained in Wikipedia .
- 知道 Oracle 已 promise 在其自有品牌 Oracle JDK 和 OpenJDK 项目之间实现功能对等。此 promise 包括捐赠以前的商业功能,例如 Flight Recorder和 Mission Control .
- OpenJFX ,JavaFX 的开源开发,是a part of the OpenJDK项目。 OpenJFX 可能包含也可能不包含在 OpenJDK 的构建中。 Java specifications不需要 JavaFX 功能。
- 至少有两家供应商提供了与 OpenJFX 库捆绑在一起的 JDK 产品版本:
- ZuluFX 来自 Azul Systems
- LibericaFX 来自 BellSoft
- 阅读 Oracle 于 2018 年 3 月发布的这份白皮书,Java Client Roadmap Update
- 阅读白皮书 Java Is Still Free ,由 Java 社区的主要成员撰写。
这是一个流程图,可以帮助您在提供 Java 11 实现的各个供应商中找到并做出决定。
关于java - 将 JavaFX 应用程序与 openjdk 11 + 运行时捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52969440/