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

新手上路,请多包涵

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

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

我正在使用 Windows 10。

原文由 user3848207 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 790
2 个回答

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

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

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

  3. 尝试从 OpenJDK 源代码为 Windows 推出您自己的 Windows JRE;请参阅 从 OpenJDK 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。另请参阅: OpenJDK 与 Adoptium/AdoptOpenJDK 之间的区别

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

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

(或者从 Windows 切换到 Linux。我可以在最新版本的 Ubuntu、Fedora 等上从发行包管理器安装一个 OpenJDK Java 11-only 包。)


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

Oracle JDK 11 许可证的重要变化

在 JDK 11 中,Oracle 更新了我们提供 Oracle JDK 所依据的许可条款。 适用于 Oracle Java SE 的新 Oracle 技术网许可协议与 提供以前版本的 JDK 所依据的许可有很大不同。在下载和使用本产品之前,请仔细阅读新条款。

Oracle 还在 jdk.java.net/11 上根据 GPL 许可证 提供该软件

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

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stephen C 的回答 是正确且重要的。

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

重要的:

学习关于:

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

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

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


以及一个映射可能的动机或考虑因素的表,这些动机或考虑因素导致建议的 Java 供应商。

选择 Java 供应商的动机

兼容性问题

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

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

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

您可能需要考虑两个方面的问题:技术差异和更新/补丁的时间表。

至于技术差异,使用 OpenJDK 项目的供应商可以随附 HotSpot 引擎OpenJ9 引擎。这些将在性能上有所不同(启动速度更快/更慢与整体速度、内存更多/更少),但它们在遵守 Java 规范方面的行为应该是相同的。它们 可能 有所不同,当然其中一个可能会出现另一个所没有的缺陷(可能很快就会修复)。就个人而言,我不会对此感到担忧,但为了完整起见,我会提到它。

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

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

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

原文由 Basil Bourque 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题