Java目前是互聯(lián)網(wǎng)行業(yè)內(nèi)非常熱門的開發(fā)語言,java開發(fā)受到廣大行業(yè)人才的熱捧。中培課堂《企業(yè)級(jí)JAVA高級(jí)開發(fā)技術(shù)實(shí)戰(zhàn)》專家劉老師在這里就java虛擬機(jī)進(jìn)行詳細(xì)介紹。
龔老師指出,虛擬機(jī) JVM(Java Virtual Machine)在 Java 編程里面具有非常重要的地位,約相當(dāng)于前面學(xué)到的 Java 運(yùn)行環(huán)境,虛擬機(jī)的基本功能如下:
(1)通過 ClassLoader 尋找和裝載 class 文件
(2)解釋字節(jié)碼成為指令并執(zhí)行,提供 class 文件的運(yùn)行環(huán)境
(3)進(jìn)行運(yùn)行期間垃圾回收
(4)提供與硬件交互的平臺(tái)
Java虛擬機(jī)是在真實(shí)機(jī)器中用軟件模擬實(shí)現(xiàn)的一種想象機(jī)器。Java虛擬機(jī)代碼被存儲(chǔ)在.class文件中;每個(gè)文件都包含最多一個(gè)public類。Java 虛擬機(jī)規(guī)范為不同的硬件平臺(tái)提供了一種編譯Java技術(shù)代碼的規(guī)范,該規(guī)范使Java 軟件獨(dú)立于平臺(tái),因?yàn)榫幾g是針對(duì)作為虛擬機(jī)的“一般機(jī)器”而做。這個(gè)“一般機(jī)器”可用軟件模擬并運(yùn)行于各種現(xiàn)存的計(jì)算機(jī)系統(tǒng),也可用硬件來實(shí)現(xiàn)。編譯器在獲取Java應(yīng)用程序的源代碼后,將其生成字節(jié)碼,它是為JVM生成的一種機(jī)器碼指令。每個(gè)Java解釋器,不管它是Java技術(shù)開發(fā)工具,還是可運(yùn)行 applets的Web瀏覽器,都可執(zhí)行JVM。
JVM 為下列各項(xiàng)做出了定義:
- 指令集(相當(dāng)于中央處理器[CPU])
- 寄存器
- 類文件格式
- 棧
- 垃圾收集堆
- 存儲(chǔ)區(qū)
JVM 的代碼格式由緊縮有效的字節(jié)碼構(gòu)成。由 JVM 字節(jié)碼編寫的程序必須保持適當(dāng)?shù)念愋图s束。大部分類型檢查是在編譯時(shí)完成。任何從屬的 Java 技術(shù)解釋器必須能夠運(yùn)行任何含有類文件的程序,這些類文件應(yīng)符合 Java 虛擬機(jī)規(guī)范中所指定的類文件格式。
虛擬機(jī)是 Java 平臺(tái)無關(guān)的保障。正是因?yàn)橛刑摂M機(jī)這個(gè)中間層,Java 才能夠?qū)崿F(xiàn)與平臺(tái)無關(guān)。虛擬機(jī)就好比是一個(gè) Java運(yùn)行的基本平臺(tái),所有的 Java 程序都運(yùn)行在虛擬機(jī)上,這也是虛擬機(jī)在Java開發(fā)方面重要作用的原因所在。