OpenJDK是Sun在2006年末把Java開源而形成的項目,這里的“開源”是通常意義上的源碼開放形式,即源碼是可被復用的,例如IcedTea、UltraViolet都是從OpenJDK源碼衍生出的發(fā)行版。
Oracle JDK采用了商業(yè)實現(xiàn),而OpenJDK使用的是開源的FreeType。
當然,“相同”是建立在兩者共有的組件基礎上的,Oracle JDK中還會存在一些Open JDK沒有的、商用閉源的功能。
例如從JRockit移植改造而來的Java Flight Recorder,預計以后JRockit的MissionControl移植到HotSpot之后,也會以Oracle JDK專有、閉源的形式提供。
Oracle的項目發(fā)布經(jīng)理Joe Darcy在OSCON 2011上對兩者關系的介紹也證實了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,兩者共用了大量相同的代碼.。
如下圖,注意圖中提示了兩者共同代碼的占比要遠高于圖形上看到的比例,所以我們編譯的OpenJDK,基本上可以認為性能、功能和執(zhí)行邏輯上都和官方的Oracle JDK是一致的。
在大多數(shù)Linux發(fā)行版本里,內(nèi)置或者通過軟件源安裝的JDK,都是安裝的OpenJDK。
什么是OpenJDK?
歷史上的原因是,OpenJDK是JDK的開放源碼版本,以GPL協(xié)議的形式發(fā)布。
開源協(xié)議參考: 軟件開發(fā)中的開源協(xié)議詳解
在JDK7的時候,OpenJDK已經(jīng)成為JDK7的主干開發(fā)版,SUN JDK7是在OpenJDK7的 基礎上發(fā)布的,其大部分源碼都相同,只有少部分源碼被替換掉。 使用JRL(Java Research License,Java研究授權(quán)協(xié)議)發(fā)布。
至于OpenJDK6則更是有其復雜的一面,首先是OpenJDK6是JDK7的一個分支,并且盡量去除Java SE7的新特性,使其盡量的符合Java6的標準。
JDK和OpenJDK的區(qū)別
1.授權(quán)協(xié)議的不同
OpenJDK采用GPL V2協(xié)議發(fā)布,而JDK則采用JRL協(xié)議發(fā)布。兩個協(xié)議雖然都是開放源代碼的,但是在使用上的不同在于GPL V2允許在商業(yè)上使用, 而JRL只允許個人研究使用。
2.OpenJDK只包含最精簡的JDK
OpenJDK不包含其他的軟件包,比如Rhino Java DB JAXP……,并且可以分離的軟件包也都是盡量的分離,但是這大多數(shù)都是自由軟件,你可以自己下載加入。
3.OpenJDK源代碼不完整
這個很容易想到,在采用GPL協(xié)議的OpenJDK中,SUN JDK的一部分源代碼因為產(chǎn)權(quán)的問題無法開放OpenJDK使用,其中最主要的部分就是JMX中的可選元件SNMP部分的代碼。
因此這些不能開放的源代碼將它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。
而Icedtea則為這些不完整的部分開發(fā)了相同功能的源代碼(OpenJDK6),促使OpenJDK更加完整。
4.OpenJDK和IcedTea的關系
IcedTea項目最初是由于OpenJDK不完整(因產(chǎn)權(quán) 而造成的障礙)而創(chuàng)立的,社區(qū)需要一個完整的開源工具鏈及代碼庫。
IcedTea長期以來一直是OpenJDK的一套補丁,正如剛才我所說到的,它有一個 基于“./configure”的不同的構(gòu)建系統(tǒng)。
在OpenJDK中,我們已經(jīng)替換了產(chǎn)權(quán)代碼(encumbered code),因此不再有障礙了。 正因為我們的努力,IcedTea項目已經(jīng)減少了使用補丁的數(shù)量。
IcedTea中看上去不錯的一點是,它的 configure腳本使得在多種不同的模式下構(gòu)建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。
IcedTea提供的一大塊內(nèi)容是plugin/java-web-start基礎架構(gòu)。
5.部分源代碼用開源代碼替換
由于產(chǎn)權(quán)的問題,很多是SUN JDK的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。
6.不能使用Java商標
這個很容易理解,在安裝OpenJDK的機器上,輸入“java -version”顯示的是OpenJDK。
-
JAVA
+關注
關注
19文章
2975瀏覽量
105168 -
JDK
+關注
關注
0文章
82瀏覽量
16637
發(fā)布評論請先 登錄
相關推薦
適用于Oracle的Devart Excel插件:輕松管理數(shù)據(jù)
![適用于<b class='flag-5'>Oracle</b>的Devart Excel插件:輕松管理數(shù)據(jù)](https://file1.elecfans.com/web3/M00/05/EC/wKgZO2eF1nGAFIvLAABAbPVEcKA860.png)
AN29-關于DC-DC轉(zhuǎn)換器的一些想法
![AN29-關于DC-DC轉(zhuǎn)換器的<b class='flag-5'>一些</b>想法](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
一些常見的動態(tài)電路
![<b class='flag-5'>一些</b>常見的動態(tài)電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
分享一些常見的電路
![分享<b class='flag-5'>一些</b>常見的電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
Oracle數(shù)據(jù)恢復—異常斷電后Oracle數(shù)據(jù)庫啟庫報錯的數(shù)據(jù)恢復案例
![<b class='flag-5'>Oracle</b>數(shù)據(jù)恢復—異常斷電后<b class='flag-5'>Oracle</b>數(shù)據(jù)庫啟庫報錯的數(shù)據(jù)恢復案例](https://file1.elecfans.com/web2/M00/08/B8/wKgZomb6Ns-AbiICAAFlXAFpKKU086.png)
Oracle數(shù)據(jù)恢復—Oracle數(shù)據(jù)庫delete刪除的數(shù)據(jù)恢復方法
Oracle數(shù)據(jù)恢復—Oracle刪除數(shù)據(jù)不用怕!這些數(shù)據(jù)恢復方法了解一下
咨詢一些關于LED燈具的問題
JDK8升級JDK11最全實踐干貨來了
![<b class='flag-5'>JDK</b>8升級<b class='flag-5'>JDK</b>11最全實踐干貨來了](https://file1.elecfans.com//web2/M00/F2/CF/wKgZomZ6aOaAKPm3AAIWgNCnYEM823.png)
JDK11升級JDK17最全實踐干貨來了
![<b class='flag-5'>JDK</b>11升級<b class='flag-5'>JDK</b>17最全實踐干貨來了](https://file1.elecfans.com//web2/M00/F2/CF/wKgZomZ6aKOAD22HAAi5bgySCzk303.png)
評論