1 如何查看你安裝的JDK版本
1.1 要用到的命令行工具
Windows系統的
cmd命令行工具;Linux或macOS系統的
Terminal終端;
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)的版本信息.
(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的實現.
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是一致的.
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
版權聲明
作者: 馬瘦風
出處: 博客園 馬瘦風的博客
您的支持是對博主的極大鼓勵, 感謝您的閱讀.
本文版權歸博主所有, 歡迎轉載, 但請保留此段聲明, 並在文章頁面明顯位置給出原文鏈接, 否則博主保留追究相關人員法律責任的權利.
