溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle JDK 和 OpenJDK 有什么區(qū)別

發(fā)布時間:2021-08-27 09:08:13 來源:億速云 閱讀:244 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“Oracle JDK 和 OpenJDK 有什么區(qū)別”,在日常操作中,相信很多人在Oracle JDK 和 OpenJDK 有什么區(qū)別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”O(jiān)racle JDK 和 OpenJDK 有什么區(qū)別”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

OpenJDK是Sun在2006年末把Java開源而形成的項目,這里的“開源”是通常意義上的源碼開放形式,即源碼是可被復(fù)用的,例如IcedTea、UltraViolet都是從OpenJDK源碼衍生出的發(fā)行版。

Oracle JDK采用了商業(yè)實現(xiàn),而OpenJDK使用的是開源的FreeType。當(dāng)然,“相同”是建立在兩者共有的組件基礎(chǔ)上的,Oracle JDK中還會存在一些Open JDK沒有的、商用閉源的功能,例如從JRockit移植改造而來的Java Flight Recorder。預(yù)計以后JRockit的MissionControl移植到HotSpot之后,也會以O(shè)racle JDK專有、閉源的形式提供。

Oracle的項目發(fā)布經(jīng)理Joe Darcy在OSCON 2011上對兩者關(guān)系的介紹也證實了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,兩者共用了大量相同的代碼(如下圖,注意圖中提示了兩者共同代碼的占比要遠(yuǎn)高于圖形上看到的比例),所以我們編譯的OpenJDK,基本上可以認(rèn)為性能、功能和執(zhí)行邏輯上都和官方的Oracle JDK是一致的。

Oracle JDK 和 OpenJDK 有什么區(qū)別

在大多數(shù)LINUX發(fā)行版本里,內(nèi)置或者通過軟件源安裝的JDK,都是安裝的OpenJDK。

# 什么是OpenJDK?

歷史上的原因是,OpenJDK是JDK的開放源碼版本,以GPL協(xié)議的形式發(fā)布。

(General Public License)


在JDK7的時候,OpenJDK已經(jīng)成為JDK7的主干開發(fā)版,SUN JDK7是在OpenJDK7的

基礎(chǔ)上發(fā)布的,其大部分源碼都相同,只有少部分源碼被替換掉。


使用JRL(Java Research License,Java研究授權(quán)協(xié)議)發(fā)布。


至于OpenJDK6則更是有其復(fù)雜的一面,首先是OpenJDK6是JDK7的一個分支,并且盡量去除Java SE7的新特性,使其盡量的符合Java6的標(biāo)準(zhǔn)。

# 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的關(guān)系

IcedTea項目最初是由于OpenJDK不完整(因產(chǎn)權(quán) 而造成的障礙)而創(chuàng)立的,社區(qū)需要

一個完整的開源工具鏈及代碼庫。


IcedTea長期以來一直是OpenJDK的一套補(bǔ)丁,正如剛才我所說到的,它有一個 基于

“./configure”的不同的構(gòu)建系統(tǒng)。


在OpenJDK中,我們已經(jīng)替換了產(chǎn)權(quán)代碼(encumbered code),因此不再有障礙了。

正因為我們的努力,IcedTea項目已經(jīng)減少了使用補(bǔ)丁的數(shù)量。


IcedTea中看上去不錯的一點是,它的 configure腳本使得在多種不同的模式下構(gòu)建

OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯

等等。


IcedTea提供的一大塊內(nèi)容是plugin/java-web-start基礎(chǔ)架構(gòu)。

5.部分源代碼用開源代碼替換

由于產(chǎn)權(quán)的問題,很多是SUN JDK的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。

6.不能使用Java商標(biāo)

這個很容易理解,在安裝OpenJDK的機(jī)器上,輸入“java -version”顯示的是OpenJDK,但是如果是使用Icedtea補(bǔ)丁的OpenJDK,顯示的是java。

(未驗證)

到此,關(guān)于“Oracle JDK 和 OpenJDK 有什么區(qū)別”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI