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

[TOC]java

1 如何查看你安裝的JDK版本

1.1 要用到的命令行工具

Windows系統的cmd命令行工具;shell

Linux或macOS系統的Terminal終端;oracle

1.2 查看JDK的版本

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)的版本信息.ui

(2) 若是OpenJDK, 顯示信息爲:spa

[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的實現..net

2 什麼是 OpenJDK

百度百科上關於OpenJDK的說明:開放源代碼

Sun發佈的OpenJDK是一款只能運行在i386和AMD-64機器上的軟件。

2.1 OpenJDK 的來歷

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二進制代碼許可協議得到許可.

2.2 Oracle JDK的來歷

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是一致的.

<img src="https://img2018.cnblogs.com/blog/1438655/201809/1438655-20180928174818669-817981474.png" width="65%" alt="OpenJDK與Oracle JDK之間的區別" />

3 Oracle JDK與OpenJDK的區別

3.1 主要不一樣

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.

3.2 受權協議的不一樣

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

GPL V2容許在商業上使用;

JRL只容許我的研究使用, 要得到Oracle JDK的商業許可證, 須要聯繫Oracle的銷售人員進行購買.

3.3 OpenJDK不包含Deployment功能

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

3.4 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

版權聲明

做者: 馬瘦風

出處: 博客園 馬瘦風的博客

您的支持是對博主的極大鼓勵, 感謝您的閱讀.

本文版權歸博主全部, 歡迎轉載, 但請保留此段聲明, 並在文章頁面明顯位置給出原文連接, 不然博主保留追究相關人員法律責任的權利.

相關文章
相關標籤/搜索