如何在JRE上运行java应用JDK13?

How to run java applications JDK13 on JRE?

我用 JDK 13 制作了一个 java 应用程序。我用 launch4j 创建了一个 exe 文件。但是没有人可以 运行 因为每个人都有 jre 1.8 版本而且它不会启动...我必须在安装中包含 java jdk 13 并设置 java_home那?

TL;DR - 如果您想分发 Java 13 应用程序,best 选项是使用 jlink 创建可执行文件。这避免了用户必须安装 any JDK 或 JRE 到 运行 您的代码。


显然,用户无法 运行 您的应用程序带有 Java 8 JRE 或 JDK。典型的 Java 13 应用程序将使用 Java 8 平台中不存在的功能。但即使有效,免费 Java 8 也将在 2021 年 4 月停产,届时:

  • 它将停止获取安全更新,使您的客户使用它(理论上如果不实践)不安全。

  • 您的客户将更难找到免费的 Java 8 个二进制文件。 (不过,向 Oracle 支付许可证是一种选择。)

但是Java13也是有问题的。那将在 2020 年 9 月结束生命!此外,JRE 发行版不再可用。

最后,带有嵌入式 JRE 的应用程序安装程序总是有些问题:

  • 当有 JRE 的安全补丁时,软件供应商很容易忘记更新安装程序。

  • 系统管理员很难将嵌入式 JRE 添加到自动更新的列表中。特别是如果他们允许最终用户自己安装应用程序。


最好的方法是执行以下操作:

  • 使用 jlink 为您支持的所有平台的应用程序创建可分发文件
  • 尽快更新到 Java 14
  • 每当发布带有安全修复的 Java 补丁版本时,评估已修复的内容并(如果有保证)创建新的可分发版本供您的客户安装。

如果您不想使用 jlink,另一种选择是在 Java LTS 版本上将您的代码开发到 运行。 (当前的 LTS 版本是 Java 11,下一个版本是 Java 17,计划于 2021 年 9 月发布。)

  • 使用 LTS 版本将允许您将代码作为 JAR 文件发布。
  • 嵌入式 JRE 不是个好主意;见上文。