【JDK和Open JDK】日常使用的JDK和Open JDK有什麼區別

注意到這個問題,是在CentOS7上安裝JDK的時候,查找相關的資料,發現安裝JDK以前都須要檢查或卸載系統上原生的Open JDK,這才引發了注意。java

到了這裏,引用查到的一篇說明。字體

轉自:http://fgh2011.iteye.com/blog/1771649spa

 

歷史上的緣由是,openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在JDK7的時候,openjdk已經成爲jdk7的主幹開 發,sun jdk7是在openjdk7的基礎上發佈的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究受權協議)發佈。

至於openjdk6則更是有其複雜的一面,首先是openjdk6是jdk7的一個分支,而且儘可能去除Java SE7的新特性,使其儘可能的符合Java6的標準。

關於JDK和OpenJDK的區別,能夠概括爲如下幾點:

一.受權協議的不一樣:
openjdk採用GPL V2協議放出,而JDK則採用JRL放出。二者協議雖然都是開放源代碼的,可是在使用上的不一樣在於GPL V2容許在商業上使用,而JRL只容許我的研究使用。 開放源代碼


二.OpenJDK不包含Deployment(部署)功能:
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在Openjdk中是找不到的。 blog


三.OpenJDK源代碼不完整:
這個很容易想到,在採用GPL協議的Openjdk中,sun jdk的一部分源代碼由於產權的問題沒法開放openjdk使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。所以這些不能開放的源代碼 將它做成plug,以供OpenJDK編譯時使用,你也能夠選擇不要使用plug。而Icedtea則爲這些不完整的部分開發了相同功能的源代碼 (OpenJDK6),促使OpenJDK更加完整。 開發


四.部分源代碼用開源代碼替換:
因爲產權的問題,不少產權不是SUN的源代碼被替換成一些功能相同的開源代碼,好比說字體柵格化引擎,使用Free Type代替。 部署


五.openjdk只包含最精簡的JDK:
OpenJDK不包含其餘的軟件包,好比Rhino Java DB JAXP……,而且能夠分離的軟件包也都是儘可能的分離,可是這大多數都是自由軟件,你能夠本身下載加入。 it


六.不能使用Java商標:
這個很容易理解,在安裝openjdk的機器上,輸入「java -version」顯示的是openjdk,可是若是是使用Icedtea補丁的openjdk,顯示的是java。(未驗證) io


總之,在Java體系中,仍是有不少不自由的成分,源代碼的開發不夠完全,但願Oracle可以讓JCP更自由開放一些,這也是全部Java社區所但願的。編譯