引言
為太平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及太平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、太平網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!Java虛擬機本質(zhì)是就是一個程序,當(dāng)它在命令行上啟動的時候,就開始執(zhí)行保存在某字節(jié)碼文件中的指令。Java語言的可移植性正是建立在Java虛擬機的基礎(chǔ)上。任何平臺只要裝有針對于該平臺的Java虛擬機,字節(jié)碼文件(.class)就可以在該平臺上運行。這就是“一次編譯,多次運行”。
kaffe虛擬機的簡要分析
kaffe虛擬機采用了模塊化的程序設(shè)計思想,它由多個獨立的子系統(tǒng)組成。從功能模塊上來分它主要分為:虛擬機總體驅(qū)動模塊,類裝載器模塊,類執(zhí)行模塊, 數(shù)據(jù)區(qū)管理模塊,內(nèi)存管理模塊,本地支持模塊等等。kaffe虛擬機簡要的程序流程圖如圖1所示。
498)this.style.width=498;" border="0" />
圖1:kaffe虛擬機簡要的程序流程圖
Java虛擬機的實現(xiàn)
Java 源程序的執(zhí)行過程為: Java源程序(.java)經(jīng)過Java編譯器編譯生成字節(jié)碼文件(.class),然后由類裝載器將字節(jié)碼文件裝載到方法區(qū)中,然后進行連接驗證,由Java虛擬機讀取字節(jié)碼,轉(zhuǎn)換為特定平臺的指令,并且在對應(yīng)的CPU中執(zhí)行。
本實現(xiàn)中采用的流程框架如下圖所示:
498)this.style.width=498;" border="0" />
圖2:本實現(xiàn)的主要框架
1、類裝載、連接及初始化
類文件包括:魔數(shù)(magic),次、主版本號,常量池,類或接口訪問修飾符,常量池索引(this_class和super_class),接口表,域表,方法表,類或接口的屬性信息。其中最復(fù)雜的內(nèi)容是常量池,它類似于傳統(tǒng)語言編譯過程中用到的符號表。
從原始的class文件到可以被Java虛擬機執(zhí)行的內(nèi)部數(shù)據(jù)格式,需要經(jīng)過裝載、連接和初始化這3個階段。
裝載是將class文件通過類裝載器裝載到在邏輯上被稱為方法區(qū)的內(nèi)存單元中的過程。