Java啟蒙之路-Java虛擬機(jī)
Java虛擬機(jī)概念
Java虛擬機(jī)(Java Virtual Machine,JVM)是一個(gè)抽象的計(jì)算機(jī),和實(shí)際的計(jì)算機(jī)一樣,通過模擬仿真來實(shí)現(xiàn)計(jì)算機(jī)功能。Java虛擬機(jī)不僅有自己本身的硬件架構(gòu),如處理器、堆棧、寄存器,還具有相應(yīng)的指令系統(tǒng)。
Java的運(yùn)行機(jī)制
Java的跨平臺(tái)是它的主要特性之一,而Java虛擬機(jī)是實(shí)現(xiàn)這一特性的關(guān)鍵。Java程序的整個(gè)執(zhí)行過程包括編譯階段與運(yùn)行階段,其中涉及到Java源程序、Java字節(jié)碼文件、Java類庫和Java虛擬機(jī)以及最后的平臺(tái)。
在Java編譯階段,編寫的Java源程序(.java)經(jīng)過Java編譯器編譯成字節(jié)碼文件(.class)后并保存起來。
在Java運(yùn)行階段,獲取到保存的.class字節(jié)碼文件以及源程序中引用的類庫Java API的字節(jié)碼文件,然后通過類裝載器(Class Loader)將這些文件一并裝載到內(nèi)存緩沖區(qū),接著Java虛擬機(jī)開始執(zhí)行這些文件并生成目標(biāo)代碼(字節(jié)碼)。由于Java虛擬機(jī)可以將字節(jié)碼程序跟具體的操作系統(tǒng)及硬件平臺(tái)分割開來,只要各平臺(tái)實(shí)現(xiàn)了Java虛擬機(jī),任何Java程序就可以在其上面運(yùn)行了。

Java程序執(zhí)行過程
類比理解:《長江七號(hào)》
《長江七號(hào)》里的那個(gè)七仔是外星人,可是它說的話地球人聽不懂啊(各國人好比各系統(tǒng)平臺(tái),七仔說的話好比Java源文件),然后地球人就想盡辦,終于發(fā)明了那么一款軟件可以跟七仔交流(這個(gè)軟件就好比Java虛擬機(jī)),它的原理是將七仔說的話先使用電磁波譜顯示出來(這個(gè)過程好比使用Java編譯器將Java源文件編譯成.class字節(jié)碼文件),然后地球人(不管美國、英國、中國、韓國等哪國人)只要使用這款軟件(這就好比各平臺(tái)實(shí)現(xiàn)了Java虛擬機(jī))把電磁波譜解讀出來并智能地翻譯成對應(yīng)國家的母語(這個(gè)過程好比Java虛擬機(jī)將計(jì)算機(jī)不能執(zhí)行的Java程序轉(zhuǎn)換成各平臺(tái)能識(shí)別的二進(jìn)制),然后地球人就能與七仔交流了。哈哈,是不是很好理解?

Java程序執(zhí)行簡化過程
小結(jié)
以上內(nèi)容是對Java虛擬機(jī)進(jìn)行了一個(gè)簡單的理解,以后將會(huì)深入地理解Java虛擬機(jī)運(yùn)行機(jī)制?,F(xiàn)在只需理解Java虛擬機(jī)在Java程序執(zhí)行過程中的作用即可。