openjdk與Oraclejdk的區(qū)別
在2006年11月13日的JavaOne大會上,Sun公司(當(dāng)時(shí)還沒被收購)宣布計(jì)劃要把Java開源,在隨后的一年多時(shí)間內(nèi),它陸續(xù)地將JDK的各個(gè)部分在GPL v2(GNU General Public License v2)協(xié)議下公開了源碼,并建立了OpenJDK組織對這些源碼進(jìn)行獨(dú)立管理。除了極少量的產(chǎn)權(quán)代碼(Encumbered Code,這部分代碼所有權(quán)不屬于Sun公司,Sun本身也無權(quán)進(jìn)行開源處理)外,OpenJDK幾乎擁有了當(dāng)時(shí)SunJDK 的全部代碼。
OpenJDK的質(zhì)量主管曾經(jīng)表示在JDK 7中,SunJDK和OpenJDK除了代碼文件頭的版權(quán)注釋之外,代碼幾乎是完全一樣的,所以O(shè)penJDK 7與SunJDK 7本質(zhì)上就是同一套代碼庫出來的產(chǎn)品。

總結(jié)下來,OpenJDK和OracleJDK存在以下方面的區(qū)別:
授權(quán)協(xié)議不同
OpenJDK 采用GPL V2協(xié)議放出,而OracleJDK則采用JRL放出。兩者協(xié)議雖然都是開放源代碼的,但是在使用上的不同在于GPL V2允許在商業(yè)上使用,而JRL只允許個(gè)人研究使用。
OpenJDK不包含OracleJDK中的部分產(chǎn)權(quán)代碼
由于OracleJDK中的部分代碼的產(chǎn)權(quán)也不是歸Oracle所有的,所以這部分代碼就沒開源到OpenJDK中。但是很多“好心”的開源愛好者在OpenJDK中實(shí)現(xiàn)了相同的功能,并將源代碼開源到OpenJDK中。比如說字體柵格化引擎,使用Free Type代替。
不能使用Java商標(biāo)
在Sun被Oracle收購以后,Java這個(gè)商標(biāo)就歸Oracle所有了。不僅OpenJDK不能使用java商標(biāo),J2EE這個(gè)曾經(jīng)Sun的親兒子命運(yùn)也同樣坎坷,已經(jīng)被Oracle無情拋棄,同樣
不能在使用Java商標(biāo)。
但是隨著JDK版本的不斷發(fā)布,Oracle失去了維護(hù)OpenJDK的耐心,因?yàn)椴毁嶅X啊。RedHat從Oracle手上接過OpenJDK的管理權(quán)利和維護(hù)職責(zé)。
2019年3月20日,JDK 12發(fā)布,只包含8個(gè)JEP,其中主要有Switch表達(dá)式、Java微測試套件(JMH)等新功能,最引人注目的特性無疑是加入了由RedHat領(lǐng)導(dǎo)開發(fā)的Shen-andoah垃圾收集器。Shenandoah作為首個(gè)由非Oracle開發(fā)的垃圾收集器,其目標(biāo)又與Oracle在JDK 11中發(fā)布的ZGC幾乎完全一致,兩者天生就存在競爭。Oracle馬上用實(shí)際行動(dòng)抵制了這個(gè)新收集器,在JDK 11發(fā)布時(shí)才說應(yīng)盡可能保證OracleJDK和OpenJDK的兼容一致,轉(zhuǎn)眼就在OracleJDK 12里把Shenandoah的代碼通過條件編譯強(qiáng)行剔除掉,使其成為歷史上唯一進(jìn)入了OpenJDK發(fā)布清單,但在OracleJDK中無法使用的功能。
所以對于高版本的OpenJDK和OracleJDK之間,也存在OpenJDK中有的功能,但是OracleJDK中不包含的。
總的來說,對于普通開發(fā),使用OpenJDK和OracleJDK并沒有太大差別,兩者的差別更體現(xiàn)在商業(yè)考量上面。
openjdk源代碼不完整
這個(gè)很容易想到,在采用GPL協(xié)議的OpenJDK中,SUN JDK的一部分源代碼因?yàn)楫a(chǎn)權(quán)的問題無法開放給OpenJDK使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。因此這些不能開放的源代碼 將它作成plug,以供OpenJDK編譯時(shí)使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開發(fā)了相同功能的源代碼 (OpenJDK6),促使OpenJDK更加完整。
總結(jié)
其他區(qū)別歡迎各位指出
以上就是openjdk與Oraclejdk的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于openjdk與Oraclejdk的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVA 根據(jù)身份證計(jì)算年齡的實(shí)現(xiàn)代碼
這篇文章主要介紹了JAVA 根據(jù)身份證計(jì)算年齡的實(shí)例代碼及java根據(jù)出生日期獲得年齡的方法,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
Java 中DateUtils日期工具類的實(shí)例詳解
這篇文章主要介紹了Java 中DateUtils日期工具類的實(shí)例詳解的相關(guān)資料,有時(shí)候開發(fā)java項(xiàng)目使用日期類型,這里介紹下日期工具類,需要的朋友可以參考下2017-08-08
深入探究Java線程的創(chuàng)建與構(gòu)造方法
這篇文章主要給大家分享的是java線程的創(chuàng)建以及構(gòu)造方法,想了解具體方式的小伙伴可以參考下面文章內(nèi)容,希望對你有所幫助2022-04-04

