JAVA教程第一講Java語(yǔ)言概述1.2

字號(hào):

1.2 java的工作原理
    1.2.1 java虛擬機(jī)(1)
     java虛擬機(jī)是軟件模擬的計(jì)算機(jī),可以在任何處理器上(無(wú)論是在計(jì)算機(jī)中還是在其它電子設(shè)備中)安全并且兼容的執(zhí)行保存在.class文件中的字節(jié)碼。java虛擬機(jī)的"機(jī)器碼"保存在.class文件中,有時(shí)也可以稱(chēng)之為字節(jié)碼文件。java程序的跨平臺(tái)主要是指字節(jié)碼文件可以在任何具有java虛擬機(jī)的計(jì)算機(jī)或者電子設(shè)備上運(yùn)行,java虛擬機(jī)中的java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機(jī)器碼進(jìn)行運(yùn)行。java源程序需要通過(guò)編譯器編譯成為.class文件(字節(jié)碼文件),java程序的編譯和執(zhí)行過(guò)程 ——如圖所示——
    1.2.1 java虛擬機(jī)(2)
    但是,java虛擬機(jī)的建立需要針對(duì)不同的軟硬件平臺(tái)做專(zhuān)門(mén)的實(shí)現(xiàn),既要考慮處理器的型號(hào),也要考慮操作系統(tǒng)的種類(lèi)。如下圖所示,目前在SPARC結(jié)構(gòu)、X86結(jié)構(gòu)、MIPS和PPC等嵌入式處理芯片上、在UNIX、Linux、windows和部分實(shí)時(shí)操作系統(tǒng)上都有java虛擬機(jī)的實(shí)現(xiàn)。 ——如圖所示——
    1.2.2 無(wú)用內(nèi)存自動(dòng)回收機(jī)制
    在程序的執(zhí)行過(guò)程中,部分內(nèi)存在使用過(guò)后就處于廢棄狀態(tài),如果不及時(shí)進(jìn)行無(wú)用內(nèi)存的回收,就會(huì)導(dǎo)致內(nèi)存泄漏,進(jìn)而導(dǎo)致系統(tǒng)崩潰。在C++語(yǔ)言中是由程序員進(jìn)行內(nèi)存回收的,程序員需要在編寫(xiě)程序的時(shí)候把不再使用的對(duì)象內(nèi)存釋放掉;但是這種人為的管理內(nèi)存釋放的方法卻往往由于程序員的疏忽而致使內(nèi)存無(wú)法回收,同時(shí)也增加了程序員的工作量。而在java運(yùn)行環(huán)境中,始終存在著一個(gè)系統(tǒng)級(jí)的線程,專(zhuān)門(mén)跟蹤內(nèi)存的使用情況,定期檢測(cè)出不再使用的內(nèi)存,并進(jìn)行自動(dòng)回收,避免了內(nèi)存的泄露,也減輕了程序員的工作量。
    1.2.3 代碼安全性檢查機(jī)制
    安全和方便總是相對(duì)矛盾的。java編程語(yǔ)言的出現(xiàn)使得客戶(hù)端機(jī)器可以方便的從網(wǎng)絡(luò)上下載java程序到本機(jī)上運(yùn)行,但是如何保證該java程序不攜帶病毒或者不懷有其它險(xiǎn)惡目的呢?如果java語(yǔ)言不能保證執(zhí)行的安全性,那么它就不可能存活到今天。雖然有時(shí)候少數(shù)程序員會(huì)抱怨說(shuō)applet連文件系統(tǒng)也不能訪問(wèn),但是正是各種安全措施的實(shí)行才確保了java語(yǔ)言的生存
    字節(jié)碼的執(zhí)行需要經(jīng)過(guò)三個(gè)步驟,首先由類(lèi)裝載器(class loader)負(fù)責(zé)把類(lèi)文件(.class文件)加載到j(luò)ava虛擬機(jī)中,在此過(guò)程需要檢驗(yàn)該類(lèi)文件是否符合類(lèi)文件規(guī)范;其次字節(jié)碼校驗(yàn)器(bytecode verifier)檢查該類(lèi)文件的代碼中是否存在著某些非法操作,例如applet程序中寫(xiě)本機(jī)文件系統(tǒng)的操作;如果字節(jié)碼校驗(yàn)器檢驗(yàn)通過(guò),由java解釋器負(fù)責(zé)把該類(lèi)文件解釋成為機(jī)器碼進(jìn)行執(zhí)行。java虛擬機(jī)采用的是"沙箱"運(yùn)行模式,即把java程序的代碼和數(shù)據(jù)都限制在一定內(nèi)存空間里執(zhí)行,不允許程序訪問(wèn)該內(nèi)存空間外的內(nèi)存,如果是applet程序,還不允許訪問(wèn)客戶(hù)端機(jī)器的文件系統(tǒng)。