官术网_书友最值得收藏!

1.4 Java虛擬機

大部分的計算機語言程序都必須先經過編譯(compile)或解釋(interpret)的操作后,才能在計算機上運行,然而,Java程序(.java文件)卻比較特殊,它必須先經過編譯的過程,然后再利用解釋的方式來運行。通過編譯器(compiler),Java程序會被轉換成與平臺無關(platform-independent)的機器碼,Java稱之為“字節碼”(byte-codes),字節碼文件的擴展名為.class。通過Java的解釋器(interpreter)便可解釋并運行Java的字節碼。圖1.1說明了Java程序的執行過程。

圖1.1 Java程序的運行過程:先編譯,后解釋

字節碼是Java虛擬機(Java Virtual Machine, JVM)的指令組,和CPU上的微指令碼很相像。Java程序編譯成字節碼后文件尺寸較小,便于網絡傳輸。

字節碼最大的好處是可跨平臺運行,即Java的字節碼可以編寫一次,到處運行。用戶使用任何一種Java編譯器將Java源程序(.java)編譯成字節碼文件(.class)后,無論使用哪種操作系統,都可以在含有JVM的平臺上運行。這種跨越平臺的特性也是讓Java語言急速普及的原因之一。

任何一種可以運行Java字節碼的軟件均可被看成Java的“虛擬機”(JVM),如瀏覽器與Java的開發工具等皆可被視為一部JVM。很自然地,可以把Java的字節碼看成JVM上所運行的機器碼(machine code),即JVM中的解釋器負責將字節碼解釋成本地的機器碼。所以從底層上看,JVM就是以Java字節碼為指令組的“軟CPU”??梢哉f,JVM是可運行Java字節碼的假想計算機。它的作用類似于Windows操作系統,只不過在Windows上運行的是.exe文件,而在JVM上運行的是Java字節碼文件,也就是擴展名為.class的文件。JVM其實就是一個字節碼解釋器。

主站蜘蛛池模板: 凌源市| 彭州市| 剑阁县| 拜泉县| 五华县| 攀枝花市| 凌海市| 青浦区| 张家港市| 文水县| 湘乡市| 乐陵市| 武鸣县| 伊金霍洛旗| 云浮市| 大邑县| 西吉县| 桂东县| 徐汇区| 乌鲁木齐市| 腾冲县| 松滋市| 梅河口市| 临泽县| 新龙县| 张家川| 枞阳县| 田阳县| 德惠市| 寻乌县| 天津市| 祁阳县| 新绛县| 桐梓县| 罗城| 旅游| 洮南市| 鹤山市| 余干县| 镇平县| 金沙县|