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

1.3 Java的運(yùn)行機(jī)制及JVM

計(jì)算機(jī)高級(jí)語(yǔ)言類型主要有編譯型和解釋型兩種,Java是兩種類型的集合,在Java中,處理代碼的過(guò)程如圖1-2所示。

圖1-2 Java程序代碼處理過(guò)程

從圖1-2可以看出,Java程序在計(jì)算機(jī)中執(zhí)行要經(jīng)歷以下幾個(gè)階段:

(1)使用文字編輯軟件(如記事本、寫(xiě)字板、UltraEdit等)或集成開(kāi)發(fā)環(huán)境(JCreater、Eclipse、MyEclipse等)編輯Java源文件,其文件擴(kuò)展名為.java。

(2)通過(guò)編譯使.java文件生成一個(gè)同名的.class文件。

(3)通過(guò)解釋方式將.class的字節(jié)碼文件轉(zhuǎn)變?yōu)橛?和1組成的二進(jìn)制指令并執(zhí)行。

在以上階段中可以看出,Java程序的執(zhí)行包括了編譯和解釋兩種方式。Java程序執(zhí)行的具體過(guò)程如圖1-3所示。

圖1-3 Java程序的執(zhí)行過(guò)程

知識(shí)提示 因?yàn)樵赪eb應(yīng)用中JSP文件是需要轉(zhuǎn)換成Servlet的,這個(gè)Servlet文件還需要編譯成可以在JRE上執(zhí)行的.class文件,因此在Java虛擬機(jī)中要有即時(shí)編譯器。

Java的.class文件是在Java虛擬機(jī)(Java Virtual Machine, JVM)上運(yùn)行的。JVM是在一臺(tái)計(jì)算機(jī)上由軟件或硬件模擬的計(jì)算機(jī),JVM可以實(shí)現(xiàn)Java程序的跨平臺(tái)運(yùn)行,即運(yùn)行的操作平臺(tái)各不相同。有JVM的存在,就可以將Java的.class文件轉(zhuǎn)換為面向各個(gè)操作系統(tǒng)的程序,再由Java解釋器執(zhí)行。這就如同有一個(gè)中國(guó)富商,他同時(shí)要和美國(guó)、韓國(guó)、俄羅斯、日本、法國(guó)、德國(guó)等幾個(gè)國(guó)家洽談生意,可是他不懂這些國(guó)家的語(yǔ)言,因此他針對(duì)每個(gè)國(guó)家請(qǐng)了一個(gè)翻譯,他說(shuō)的話就只對(duì)翻譯說(shuō),不同的翻譯會(huì)將他說(shuō)的話翻譯給不同國(guó)家的客戶,這樣富商只需要說(shuō)一句話給翻譯,那么就可以同幾個(gè)國(guó)家的客戶溝通了??梢?jiàn)Java虛擬機(jī)(JVM)的作用是讀取并處理經(jīng)編譯過(guò)的、與平臺(tái)無(wú)關(guān)的字節(jié)碼.class文件;而Java解釋器負(fù)責(zé)將Java虛擬機(jī)的代碼在特定的平臺(tái)上運(yùn)行。JVM的基本原理如圖1-4所示。

圖1-4 JVM基本原理

從圖1-4可以發(fā)現(xiàn),所有的.class文件都是在JVM上運(yùn)行的,即.class文件只需要認(rèn)識(shí)JVM,由JVM再去適應(yīng)各個(gè)操作系統(tǒng)。如果不同的操作系統(tǒng)安裝上符合其類型的JVM,那么以后.class文件無(wú)論到哪個(gè)操作系統(tǒng)上都是可以正確執(zhí)行的。

主站蜘蛛池模板: 昌乐县| 托克托县| 建瓯市| 长寿区| 油尖旺区| 叙永县| 西和县| 汉寿县| 泗洪县| 洮南市| 故城县| 革吉县| 中方县| 绥德县| 治多县| 屏山县| 合肥市| 曲水县| 滦平县| 日土县| 云浮市| 本溪市| 富宁县| 清苑县| 松潘县| 康保县| 德安县| 伊宁市| 渝中区| 乐陵市| 奉节县| 义乌市| 张掖市| 高青县| 和林格尔县| 西乌| 绩溪县| 铁岭县| 来凤县| 大埔区| 九龙坡区|