由于没有更多的 JRE 11 可供下载,我如何才能使 Java 11 运行 时间环境正常工作?

How can I get Java 11 run-time environment working since there is no more JRE 11 for download?

Java 11 没有提供可供下载的 JRE,这与过去的 Java 版本不同。当 运行 一些基于 Java 的软件时,我得到一个错误“没有 java 运行 时间环境”。为了解决这个问题,我必须安装 Java 8 JRE。

如果没有更多的 JRE 11 可供下载,我如何才能让我的 PC 达到 运行 Java 11 JRE?

我正在使用 Windows 10.

目前,似乎没有免费且简单的 Oracle 支持的 Java 11 JRE(仅)选项。您的选择是:

  1. 从 OpenJDK 站点下载并使用 OpenJDK Java 11 JDK。

  2. 从 Oracle 站点下载并使用 Oracle Java 11 JDK ... 并确保您完全理解现在适用的“商业用途”限制到 Oracle Java 11+ 版本。

  3. 尝试从 OpenJDK 来源为 Windows 推出自己的 Windows JRE;参见 。 (我不建议这样做。有更好的选择。

  4. 考虑使用新的 jlink 工具为您的应用程序创建自定义映像(基本上是精简的 JRE)。这似乎是 Oracle 希望第 3 方应用程序开发人员使用的选项。

  5. 与 Oracle 销售人员讨论 Java 支持合同,并特别询问如何获得 JRE 构建。 (我不知道答案会是什么。如果有人尝试了这个,并且他们得到了积极的回应,请发表评论!

  6. 使用第 3 方 Java JRE 发行版。

    • Java 供应商的列表随时间变化,但截至目前它包括 AdoptOpenJDK、Amazon、Azul、BellSoft、IBM、jClarity、Red Hat 和 SAP .另见:

    • 其中一些供应商提供 JRE 发行版。检查他们的下载站点。

    • 因为(几乎)所有 Java 供应商的产品都基于用于 Oracle Java 的相同标准 OpenJDK 代码库,所以没有理由关注第 3 方 JRE 的稳定性。一些供应商提供(付费)支持。

(或者从 Windows 切换到 Linux。我可以在最新版本的Ubuntu、Fedora、...)


对于那些认为 Oracle Java 11 和 OpenJDK Java 11 相同的人,请从 Oracle 下载站点阅读以下内容:

Important changes in Oracle JDK 11 License

With JDK 11 Oracle has updated the license terms on which we offer the Oracle JDK. The new Oracle Technology Network License Agreement for Oracle Java SE is substantially different from the licenses under which previous versions of the JDK were offered. Please review the new terms carefully before downloading and using this product.

Oracle also offers this software under the GPL License on jdk.java.net/11

请注意 Oracle 表示 Oracle Java 和 OpenJDK Java 的许可证不同。 (尽管这两者是从本质上相同的源代码库构建的。)忽略它后果自负!

您可以使用 "adoptopenjdk" 项目网站下载最新的 jre 和 JDK https://github.com/AdoptOpenJDK/openjdk-jdk11

在此处查找最新的 link > https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot

编辑: 问题已修复

我已经使用他们的夜间构建来解决 JDK 包中缺少 JRE 的问题 https://adoptopenjdk.net/nightly.html?variant=openjdk11

是正确的,而且很重要。

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

重要:

了解:

桌面应用现在需要捆绑它们自己的 Java 运行时。上面列出的这些工具可以为您的特定应用程序创建非常小的运行时定制。

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


还有一个 table 映射可能的动机或考虑因素导致 Java 的建议供应商。

兼容性问题

在评论中提出了一个问题,担心各个供应商版本之间的兼容性问题。

首先,请了解 OpenJDK 项目包括大量测试,称为 OpenJDK 社区技术兼容性工具包 (TCK)。供应商可以自由地自我声明他们的版本是否通过了这些测试。这些说法未经证实,依赖于荣誉制度。在我上面的图表中,我在我认识的几个自我声明的供应商上勾选了“TCK”:Oracle JDK by Oracle 和 Zulu by Azul Systems。

我上面图表中蓝色桶形区域中列出的所有产品几乎都是直接基于 OpenJDK 源代码构建的。所以一般来说,您应该看到几乎相同的兼容性。

您可能会考虑两个方面的问题:技术差异和 updates/patches 的时间表。

至于技术差异,使用 OpenJDK 项目的供应商可以随 HotSpot engine or the OpenJ9 engine 一起发布。这些将在性能上有所不同(faster/slower 启动与整体速度,more/less 内存),但它们在遵守 Java 规范方面的行为应该是相同的。它们 可能 不同,当然其中任何一个都可能存在另一个所没有的缺陷(可能很快就会修复)。就个人而言,我不会对此担心,但为了完整起见,我提到它。

另一个技术差异是 Azul Systems 的 Zing 和 Oracle 的 GraalVM 使用的 JVM 类型不同。这些 可能 在某些方面彼此或与其他产品不同,因为它们有意采用不同类型的 JVM 实现,以提供特殊功能。但考虑到 Java specs 的彻底性,它们应该不会不兼容。如果是的话,您可以期望任何兼容性问题都能得到快速解决。如果我需要这些产品中任何一个的特殊功能,我会充满信心地使用它们。

另一个可能的问题是供应商使用某些错误修复或安全补丁更新自己的版本的速度。例如,甲骨文声明他们保留立即将任何准备好的补丁发送给他们自己的客户的权利,同时将这些补丁提交给 OpenJDK 项目以供考虑。当然,任何提供商业支持的供应商都可能急于向他们的付费客户提供修复或补丁。那些免费提供给社区的版本可能需要更长时间才能更新,可能在 OpenJDK 项目合并了 fix/patch.

之后

并且每个供应商都可以随意修改他们的代码库,只要他们遵守 Java specs。例如,Amazon 的 Corretto 团队已经对他们自己的版本进行了改进,然后将这些更改分享到 OpenJDK 项目的上游。如果 OpenJDK 决定合并这些更改,可能会有时间间隔。因此,各种版本可能会有所不同。但在这一点上,Java 社区中的所有供应商似乎都真诚地承诺共同努力防止碎片化。所以,再一次,我在这里没有真正的担忧,但为了完整性而提到这一点。

zulu 仍然维护着 jre (11 - 16),并被一些供应商推荐。 您可以在他们的网站上下载:https://www.azul.com/downloads/zulu/