既然没有更多的 JRE11可供下载,我如何让 Java11运行时环境工作?

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

如果没有更多的 JRE11可供下载,我如何让我的电脑运行 Java11JRE?

我正在使用 Windows10。

54906 次浏览

现在,似乎没有免费的 + 简单的 Oracle 支持的 Java11 JRE (只有)选项。你的选项是:

  1. 从 OpenJDK 站点下载并使用 OpenJDKJava11JDK。

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

  3. 尝试从 OpenJDK 源滚动您自己的 Windows JRE for Windows; 请参阅 从 OpenJDK Windows 创建 jre

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

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

  6. 使用第三方 JavaJRE 发行版。

    • Java 供应商的列表随着时间的推移而变化,但是现在它包括 AdoptOpenJDK、 Amazon、 Azul、 BellSoft、 IBM、 jClarity、 Red Hat 和 SAP。另见: OpenJDK 与 Adopdium/AdoptOpenJDK 之间的区别

    • 其中一些供应商提供 JRE 发行版,请查看他们的下载网站。

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

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


如果有人认为 Oracle Java11和 OpenJDKJava11是相同的,请从 Oracle 下载网站阅读以下内容:

Oracle JDK 11许可证中的重要更改

通过 JDK11,Oracle 更新了我们提供 Oracle JDK 的许可条款。新的 Oracle 技术网络许可协议与之前提供 JDK 版本的许可证有很大不同。在下载和使用本产品之前,请仔细阅读新的条款。

Oracle 还在 jdk.java.net/11上的 GPL 许可证下提供此软件

注意,神使说 Oracle Java 和 OpenJDKJava 的许可证是不同的。(尽管两者基本上构建于相同的源代码基础之上。)无视这个,后果自负!

您可以使用“ toptopenjdk”项目网站下载最新的 jre 和 JDKhttps://github.com/AdoptOpenJDK/openjdk-jdk11

你可在此找到最新连结 > https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot

编辑: 问题已经解决

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

回答者: Stephen C是正确的,而且很重要。

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

重要提示:

了解详情:

桌面应用程序现在被期望捆绑自己的 Java 运行时。上面列出的那些工具可以创建一个非常小的运行时自定义适合您的特定应用程序。

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

Flowchart guiding you in choosing a vendor for a Java 11 implementation.png


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

Motivations in choosing a vendor for Java

兼容性问题

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

首先,要知道 OpenJDK 项目包括一个称为 OpenJDK 社区技术兼容工具包(TCK)的大型测试套件。供应商可以自行声明他们的版本是否通过了这些测试。这些主张没有得到证实,并依赖于荣誉制度。在我上面的图表中,我已经在我知道的几个自我声明的供应商上选中了“ TCK”: Oracle 的 Oracle JDK 和 Azul Systems 的 Zulu。

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

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

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

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

另一个可能的问题是,供应商可能使用某些 bug 修复或安全补丁更新自己的版本的速度。例如,Oracle 声明,他们保留立即向自己的客户发布任何现成补丁的权利,同时向 OpenJDK 项目提交这些补丁以供考虑。当然,任何提供商业支持的供应商都可能急于向付费客户提供修复或补丁。这些免费发布的版本可能需要更长的时间来更新,可能要等到 OpenJDK 项目包含了一个修复程序/补丁之后。

每个供应商都可以随意修改他们的代码库,只要他们遵守 Java 规格。例如,Amazon 的 Corretto 团队已经对他们自己的版本进行了改进,然后将这些改进分享到 OpenJDK 项目的上游。如果 OpenJDK 决定这样做的话,那么在 OpenJDK 包含这些变化之前可能会有一段时间的空白。因此,各种版本可能会有所不同。但是在这一点上,Java 社区中的所有供应商似乎都真诚地致力于合作以防止碎片化。所以,再一次,我在这里没有真正的关心,但提到这一点为了完整性。

Zulu 仍然维护 jre (11-16) ,并且它是由一些供应商推荐的。 你可以在他们的网站上下载这个 https://www.azul.com/downloads/zulu/