java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧

java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧

ID:30776442

大小:63.00 KB

頁數(shù):7頁

時(shí)間:2019-01-03

java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧_第1頁
java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧_第2頁
java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧_第3頁
java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧_第4頁
java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧_第5頁
資源描述:

《java-jvm是如何構(gòu)建的?看看openjdk吧!-java開發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、Java/JVM是如何構(gòu)建的?看看OpcnJDK吧!-編程開發(fā)技術(shù)Java/JVM是如何構(gòu)建的?看看OpenJDK木文山ImportNew-fzr翻譯口javacodegeekso歡迎加入翻譯小組。轉(zhuǎn)載詰見文末要求。簡介&歷史正如有些人已經(jīng)知道的那樣,從Java7開始,OpenJDK就是Java的參考實(shí)現(xiàn)(ReferenceImplementation)。下圖的時(shí)間線可以讓你了解一下OpenJDK的歷史。OpenJDK歷史(2006至今)看看OpenJDK更詳細(xì)的過去現(xiàn)在和將來[1]。如果你想了解

2、從Oracle,RedHat,etcetera等供應(yīng)商那里下載得來的JDK或JRE庫,那么可以告訴你,它們都是起源于OpenJDKo每個(gè)供應(yīng)商在此基礎(chǔ)上添加額外的部件。出于安全,專利或其他的考慮,這些額外的添加部分并不公開源碼。OpenJDK由什么組成?OpenJDK由許多軟件庫組成,主要有corba,hotspot,jaxp,jaxws,jdk,langtools,以及nashorno在0penJDK8和0pcnJDK9Z間沒有新的軟件庫加入,但有很多改變和結(jié)構(gòu)調(diào)整,主要是因?yàn)镴igsawJav

3、a自身的模塊化[2][3][4][5]。代碼的組成以及語言的分解構(gòu)成(比例是估計(jì)的)Java語言和平臺是如何構(gòu)建的?J3V3通過引導(dǎo)一個(gè)

4、

5、

6、版本的J3V3例如,以其口身為構(gòu)件建立。1「1的組件被組合在一起創(chuàng)建一個(gè)新的組件,即成為下一階段的結(jié)構(gòu)單元。關(guān)于這種自展的一個(gè)很好的例子請參考SchemefromScratch或是Wikipedia[7]。0penJDK8使用JDK7編譯和構(gòu)建,類似地,0penJDK9則使用JDK8編譯構(gòu)建。理論上,0penJDK8是可以使用從其自身創(chuàng)建的影像編譯的,同理,

7、0penJDK9也能用0pcnJDK9編譯。使用一個(gè)叫做循環(huán)啟動(dòng)影像的進(jìn)程——?jiǎng)?chuàng)建OpenJDK的JDK影像,使用同樣的影像,OpenJDK再一次被編譯。也可以用make命令實(shí)現(xiàn)OpenJDK的編譯:$makebootcycle-images#Buildimagestwice,secondtimewithnewlybu訂tJDKmake命令在0penJDK8和0penJDK9下都提供了很多設(shè)置選項(xiàng),可以通過命名的方式建立獨(dú)立的組件或模塊。如下:$make[component-name]

8、[modu

9、le-name]甚至并行運(yùn)行多個(gè)構(gòu)建過程,如2$makeJOBS=#Runparallelmakejobs最后,用instal1選項(xiàng)安裝上述己構(gòu)建的組件,如下:$makeinstall一些被神話了的東西具體來說,OpenJDK或是Hotspot都不完全是用C或C++寫的,代碼庫中相當(dāng)一部分代碼是良好的OLE(對彖連接與嵌入)Java(詳細(xì)請看上文的組成圖表)。所以對OpenJDK作出貢獻(xiàn)并不要求你必須是核心硬件開發(fā)者。即使是底層的C/C++代碼庫也不是那么讓人望而生畏。下面就是從HotSpotre

10、po的vm/memory/universe,cpp中摘錄出的一個(gè)代碼片段http://hg.openjdk?java?net/jdk6/jdk6/hotspot/raw-file/a541ca8fa0e3/src/share/vm/memory/universe.cpp[10]:Universe::initialize_heap()if(UscParallelGC){#ifndefSER1ALGCUniverse::collectedHeap=newParallelScavengeHeapO;#e

11、lse//SERIALGCfatal(z,UseParallelGCnotsupportedinthisVM?〃);#endif//SERIALGC}elseif(UseGIGC){#ifndefSERIALGCGlCollectorPolicy*glp二newGlCollectorPolicy();GlCollcctcdllcap*glh=newGlCollcctcdllcap(glp);Universe::_collectedHeap=glh;#else//SERIALGCfatal("Use

12、GIGCnotsupportedinjavakernelvm.〃);ttendif//SERIALGC}else{GenCollectorPolicy*gcpolicy;if(UseSerialGC){gc_policy=newMarkSwccpPolicy();}elseif(UseConcMarkSweepGC){#ifndefSERIALGCif(UseAdaptiveSizePolicy){gc_policy二newASConcurrentMarkSweepPolicy()

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。