



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第java為什么需要虛擬機(jī)jvm原理詳解曾幾何時(shí),我們還是初識HelloWorld的時(shí)候,我們哪曾知道,Java這門神奇的語言,在執(zhí)行我們的代碼的時(shí)候,不是直接將我們所編寫的Java代碼交付給操作系統(tǒng)底層進(jìn)行解析編譯,而是采用了JDK來對Java代碼進(jìn)行編譯,編譯成dotClass文件后,將dotClass文件轉(zhuǎn)交至JRE中。(dotClass其實(shí)就是.class)
jre也就是JavaRunTimeEnvironment,java運(yùn)行環(huán)境,因?yàn)樵谶@里,存在著Java的秘密武器,也就是JVM!Jvm是組成JRE的重要核心,可以說,JVM是JRE的靈魂,控制著軀殼執(zhí)行著代碼的藝術(shù)。JRE中包含著Jvm調(diào)用所需要的幾乎所有類庫,可以這么說,jvm是jre的驅(qū)動(dòng),也是整個(gè)JDK的驅(qū)動(dòng),更是整個(gè)Java的驅(qū)動(dòng)!
大家好,我是fntp,今天我們來簡單聊一聊為什么Java需要JVM,今天的話題很大,但是限制于篇幅我們只是簡單的聊一聊!
JVM的快速理解
JVM是Java虛擬機(jī),即JavaVirtualMachine的意思,“虛擬”這兩個(gè)字,基本上也可以看出,要想在操作系統(tǒng)上實(shí)現(xiàn)眾多的功能,是需要一個(gè)架構(gòu)完整,執(zhí)行力很強(qiáng)的執(zhí)行標(biāo)準(zhǔn)!這是不是有點(diǎn)類似于“操作系統(tǒng)”?JVM,實(shí)則就是一個(gè)Java指令執(zhí)行規(guī)范,正是這一標(biāo)準(zhǔn)構(gòu)成了JVM。我們學(xué)Java的時(shí)候我們都知道有JDK,JRE,當(dāng)我們學(xué)的深入的時(shí)候,我們又會(huì)發(fā)現(xiàn),還有JVM這號神仙。。。
我們先捋清楚這些東西之間的關(guān)系:
我先給出答案:JDK是包含JRE的,JRE是包含JVM的。
JDK我們都知道是java開發(fā)工具包,正所謂工具包,也是因?yàn)樗闹饕饔檬菫閖vm提供了額外的類庫工具,比如編譯Java文件的javac二進(jìn)制程序,這些都是存儲(chǔ)在bin目錄下,是不是很奇怪,為什么很多程序安裝的時(shí)候都帶有一個(gè)bin目錄?因?yàn)檫@個(gè)bin是binary的意思,是binary的簡寫bin,也就是二進(jìn)制文件的目錄。
類似的小工具除了Javac還有Java(bin目錄下的.exe二進(jìn)制文件)、jar等文件。好,那么jre呢?JRE是為Java程序提供執(zhí)行環(huán)境的,有了jre,我們的java程序就可以在瀏覽器中運(yùn)行了。為什么需要jre呢?因?yàn)槲覀兊膉vm,我們之前都知道java是一次編譯到處運(yùn)行,這是怎么辦到的?
這其實(shí)是jre的功勞,我們的jre中文不就是java運(yùn)行時(shí)環(huán)境嗎,不錯(cuò),我們知道java是運(yùn)行在jvm中的,java運(yùn)行時(shí)環(huán)境不就是jvm的運(yùn)行環(huán)境嗎,俗話說巧婦難為無米之炊,光有jvm是不可能執(zhí)行的了所有的java程序的,還需要以來一些底層的c語言寫的類庫,這時(shí)候,jre的左右就很明顯了,jre為jvm提供了幾乎所有的依賴類庫,這樣一來,就真正實(shí)現(xiàn)了一次編譯到處運(yùn)行!
jvm能執(zhí)行java程序,是直接執(zhí)行java文件嗎?不是,我們說過,Java與操作系統(tǒng)之間不是直接將.java文件轉(zhuǎn)交給操作系統(tǒng)處理的,而是將.java文件通過javac二進(jìn)制文件編譯成.class文件,也稱之為字節(jié)碼文件,字節(jié)碼文件直接給操作系統(tǒng)執(zhí)行嗎?并不是,我們來看看普通程序與Java程序執(zhí)行區(qū)別在哪里:
而Java程序的加載過程:
什么意思,意思就是告訴你,字節(jié)碼文件操作系統(tǒng)也是不認(rèn)識的,字節(jié)碼文件還需要經(jīng)過jvm加載為機(jī)器碼,也就是Opcode操作碼(暫時(shí)這么理解因?yàn)椴蝗牵g成機(jī)器碼也就是操作系統(tǒng)能看得懂的語言后,操作系統(tǒng)才回去執(zhí)行這個(gè)java程序,這是什么,這其實(shí)有點(diǎn)像我們常說的黑盒測試,整個(gè)流程我們是看不見的,我們只能看見我們編寫的java規(guī)范編碼被操作系統(tǒng)執(zhí)行了!
我們說,jvm識別字節(jié)碼文件后,翻譯了字節(jié)碼指令,翻譯給操作系統(tǒng),從而控制操作系統(tǒng)去執(zhí)行相應(yīng)的功能,所以,提及翻譯,就不得不簡單說一下JVM的翻譯字節(jié)碼文件的方式方法了,jvm翻譯字節(jié)碼常見的有兩種不同的方式,一種是即時(shí)加載方法,一種是解釋執(zhí)行。解釋執(zhí)行是將字節(jié)碼文件中的opcode與操作數(shù)翻譯成op指令也就是機(jī)器代碼,而即時(shí)加載是在特定情況下才會(huì)觸發(fā),將字節(jié)碼翻譯成機(jī)器碼后執(zhí)行。你若想知道字節(jié)碼文件都包含有什么,那么等我吃透了jvm我加你好友啊,我跟你暢談??!雖然這得等到=猴年馬月…
好了今天的淺談就到這里了,所以,為什么需要jvm知道了嗎?
jvm即是對字節(jié)碼文件規(guī)范的最佳約束,也是java建立與操作系統(tǒng)之間溝通的直接橋梁!因?yàn)椴僮飨到y(tǒng)是無法直接編譯.java文件的,.java文件經(jīng)過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織中的合作創(chuàng)新實(shí)踐與成果分析試題及答案
- 數(shù)據(jù)結(jié)構(gòu)與算法題目試題及答案
- 地產(chǎn)合資公司管理制度
- 賓館安全疏散管理制度
- 衛(wèi)生保潔安全管理制度
- 醫(yī)用耗材酒精管理制度
- 華為體系文件管理制度
- 發(fā)動(dòng)機(jī)檢測儀管理制度
- 安全警示標(biāo)牌管理制度
- 公共衛(wèi)生資金管理制度
- 資料交接移交確認(rèn)單
- 風(fēng)對起飛和著陸影響及修正和風(fēng)切變完整版課件
- 環(huán)網(wǎng)柜基礎(chǔ)知識培訓(xùn)課程完整版課件
- 大數(shù)據(jù)時(shí)代的互聯(lián)網(wǎng)信息安全題庫
- DL∕T 1776-2017 電力系統(tǒng)用交流濾波電容器技術(shù)導(dǎo)則
- 浙江省紹興市上虞區(qū)2021-2022學(xué)年六年級下學(xué)期期末質(zhì)量檢測英語試題(word版無答案無聽力音頻和原文)
- 《交通調(diào)查與數(shù)據(jù)分析》課程教學(xué)大綱(本科)
- 兩輪自平衡小車的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 推進(jìn)中國法治進(jìn)程的10大案件
- 下面講上品往生后的情形
- 某日企薪酬制
評論
0/150
提交評論