如何查看你安裝的JDK版本
1.要用到的命令行工具
Windows系統的cmd命令行工具;
Linux或macOS系統的Terminal終端;
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)
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)
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二進制代碼許可協議獲得許可.
openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在JDK7的時候,openjdk已經成為jdk7的主干開 發,sun jdk7是在openjdk7的基礎上發布的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權協議)發布。
至於openjdk6則更是有其復雜的一面,首先是openjdk6是jdk7的一個分支,並且盡量去除Java SE7的新特性,使其盡量的符合Java6的標准。
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是一致的.
Oracle JDK與OpenJDK的區別
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.
2 授權協議的不同
OpenJDK采用GPL V2協議放出, 而Oracle JDK則采用JRL(Java Research License, Java研究授權協議) 放出. 兩種者雖然都是開放源代碼的, 但在使用上卻要注意:
GPL V2允許在商業上使用;
JRL只允許個人研究使用, 要獲得Oracle JDK的商業許可證, 需要聯系Oracle的銷售人員進行購買.
3 OpenJDK不包含Deployment功能
部署的功能包括: Browser Plugin、Java Web Start、Java Mission Control, 這些功能OpenJDK都沒有.
4 OpenJDK源碼不完整
在采用GPL協議的OpenJDK中, SUN JDK的一部分源碼因為產權問題無法提供給OpenJDK使用, 其中最主要的是JMX中的可選元件SNMP部份的代碼, 因此這些不能開放的源碼將它作成plug, 以供 OpenJDK編譯時使用.