第一章 JAVA入門(JAVA程序執(zhí)行過程)

— 本文參照 Learn Java for Android Development (第三版)
java程序的執(zhí)行需要通過一個(gè)工具去加載并且啟動(dòng)JVM(java虛擬機(jī)),并且它還會(huì)把程序的主類(包含啟動(dòng)入口)傳遞到主機(jī)。然后JVM會(huì)通過加載器把類文件加載到內(nèi)存中。
類文件加載完成以后,JVM的字節(jié)碼校驗(yàn)器會(huì)對(duì)這些文件進(jìn)行檢查,一旦有發(fā)現(xiàn)任何問題都會(huì)立馬終止運(yùn)行。如果文件都沒有問題,JVM就會(huì)開始進(jìn)行翻譯,將字節(jié)碼一條一條地翻譯成相應(yīng)的指令,并且執(zhí)行相應(yīng)的底層指令。這樣我們的程序就跑起來了,想干嘛就干嘛了。
注意:這里我們的代碼就好像平時(shí)我們的領(lǐng)導(dǎo)一樣,只是下了相應(yīng)的指令,具體的事情是需要我們這些底層的員工一件一件去完成的。我們的java程序也一樣,是屬于比較上層的東西,借助于JVM把我們想做的事情傳遞給底層處理器。這樣機(jī)器才能按照我們想要的方式去運(yùn)行。
當(dāng)解釋器發(fā)現(xiàn)如果一些指令在重復(fù)執(zhí)行的時(shí)候,它就會(huì)通知到JVM的及時(shí)編譯器,把這些頻繁執(zhí)行的指令編譯成機(jī)器碼。對(duì)于一個(gè)給定的字節(jié)碼序列及時(shí)編譯器其實(shí)只會(huì)編譯一次。相比于字節(jié)碼指令我們的機(jī)器指令執(zhí)行起來會(huì)迅速得多,這樣我們的程序執(zhí)行速度也會(huì)更快。 在程序執(zhí)行的過程中可能碰到一些情況,比如當(dāng)前正在執(zhí)行一個(gè)類文件的內(nèi)容,但是它可能依賴一些其他類文件的東西。這個(gè)時(shí)候就會(huì)先啟動(dòng)類加載器去加載相應(yīng)的類文件同時(shí)字節(jié)碼校驗(yàn)器會(huì)校驗(yàn)類文件的字節(jié)碼。只有校驗(yàn)通過才會(huì)去執(zhí)行這個(gè)新加載的類文件的內(nèi)容。
除了上面這種很常見的情況,我們的程序在執(zhí)行過程中還可能會(huì)有一些其他的處理情況。比如我們可能會(huì)去打開某個(gè)文件,在屏幕上顯示某些東西,或者啟動(dòng)一個(gè)其他的任務(wù)并且需要系統(tǒng)平臺(tái)進(jìn)行配合。這個(gè)時(shí)候JVM就會(huì)通過JNI去調(diào)用底層接口來響應(yīng)這些請(qǐng)求。作者給我們提供了一張清晰的結(jié)構(gòu)圖來告訴我們JVM究竟是怎么工作的:

截圖.jpg

看到?jīng)],圖中用方框括起來的就是JVM的主要工作,它提供了我們加載類文件、字節(jié)碼校驗(yàn)、解釋字節(jié)碼、及時(shí)編譯、執(zhí)行程序過程中可能用到的所有組件。它在這整個(gè)過程中就像一個(gè)大boss!你懂的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《深入理解Java虛擬機(jī)》筆記_第一遍 先取看完這本書(JVM)后必須掌握的部分。 第一部分 走近 Java 從傳...
    xiaogmail閱讀 5,473評(píng)論 1 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,810評(píng)論 11 349
  • 聽說外國(guó)人有藍(lán)色的眼,我只曉得天空的蔚藍(lán)。 欣賞天空需要時(shí)間,最好要擇擇地點(diǎn)。 仔細(xì)感覺一下那瞬間,真是好比欣賞情...
    李一十八閱讀 494評(píng)論 0 2

友情鏈接更多精彩內(nèi)容