OpenJDK和JDK區別


如何查看你安裝的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編譯時使用.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM