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 支援於 2018 年 9 月開始支援 Java 11 的同一天結束。由於 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 控制面板看到和更新的。

因此,在 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

相關內容