我用 JDK 13 制作了一个 java 应用程序。我用 launch4j 创建了一个 exe 文件。但是没有人可以运行它,因为每个人都有 jre 1.8 版本并且它不会启动...我必须在安装中包含 java jdk 13 并设置 java_home 吗?
1 回答
TL;DR - 如果要分发 Java 13 应用程序,最好的选择是使用jlink
创建可执行文件。这避免了用户必须安装任何JDK 或 JRE 来运行您的代码。
显然,用户无法使用 Java 8 JRE 或 JDK 运行您的应用程序。典型的 Java 13 应用程序将利用 Java 8 平台中不存在的功能。但即使它奏效了,免费的 Java 8 也将在 2021 年 4 月结束生命周期,届时:
它将停止获取安全更新,使其(理论上如果不是实践的话)对您的客户使用不安全。
您的客户将更难找到免费的 Java 8 二进制文件。(不过,向 Oracle 支付许可证也是一种选择。)
但是 Java 13 也存在问题。这将在 2020 年 9 月结束生命!此外,JRE 发行版不再可用。
最后,带有嵌入式 JRE 的应用程序安装程序总是有些问题:
当 JRE 有安全补丁时,软件供应商很容易忘记更新安装程序。
系统管理员很难将嵌入式 JRE 添加到自动更新的列表中。特别是如果他们允许最终用户自己安装应用程序。
最好的方法是执行以下操作:
- 用于
jlink
为您支持的所有平台的应用程序创建可分发文件 - 尽快更新到 Java 14
- 每当发布带有安全修复的 Java 补丁版本时,请评估已修复的内容并(如果有必要)创建可分发的新版本供您的客户安装。
如果您不想使用jlink
,另一种选择是开发您的代码以在 Java LTS 版本上运行。(当前的 LTS 版本是 Java 11,下一个版本是 Java 17,计划于 2021 年 9 月发布。)
- 使用 LTS 版本将允许您将代码作为 JAR 文件发布。
- 嵌入式 JRE 是个坏主意。看上面。