Java 版本以及如何避免混淆它们

Java 版本以及如何避免混淆它们

我知道有 JRE 和 JVM。我也用 Java 编程过,所以不算是完全的初学者。但是最近我变得非常困惑,希望有人能及时回复我的问题。

我拥有哪个版本的 JRE 和 JVM,哪个是最新版本?

现在,在我感觉要告诉我“谷歌一下”之前,我已经谷歌过了。因此我感到困惑。

在里面Java 主页它说:

在 Java 控制面板的常规选项卡下,可通过“关于”部分查看版本。单击“关于”后,将出现一个对话框,其中显示 Java 版本。

好吧,我这样做了,并且我有版本 8 Update71。

该主页上还写道:

JRE 和 JDK 是分开的,可以在您的系统上共存。Mac 上只能安装一个 JRE。系统上可以安装多个 JDK,数量不限。

好吧,我已经知道了。所以我按照他们说的从终端获取版本,然后我得到了

java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

好吧,看起来是一样的。那么问题来了:

我拥有哪个版本?我的意思是版本 8 是 JRE 版本?还是 JVM 版本?在主页上,虽然他们区分了它们(如引文所示),但获取版本的说明是相同!

更复杂的是,我去维基百科上面说目前支持的版本是 Java 8 和 Java 11。为什么是两个?9 和 10 又是怎么回事?再说一遍,这些是 JRE 还是 JVM?

谁可以给我解释一下这个?

答案1

在我看来,您的问题在同一篇维基百科文章中得到了回答:

目前支持 Java 8 和 Java 11长期支持(LTS) 版本,而 Java 10 是之前支持的快速发布版本。Java 10 的支持结束日期与 Java 11 的支持开始日期相同,即 2018 年 9 月。Java 7 不再公开支持,Java 9 已停止接收更新。由于 Java 9 是一个短期快速发布版本,已被 Java 10 取代,并且 Java 8 的“公开更新结束”计划于 2019 年 1 月(用于商业用途)结束,而非商业用途则不会早于 2020 年 12 月结束。对于 Java 11,Oracle 不会提供长期支持;相反,更广泛的 OpenJDK 社区(即 AdoptOpenJDK)将负责这项工作。

所以版本 9 和 10 是短暂的。我猜它们是为了应对严重的安全漏洞而仓促推出的权宜之计。

版本 8 是 Oracle 仍支持的最后一个版本,分为 JDK 和 JRE。版本 11 似乎已经放弃了这种划分,只拥有基于 OpenJDK 的统一 JDK 版本,因此它可能不具备 Oracle Java 付费版本的性能增强。

为了找到 Linux 上拥有的版本,我想您可以查询已安装的软件包。

在 Windows 上,您可以在以下位置的 32 位和 64 位注册表中找到该信息:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

您还可以在以下位置找到该信息控制面板 > Java(32 位)或者 控制面板 > Java(64 位)

在此处输入图片描述

答案2

您混淆了某些术语,并且您使用的是 Mac,而 Oracle 也混淆了其中的一些术语。

我认为有四种不同的事情。

  1. JVM(Java 虚拟机)存在于 Java 的所有版本中,是运行 Java 编译类文件的可执行文件。它不可直接下载,但属于其他 3 个项目的一部分。java -version 显示您正在使用的版本。

  2. JDK(Java 开发工具包)这是编写程序时所需的安装。它包括编译器和其他工具。对于安装了 Oracle 版本的 macOS,这是唯一提供可通过 /usr/bin/java 启动的环境的下载

  3. JRE(Java 运行时环境)。在 Windows、Linux 和 Apple 版本的 Java 中,它提供了从命令行运行 Java 程序所需的最少文件选择。它似乎不存在于 Oracle macOs 版本中,但这是 Java 版本显示的 Java(TM) SE 运行时环境。

  4. macOS 上的 JRE(Java 运行时环境)。来自 Oracle,这是在浏览器中运行 Java 小程序的环境。这是您在 Mac 上只能拥有一个的 JRE。这也是系统偏好设置中的 Java 控制面板可查看和更新​​的 JRE。

因此,在 macOS 上,您可以从命令行安装 JDK,其中包括 JRE 和 JVM,您可以拥有多个版本。还有一个单独的 JRE(与命令行不同),它在您的浏览器中运行小程序,并且位于 Java 控制面板中,您只能拥有其中的一个。

至于版本号等,据我所知,第 8 版之后版本号有所变化。维基百科说

2017 年 9 月,Java 平台首席架构师 Mark Reinhold 提议将发布序列改为“每六个月发布一个功能”,而不是目前的两年发布一次的时间表[1][2],随后该提议生效。

因此,9、10 号已被 11 号取代,12 号将于 2019 年 3 月到期 - 请参阅https://en.wikipedia.org/wiki/Java_version_history关于时间和支持情况。

要从命令行运行,找到可以使用的 JVM/usr/libexec/java_home -V

我明白了

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Matching Java Virtual Machines (6):
11.0.1, x86_64: "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
10.0.1, x86_64: "Java SE 10.0.1"    /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_171, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_92, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

安装并选择要安装的 JDK,请参阅https://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching

相关内容