首页 > 解决方案 > 将 JavaFX 应用程序与 openjdk 11 + 运行时捆绑在一起

问题描述

我创建了一个依赖 OpenJDK 11 和 JavaFX 的小型 HelloWorld Java 应用程序。该应用程序打包在一个 jar 文件中,只有在我的系统上分别安装了 Java 11 和 JavaFX 时才能运行该文件。

现在我想将我的 jar 转换为一个独立的 Java 应用程序,其中包括 JavaFX 和一个功能齐全的 Java 运行时环境。这将允许我在不安装 OpenJDK 11 的情况下运行我的应用程序(这会带来技术障碍,例如正确设置 PATH 等)。

我可以找到有关在 Java 10 上创建自包含 Java 应用程序的信息,但找不到有关将 Java 应用程序与 OpenJDK 11 和 JavaFX 捆绑在一起的信息。

如何使用 OpenJDK 11 和 JavaFX 发布自包含的 Java 应用程序(包括 Java 运行时)?

标签: javajavafxjavafx-11

解决方案


模块化 Java、jlinkjpackage

在从Oracle分拆到Gluon之后,请按照在JavaFX 的新家中找到的这些教程进行操作。

您将需要使用模块化 Java 编写代码。将 JavaFX 11 作为依赖项添加到您的项目中。并使用新的链接/打包工具将 JDK 的子集捆绑到您的应用程序中。

学习关于:

不再有 JRE

Oracle 不再打算让最终用户安装 JRE 或 JDK。浏览器中的Java 小程序和Java Web Start应用程序交付都将被逐步淘汰,最终用户不再需要 JRE。基于 Java 的应用程序应捆绑自己的 Java 实现。唯一有意识地安装 JDK 的人是开发人员和服务器端系统管理员。

重要的:

  • 清楚地了解OpenJDK项目的性质,如Wikipedia 中所述
  • 知道甲骨文已承诺在其自有品牌的甲骨文 JDKOpenJDK项目之间实现功能平等。该承诺包括捐赠以前的商业功能,例如飞行记录器任务控制
  • OpenJFX是 JavaFX 的开源开发,是OpenJDK项目的一部分。OpenJFX 可能包含也可能不包含在 OpenJDK 的构建中。Java 规范不需要 JavaFX 功能。
  • 至少有两家供应商提供了与 OpenJFX 库捆绑在一起的 JDK 产品版本:
    • Azul Systems 的ZuluFX
    • 来自 BellSoft 的LibericaFX
  • 阅读 Oracle 于 2018 年 3 月发布的这份白皮书,Java 客户端路线图更新
  • 阅读由 Java 社区的主要成员撰写的白皮书Java Is Still Free 。

这是一个流程图,可以帮助您在提供 Java 11 实现的各种供应商中找到并做出决定。

指导您为 Java 11 实施选择供应商的流程图


选择 Java 供应商的动机


推荐阅读