openjdk sunjdk区别
使用過(guò)LINUX的人都應(yīng)該知道,在大多數(shù)LINUX發(fā)行版本里,內(nèi)置或者通過(guò)軟件源安裝JDK的話,都是安裝的openjdk,那么到底什么是openjdk,它與sun jdk有什么關(guān)系和區(qū)別呢?
歷史上的原因是,openjdk是jdk的開(kāi)放原始碼版本,以GPL協(xié)議的形式放出。在JDK7的時(shí)候,openjdk已經(jīng)成為jdk7的主干開(kāi) 發(fā),sun jdk7是在openjdk7的基礎(chǔ)上發(fā)布的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權(quán)協(xié)議)發(fā)布。
至于openjdk6則更是有其復(fù)雜的一面,首先是openjdk6是jdk7的一個(gè)分支,并且盡量去除Java SE7的新特性,使其盡量的符合Java6的標(biāo)準(zhǔn)。
關(guān)于JDK和OpenJDK的區(qū)別,可以歸納為以下幾點(diǎn):
授權(quán)協(xié)議的不同:
openjdk采用GPL V2協(xié)議放出,而JDK則采用JRL放出。兩者協(xié)議雖然都是開(kāi)放源代碼的,但是在使用上的不同在于GPL V2允許在商業(yè)上使用,而JRL只允許個(gè)人研究使用。
OpenJDK不包含Deployment(部署)功能:
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在Openjdk中是找不到的。
OpenJDK源代碼不完整:
這個(gè)很容易想到,在采用GPL協(xié)議的Openjdk中,sun jdk的一部分源代碼因?yàn)楫a(chǎn)權(quán)的問(wèn)題無(wú)法開(kāi)放openjdk使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。因此這些不能開(kāi)放的源代碼 將它作成plug,以供OpenJDK編譯時(shí)使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開(kāi)發(fā)了相同功能的源代碼 (OpenJDK6),促使OpenJDK更加完整。
部分源代碼用開(kāi)源代碼替換:
由于產(chǎn)權(quán)的問(wèn)題,很多產(chǎn)權(quán)不是SUN的源代碼被替換成一些功能相同的開(kāi)源代碼,比如說(shuō)字體柵格化引擎,使用Free Type代替。
openjdk只包含最精簡(jiǎn)的JDK:
OpenJDK不包含其他的軟件包,比如Rhino Java DB JAXP……,并且可以分離的軟件包也都是盡量的分離,但是這大多數(shù)都是自由軟件,你可以自己下載加入。
不能使用Java商標(biāo):
這個(gè)很容易理解,在安裝openjdk的機(jī)器上,輸入“java -version”顯示的是openjdk,但是如果是使用Icedtea補(bǔ)丁的openjdk,顯示的是java。(未驗(yàn)證)
總之,在Java體系中,還是有很多不自由的成分,源代碼的開(kāi)發(fā)不夠徹底,希望Oracle能夠讓JCP更自由開(kāi)放一些,這也是所有Java社區(qū)所希望的。
總結(jié)
以上是生活随笔為你收集整理的openjdk sunjdk区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wdtree简介、使用
- 下一篇: 【crunch bang】 tint2-