您好,登錄后才能下訂單哦!
本篇內容介紹了“Open JDK和Oracle/Sun JDK有什么關系”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
歷史上的原因是,OpenJDK是JDK的開放原始碼版本,以GPL協議的形式放出。在JDK7的時候,OpenJDK已經成為JDK7的主干開發,Sun/Oracle JDK7是在OpenJDK7的基礎上發布的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權協議)發布。至于OpenJDK6則更是有其復雜的一面,首先是OpenJDK6是JDK7的一個分支,并且盡量去除Java SE7的新特性,使其盡量的符合Java6的標準。
Oracle JDK采用了商業實現,當然,“相同”是建立在兩者共有的組件基礎上的,Oracle JDK中還會存在一些Open JDK沒有的、商用閉源的功能,例如從JRockit移植改造而來的Java Flight Recorder。預計以后JRockit的MissionControl移植到HotSpot之后,也會以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使用的是開源的FreeType。Open JDK是Sun在2006年末把Java開源而形成的項目,這里的“開源”是通常意義上的源碼開放形式,即源碼是可被復用的,例如IcedTea、UltraViolet都是從Open JDK源碼衍生出的發行版。
[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)
Linux的人都應該知道,在大多數LINUX發行版本里,內置或者通過軟件源安裝JDK的話,都是安裝的OpenJDK,那么到底什么是OpenJDK,它與Oracle JDK有什么關系和區別呢?
Oracle的項目發布經理Joe Darcy在OSCON 2011上對兩者關系的介紹也證實了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,兩者共用了大量相同的代碼(如下圖,注意圖中提示了兩者共同代碼的占比要遠高于圖形上看到的比例),所以我們編譯的OpenJDK,基本上可以認為性能、功能和執行邏輯上都和官方的Oracle JDK是一致的。
OpenJDK采用GPL V2協議發布,而JDK則采用JRL協議發布。兩個協議雖然都是開放源代碼的,但是在使用上的不同在于GPL V2允許在商業上使用,而JRL只允許個人研究使用。
Oracle/Sun JDK能用于商業用途的license是SCSL(Sun Community Source License)。JRL(Java Research License)是2004年開始用的,伴隨Sun JDK6發布而開始使用,遠比JDK7早。
OpenJDK不包含其他的軟件包,比如Rhino Java DB JAXP……,并且可以分離的軟件包也都是盡量的分離,但是這大多數都是自由軟件,你可以自己下載加入。
這個很容易想到,在采用GPL協議的OpenJDK中,SUN JDK的一部分源代碼因為產權的問題無法開放OpenJDK使用,其中最主要的部分就是JMX中的可選元件SNMP部分的代碼。
因此這些不能開放的源代碼將它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開發了相同功能的源代碼(OpenJDK6),促使OpenJDK更加完整。
IcedTea項目最初是由于OpenJDK不完整(因產權 而造成的障礙)而創立的,社區需要一個完整的開源工具鏈及代碼庫。
IcedTea長期以來一直是OpenJDK的一套補丁,正如剛才我所說到的,它有一個 基于“./configure”的不同的構建系統。
在OpenJDK中,我們已經替換了產權代碼(encumbered code),因此不再有障礙了。正因為我們的努力,IcedTea項目已經減少了使用補丁的數量。
IcedTea中看上去不錯的一點是,它的 configure腳本使得在多種不同的模式下構建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。
IcedTea提供的一大塊內容是plugin/java-web-start基礎架構。
由于產權的問題,很多是SUN JDK的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。
這個很容易理解,在安裝OpenJDK的機器上,輸入“java -version”顯示的是OpenJDK,但是如果是使用Icedtea補丁的OpenJDK,顯示的是java。(未驗證)
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在OpenJDK中是找不到的。
Sun/Oracle JDK > SCSL > JRL > OpenJDK
Sun/Oracle JDK有少量代碼是完全不開發的,即便在SCSL版里也沒有。這種代碼非常非常少。
SCSL代碼比JRL多一些closed目錄里的內容。
JRL比OpenJDK多一些受license影響而無法以GPLv2開放的內容。
但從Oracle JDK7/OpenJDK7開始,閉源和開源版的實質差異實在是非常非常小。與其說OpenJDK7是“不完整的JDK”,還不如說Oracle JDK7在OpenJDK7的基礎上帶了一些value-add,其中很多還沒啥用(例如browser plugin)。
JDK有兩種叫法,早期叫做Sun JDK,現在是Oracle JDK,其實都是同一個東西。但這種說法也不一定準確,因為OpenJDK也叫做Oracle OpenJDK。
然而最簡單直白的理解,也屬于個人理解:OpenJDK是JDK的開源代碼,也不算全是,因為在JDK部分,有一些是Oracle未開放源代碼的,還有就是有一些的歷史原因。
IcedTea項目最初是由于OpenJDK不完整(因產權 而造成的障礙)而創立的,社區需要一個完整的開源工具鏈及代碼庫。IcedTea長期以來一直是OpenJDK的一套補丁,正如剛才我所說到的,它有一個 基于“./configure”的不同的構建系統。 在OpenJDK中,我們已經替換了產權代碼(encumbered code),因此不再有障礙了。正因為我們的努力,IcedTea項目已經減少了使用補丁的數量。IcedTea中看上去不錯的一點是,它的 configure腳本使得在多種不同的模式下構建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。 IcedTea提供的一大塊內容是plugin/java-web-start基礎架構。
“Open JDK和Oracle/Sun JDK有什么關系”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。