天天看點

你安裝的是 SUN/Oracle JDK 還是 OpenJDK?

你安裝的是 SUN/Oracle JDK 還是 OpenJDK?還傻傻分不清楚嗎?快來看看這篇吧😁

目錄

  • 1 如何檢視你安裝的JDK版本
    • 1.1 要用到的指令行工具
    • 1.2 檢視JDK的版本
  • 2 什麼是 OpenJDK
    • 2.1 OpenJDK 的來曆
    • 2.2 Oracle JDK的來曆
  • 3 Oracle JDK與OpenJDK的差別
    • 3.1 主要不同
    • 3.2 授權協定的不同
    • 3.3 OpenJDK不包含Deployment功能
    • 3.4 OpenJDK源碼不完整
  • 參考資料
  • 版權聲明

Windows系統的

cmd

指令行工具;

Linux或macOS系統的

Terminal

終端;

java -version
           

(1) 如果是SUN/OracleJDK, 顯示資訊為:

[root@localhost ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
           

說明:

Java HotSpot(TM) 64-Bit Server VM

表明, 此JDK的JVM是Oracle的64位HotSpot虛拟機, 運作在Server模式下(虛拟機有Server和Client兩種運作模式).

Java(TM) SE Runtime Environment (build 1.8.0_162-b12)

是Java運作時環境(即JRE)的版本資訊.

(2) 如果OpenJDK, 顯示資訊為:

[root@localhost ~]# java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)
           

PS. 主要的Linux發行版(如Ubuntu, Fedora和Red Hat Enterprise Linux) 提供OpenJDK或其變體作為系統預設的Java SE的實作.

百度百科上關于OpenJDK的說明:

Sun釋出的OpenJDK是一款隻能運作在i386和AMD-64機器上的軟體。

Java由SUN公司(Sun Microsystems, 發起于美國斯坦福大學, SUN是Stanford University Network的縮寫)發明, 2006年SUN公司将Java開源, 此時的JDK即為OpenJDK.

也就是說, OpenJDK是Java SE的開源實作, 它由SUN和Java社群提供支援, 2009年Oracle收購了Sun公司, 自此Java的維護方之一的SUN也變成了Oracle .

大多數JDK都是在OpenJDK的基礎上編寫實作的, 比如IBM J9, Azul Zulu, Azul Zing和Oracle JDK. 幾乎現有的所有JDK都派生自OpenJDK, 它們之間不同的是許可證:

OpenJDK根據許可證GPL v2釋出;

Oracle JDK根據Oracle二進制代碼許可協定獲得許可.

Oracle JDK之前被稱為SUN JDK, 這是在2009年Oracle收購SUN公司之前, 收購後被命名為Oracle JDK.

實際上, Oracle JDK是基于OpenJDK源代碼建構的, 是以Oracle JDK和OpenJDK之間沒有重大的技術差異.

Oracle的項目釋出經理Joe Darcy在OSCON 2011 上對兩者關系的介紹也證明了OpenJDK 7和Oracle JDK 7在程式上是非常接近的, 兩者共用了大量相同的代碼(如下圖), 注意: 圖中提示了兩者共同代碼的占比要遠高于圖形上看到的比例, 是以我們編譯的OpenJDK基本上可以認為性能、功能和執行邏輯上都和官方的Oracle JDK是一緻的.

你安裝的是 SUN/Oracle JDK 還是 OpenJDK?

OpenJDK Font Renderer(字型栅格化引擎) 和Oracle JDK Flight Recorder(飛行記錄儀) 是Oracle JDK和OpenJDK之間明顯的主要差別. —— 存疑, 尚未求證.

OpenJDK使用的是開源免費的FreeType, 可以按照GPL v2許可證使用.

Oracle JDK采用了商業實作, 其中的Flight Recorder和MissionControl都是從JRockit中改造而來的.

JRockit是Oracle的JVM, 從Java SE 7開始, HotSpot和JRockit合并為一個JVM.

OpenJDK采用GPL V2協定放出, 而Oracle JDK則采用JRL(Java Research License, Java研究授權協定) 放出. 兩種者雖然都是開放源代碼的, 但在使用上卻要注意:

GPL V2允許在商業上使用;

JRL隻允許個人研究使用, 要獲得Oracle JDK的商業許可證, 需要聯系Oracle的銷售人員進行購買.

部署的功能包括: Browser Plugin、Java Web Start、Java Mission Control, 這些功能OpenJDK都沒有.

在采用GPL協定的OpenJDK中, SUN JDK的一部分源碼因為産權問題無法提供給OpenJDK使用, 其中最主要的是JMX中的可選元件SNMP部份的代碼, 是以這些不能開放的源碼将它作成plug, 以供 OpenJDK編譯時使用.

如何看本地安裝的jdk是Sun/Oraclejdk還是Openjdk

Oracle JDK vs OpenJDK and Java JDK Development Process

Differences between Oracle JDK and OpenJDK

作者: 馬瘦風

出處: 部落格園 馬瘦風的部落格

您的支援是對部落客的極大鼓勵, 感謝您的閱讀.

本文版權歸部落客所有, 歡迎轉載, 但請保留此段聲明, 并在文章頁面明顯位置給出原文連結, 否則部落客保留追究相關人員法律責任的權利.