OpenJDK和Oracle/SunJDK有什么關(guān)系

本篇內(nèi)容介紹了“Open JDK和Oracle/Sun JDK有什么關(guān)系”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有瀘州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

背景回溯

歷史上的原因是,OpenJDK是JDK的開放原始碼版本,以GPL協(xié)議的形式放出。在JDK7的時(shí)候,OpenJDK已經(jīng)成為JDK7的主干開發(fā),Sun/Oracle JDK7是在OpenJDK7的基礎(chǔ)上發(fā)布的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權(quán)協(xié)議)發(fā)布。至于OpenJDK6則更是有其復(fù)雜的一面,首先是OpenJDK6是JDK7的一個(gè)分支,并且盡量去除Java SE7的新特性,使其盡量的符合Java6的標(biāo)準(zhǔn)。

Oracle JDK的基本介紹

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

oracle jdk的版本展示形式

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Open JDK的基本介紹

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

OpenJDK的版本展示形式

[root@localhost ~]# java -version
java version "1.6.0_39"
OpenJDK Runtime Environment (IcedTea6 1.13.11) (rhel-1.13.11.0.el5_11-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

Open JDK和Oracle JDK的關(guān)系

Linux的人都應(yīng)該知道,在大多數(shù)LINUX發(fā)行版本里,內(nèi)置或者通過軟件源安裝JDK的話,都是安裝的OpenJDK,那么到底什么是OpenJDK,它與Oracle JDK有什么關(guān)系和區(qū)別呢?

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

Open JDK和Oracle/Sun JDK有什么關(guān)系

授權(quán)協(xié)議的不同

OpenJDK采用GPL V2協(xié)議發(fā)布,而JDK則采用JRL協(xié)議發(fā)布。兩個(gè)協(xié)議雖然都是開放源代碼的,但是在使用上的不同在于GPL V2允許在商業(yè)上使用,而JRL只允許個(gè)人研究使用。

Oracle/Sun JDK能用于商業(yè)用途的license是SCSL(Sun Community Source License)。JRL(Java Research License)是2004年開始用的,伴隨Sun JDK6發(fā)布而開始使用,遠(yuǎn)比JDK7早。

OpenJDK只包含最精簡的JDK

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

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更加完整

OpenJDK和IcedTea的關(guān)系

  • IcedTea項(xiàng)目最初是由于OpenJDK不完整(因產(chǎn)權(quán) 而造成的障礙)而創(chuàng)立的,社區(qū)需要一個(gè)完整的開源工具鏈及代碼庫。

  • IcedTea長期以來一直是OpenJDK的一套補(bǔ)丁,正如剛才我所說到的,它有一個(gè) 基于“./configure”的不同的構(gòu)建系統(tǒng)。

  • 在OpenJDK中,我們已經(jīng)替換了產(chǎn)權(quán)代碼(encumbered code),因此不再有障礙了。正因?yàn)槲覀兊呐?,IcedTea項(xiàng)目已經(jīng)減少了使用補(bǔ)丁的數(shù)量。

  • IcedTea中看上去不錯(cuò)的一點(diǎn)是,它的 configure腳本使得在多種不同的模式下構(gòu)建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。

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

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

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

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

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

OpenJDK不包含Deployment(部署)功能:

部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在OpenJDK中是找不到的。

從代碼完整性來說:

Sun/Oracle JDK > SCSL > JRL > OpenJDK

  • Sun/Oracle JDK有少量代碼是完全不開發(fā)的,即便在SCSL版里也沒有。這種代碼非常非常少。

  • SCSL代碼比JRL多一些closed目錄里的內(nèi)容。

  • JRL比OpenJDK多一些受license影響而無法以GPLv2開放的內(nèi)容。

但從Oracle JDK7/OpenJDK7開始,閉源和開源版的實(shí)質(zhì)差異實(shí)在是非常非常小。與其說OpenJDK7是“不完整的JDK”,還不如說Oracle JDK7在OpenJDK7的基礎(chǔ)上帶了一些value-add,其中很多還沒啥用(例如browser plugin)。

個(gè)人分析理解:

  • JDK有兩種叫法,早期叫做Sun JDK,現(xiàn)在是Oracle JDK,其實(shí)都是同一個(gè)東西。但這種說法也不一定準(zhǔn)確,因?yàn)镺penJDK也叫做Oracle OpenJDK。

  • 然而最簡單直白的理解,也屬于個(gè)人理解:OpenJDK是JDK的開源代碼,也不算全是,因?yàn)樵贘DK部分,有一些是Oracle未開放源代碼的,還有就是有一些的歷史原因。

OpenJDK和IcedTea的關(guān)系

IcedTea項(xiàng)目最初是由于OpenJDK不完整(因產(chǎn)權(quán) 而造成的障礙)而創(chuàng)立的,社區(qū)需要一個(gè)完整的開源工具鏈及代碼庫。IcedTea長期以來一直是OpenJDK的一套補(bǔ)丁,正如剛才我所說到的,它有一個(gè) 基于“./configure”的不同的構(gòu)建系統(tǒng)。 在OpenJDK中,我們已經(jīng)替換了產(chǎn)權(quán)代碼(encumbered code),因此不再有障礙了。正因?yàn)槲覀兊呐?,IcedTea項(xiàng)目已經(jīng)減少了使用補(bǔ)丁的數(shù)量。IcedTea中看上去不錯(cuò)的一點(diǎn)是,它的 configure腳本使得在多種不同的模式下構(gòu)建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。 IcedTea提供的一大塊內(nèi)容是plugin/java-web-start基礎(chǔ)架構(gòu)。

“Open JDK和Oracle/Sun JDK有什么關(guān)系”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文題目:OpenJDK和Oracle/SunJDK有什么關(guān)系
分享路徑:http://bm7419.com/article10/pschdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、域名注冊、網(wǎng)站策劃微信公眾號(hào)、網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司