日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

知乎高赞:从源码层,拆解OracleJDK和OpenJDK有什么区别?网友:不愧是大神的回答~...

發(fā)布時(shí)間:2024/4/11 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 知乎高赞:从源码层,拆解OracleJDK和OpenJDK有什么区别?网友:不愧是大神的回答~... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”

后臺(tái)回復(fù)"書",獲取

后臺(tái)回復(fù)“k8s”,可領(lǐng)取k8s資料

借用知乎大神RednaxelaFX的文章分享下這個(gè)問題

Oracle JDK與OpenJDK里的JVM都是HotSpot VM。從源碼層面說,兩者基本上是同一個(gè)東西。

從JDK7開始,Oracle JDK里的HotSpot VM,在研發(fā)的時(shí)候其實(shí)就是用放在OpenJDK的Mercurial代碼庫。也就是說跟大家從外部能實(shí)時(shí)看到的OpenJDK用的是同一個(gè)代碼庫。

HotSpot VM只有非常非常少量的功能沒有在OpenJDK里,那部分在Oracle內(nèi)部的代碼庫里。這些私有部分都不涉及JVM的核心功能。

所以當(dāng)一個(gè)Oracle員工要構(gòu)建OpenJDK時(shí),他要做的事情跟外面的人一樣:從http://hg.openjdk.java.net簽出代碼,構(gòu)建。


而當(dāng)他要構(gòu)建Oracle JDK時(shí),他同樣需要先從http://hg.openjdk.java.net簽出OpenJDK,然后從Oracle內(nèi)部的代碼庫簽出私有的部分,放在OpenJDK代碼下的一個(gè)特定目錄里,然后構(gòu)建。

這些HotSpot VM私有的部分主要是Java Flight Recorder的內(nèi)部實(shí)現(xiàn),以及還有沒有公開到OpenJDK的其它平臺(tái)的port,例如Oracle自己的ARM、PPC版HotSpot VM。

JDK6的代碼,由于歷史原因,Sun JDK6跟OpenJDK6的代碼并不同步。但是其中的HotSpot VM仍然是相對(duì)一致的。OpenJDK 6里的HotSpot VM只缺了一個(gè)Oracle JDK里才有的優(yōu)化,那就是-XX:+UseCompressedString。這個(gè)功能實(shí)現(xiàn)得不太好,沒帶進(jìn)JDK7/OpenJDK7,所以這點(diǎn)差異沒有也罷。

另外,Sun JDK6跟OpenJDK6在切代碼的時(shí)候不一定是在同一天,所以同一個(gè)大版本號(hào)(例如HotSpot 20.0)里面的內(nèi)容可能會(huì)稍微有點(diǎn)不一樣。例子之一就是Oracle/Sun JDK6u25里有完整的tiered compilation系統(tǒng)的實(shí)現(xiàn),而OpenJDK6對(duì)應(yīng)的HotSpot 20.0卻沒包含這個(gè)實(shí)現(xiàn);同一時(shí)間的OpenJDK7分支里的HotSpot VM又有這個(gè)功能,說明這個(gè)功能本身并不是啥私有功能,只是OpenJDK6切代碼的時(shí)間有可能比Oracle/Sun JDK6u25早了點(diǎn)。

OpenJDK原是SunMicrosystems公司為Java平臺(tái)構(gòu)建的Java開發(fā)環(huán)境(JDK)的開源版本,完全自由,開放源碼。Sun Microsystems公司在2006年的JavaOne大會(huì)上稱將對(duì)Java開放源代碼,于2009年4月15日正式發(fā)布OpenJDK。甲骨文在2010 年收購SunMicrosystem之后接管了這個(gè)項(xiàng)目。

Oracle/Sun JDK里面包含的JVM是HotSpotVM,HotSpot VM只有非常非常少量的功能沒有在OpenJDK里,那部分在Oracle內(nèi)部的代碼庫里。這些私有部分都不涉及JVM的核心功能。所以說,Oracle/Sun JDK與OpenJDK其實(shí)使用的是同一個(gè)代碼庫。

從一個(gè)Oracle內(nèi)部員工的角度來看,當(dāng)他要構(gòu)建OracleJDK時(shí),他同樣需要先從http://hg.openjdk.java.net簽出OpenJDK,然后從Oracle內(nèi)部的代碼庫簽出私有的部分,放在OpenJDK代碼下的一個(gè)特定目錄里,然后構(gòu)建。

值得注意的是,Oracle JDK只發(fā)布二進(jìn)制安裝包,而OpenJDK只發(fā)布源碼。

來自:https://www.zhihu.com/question/19882320

<END>

想知道更多?描下面的二維碼關(guān)注我

后臺(tái)回復(fù)"技術(shù)",加入技術(shù)群

后臺(tái)回復(fù)“k8s”,可領(lǐng)取k8s資

總結(jié)

以上是生活随笔為你收集整理的知乎高赞:从源码层,拆解OracleJDK和OpenJDK有什么区别?网友:不愧是大神的回答~...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。