MIPS目標(biāo)平臺(tái)CLDC的Java虛擬機(jī)移植
1 Java虛擬機(jī)簡(jiǎn)介
Java ME(Java platform Micro Edition),以前稱J2ME,是為機(jī)頂盒、移動(dòng)電話和PDA等嵌入式消費(fèi)電子設(shè)備提供的Java語(yǔ)言平臺(tái),它包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化的Java API(Application Programming Interface)。Java語(yǔ)言的平臺(tái)無(wú)關(guān)性使其廣泛應(yīng)用于各行各業(yè),而嵌入式領(lǐng)域Java ME技術(shù)的發(fā)展尤為迅猛。截至2008年底,JavaME技術(shù)已應(yīng)用于全球26億部移動(dòng)手機(jī)、部署了60億個(gè)Java Cards、4 000萬(wàn)臺(tái)以上的藍(lán)光設(shè)備和TV設(shè)備,遍及移動(dòng)開(kāi)發(fā)的各個(gè)領(lǐng)域。
Java虛擬機(jī)(JVM,Java Virtual Machine)是實(shí)現(xiàn)Java語(yǔ)言平臺(tái)無(wú)關(guān)性的關(guān)鍵。Java虛擬機(jī)是Java技術(shù)的重要組成部分,它是一個(gè)抽象的運(yùn)算機(jī)器,有一套自己的指令集,可在運(yùn)行時(shí)操縱內(nèi)存的各個(gè)區(qū)域。
嵌入式的Java虛擬機(jī)主要有兩大類:
(1)CLDC VM
CLDC VM(Connected Limited Device Configuration Virtual Machine)是連接受限的設(shè)備配置的虛擬機(jī),以前稱為KVM(Kilobyte Virtual Machine,千字節(jié)虛擬機(jī))。CLDC VM一般用于內(nèi)存很少(如1 MB以內(nèi))、CPU處理能力弱(如幾MHz)的嵌入式設(shè)備。Sun公司于2000年發(fā)布CLDC 1.0規(guī)范及KVM的參考實(shí)現(xiàn),之后于2006年將KVM參考實(shí)現(xiàn)轉(zhuǎn)到開(kāi)源社區(qū),并重命名為phoneME Fea-ture。至2009年,phoneME Feature先后經(jīng)歷了MR1、MR2、MR3、MR4版。本文基于phoneME Feature MR4。通常CLDC VM的結(jié)構(gòu)如圖1所示。
其中MIDlet是各種Java ME應(yīng)用程序,運(yùn)行于CLDC虛擬機(jī)之上。
(2)CDC VM
CDC VM(Conntected Device Configuration Virtual Machine)是已連接的設(shè)備配置的虛擬機(jī),簡(jiǎn)稱CVM。CVM一般用于智能手機(jī)、數(shù)字機(jī)頂盒、PDA等嵌入式設(shè)備。
phoneME Feature MR4軟件是一個(gè)高性能的虛擬機(jī),它不僅遵循CLDC規(guī)范,還實(shí)現(xiàn)了高效的資源管理,以及對(duì)多任務(wù)的支持等。與早期的KVM虛擬機(jī)相比,CLDC VM增加了如下特征:
◆支持CLDC 1.0、CLDC 1.1和CLDC 1.1.1;
◆改進(jìn)Java應(yīng)用程序的啟動(dòng)時(shí)間和執(zhí)行速度;
◆支持AOT(Ahead-Of-Time,提前)編譯技術(shù);
◆支持原地執(zhí)行(in-place execution)功能;
◆支持多任務(wù)功能。
2 CLDC VM移植原理
phoneME Feature軟件是一個(gè)功能完整的虛擬機(jī),它通過(guò)了Sun公司的TCK(Technology Compatibility Kit,技術(shù)兼容工具包)兼容測(cè)試集。phoneME Feature直接支持兩種CPU架構(gòu):x86架構(gòu)和ARM架構(gòu)。在這兩種架構(gòu)上移植僅需少量修改,而要移植到MIPS架構(gòu)則需做較多修改。phoneME Feature軟件的結(jié)構(gòu)如圖2所示。
①JavaCall API移植層:該層提取目標(biāo)平臺(tái)的需求,實(shí)現(xiàn)必須移植的函數(shù)集,是基于目標(biāo)平臺(tái)的實(shí)現(xiàn)。pho-neME Feature的主要移植工作集中于此層。
②MIDP/CLDC層:是嵌入式Java虛擬機(jī)的核心部分。其中CLDC為資源受限的設(shè)備定義了應(yīng)用編程接口和虛擬機(jī)的基礎(chǔ)函數(shù)集,MIDP(Mobile Information Device Profile,移動(dòng)信息設(shè)備簡(jiǎn)表)則提供應(yīng)用程序環(huán)境和應(yīng)用程序所需的大量服務(wù)。
③PCSL(Portable Common Services Library,可移植的通用服務(wù)庫(kù))層:提供底層服務(wù),供CLDC、MIDP和其他可選包調(diào)用。
④抽象層:是一套函數(shù)集,所有擴(kuò)展JSR包通過(guò)抽象層接口與MIDP/CLDC層進(jìn)行交互。
⑤擴(kuò)展JSR包:為虛擬機(jī)提供擴(kuò)展功能。擴(kuò)展JSR包種類很多,可根據(jù)需要進(jìn)行擴(kuò)展。如支持藍(lán)牙和OBEX(對(duì)象交換)功能的JSR82擴(kuò)展包、支持Web服務(wù)的JSR172包、支持定位功能的JSR179包、支持在線支付功能的JSR229包等。
Java虛擬機(jī)的移植首先要確定兩件事:一是目標(biāo)CPU,二是目標(biāo)OS(操作系統(tǒng))。OS移植比較簡(jiǎn)單,移植工作集中在虛擬機(jī)自身和核心CLDC庫(kù)上;而CPU移植則較為復(fù)雜,因?yàn)閰R編解釋器和適配的編譯器十分依賴于目標(biāo)CPU架構(gòu)。
評(píng)論