天天看點

【JDK和Open JDK】平常使用的JDK和Open JDK有什麼差別

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

到了這裡,引用查到的一篇說明。

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

曆史上的原因是,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中是找不到的。

三.OpenJDK源代碼不完整:

這個很容易想到,在采用GPL協定的Openjdk中,sun

jdk的一部分源代碼因為産權的問題無法開放openjdk使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。是以這些不能開放的源代碼

将它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開發了相同功能的源代碼

(OpenJDK6),促使OpenJDK更加完整。

四.部分源代碼用開源代碼替換:

由于産權的問題,很多産權不是SUN的源代碼被替換成一些功能相同的開源代碼,比如說字型栅格化引擎,使用Free Type代替。

五.openjdk隻包含最精簡的JDK:

OpenJDK不包含其他的軟體包,比如Rhino Java DB JAXP……,并且可以分離的軟體包也都是盡量的分離,但是這大多數都是自由軟體,你可以自己下載下傳加入。

六.不能使用Java商标:

這個很容易了解,在安裝openjdk的機器上,輸入“java -version”顯示的是openjdk,但是如果是使用Icedtea更新檔的openjdk,顯示的是java。(未驗證)

總之,在Java體系中,還是有很多不自由的成分,源代碼的開發不夠徹底,希望Oracle能夠讓JCP更自由開放一些,這也是所有Java社群所希望的。