嵌入式Java
嵌入式Java
嵌入式Java(Embedded Java)是Sun微系統公司提供的專用於某種設備的嵌入系統的軟體開發平台,例如為汽車,電信,和工業設備市場設計的產品。
1999年,Sun公司在Personal embedded Java的基礎上提出了J2ME(Java2 Micro Edition)規範族。J2ME是針對消費電子和嵌入式設備制訂的Java2的精簡版本。MIDP (Mobile Information Device Profile)是J2ME針對移動通信設備設計的一個子集。J2ME/MIDP為移動通信設備提供了一個統一的開發平台,使得開發人員可以快速為不同的移動通信設備開發完全可移植的增值應用,而無需考慮不同設備的硬體和軟體差異。J2ME的核心是嵌入式Java虛擬機KVM(Kilobyte Virtual Machine)和CVM(Compacted Virtual Machine)以及基於虛擬機的Configuration和Profile。目前,由一系列領域相關的公司發起了一個稱為JCP(Java Community Process)的組織,由該組織的成員制定J2ME和其他Java相應規範,各研究機構和公司根據這些規範實現自己的產品。
以J2ME技術為代表的嵌入式Java技術正在得到越來越多的研究和應用。為滿足嵌入式應用的需要,儘管作為嵌入式Java的J2ME進行了不少適應性的修改,但仍要求終端具有比較豐富的資源。對嵌入式Java的研究集中於嵌入式虛擬機的實時技術、垃圾回收技術、線程機制、解釋和編譯技術以及集成開發環境等方面,使得嵌入式Java虛擬機不但能降低對資源的需求,滿足更廣泛嵌入式應用的需要,還能有效降低應用的功耗情況。
嵌入式Java工具集包括:JavaFilter——可用於創建域和用於運行Java程序的方法的列表;JavaCodeCompact ——從整個集合中某個應用需要的域和方法列表中選擇,並且刪除不必要的平台組件,以及創建數據結構集合的表示;還有JavaDataCompact 用於鏈接各種各樣的外部文件(例如HTML,音頻或者圖形文件)。
Java因其具有的諸多優點受到了嵌入式領域的青睞,並得到了大量的研究與開發應用。自從1993年Sun公司提出Java技術以來(Java語言規範和Java虛擬機規範)對Java的應用和研究一直呈逐漸上升的趨勢,其應用和研究範圍覆蓋面極廣,主要涵蓋了以下領域:
(1)超級計算領域,如JPVM (Java ParallelVirtual Machine)、PJVM( Parallel Java Virtual Machine)、Java Grand等;
(2)企業計算領域,如J2EE、Grid 、Web service等;
(3)嵌入計算領域,如PersonalJava,、embedded Java和Card Java等。
首先,Java具有跨平台性。“一次編寫,到處運行”的特點使其十分適合在硬體與操作系統平台差異較大的嵌入式系統上進行計算,不僅可以節省大量資源,同時也可以保證軟體的可復用性。
第三,極佳的安全性。Java具有多個層次的安全防護措施,可以阻擋病毒與其它的入侵行為,以避免造成Java系統內的不穩定,提高了嵌入式系統的可靠性。
目前,在嵌入式系統中運行一個完整的項目是不現實的。首先,Java不包括直接訪問內存和寄存器的機制,所以需要設備驅動以及其它由C/C++或者彙編語言寫成的支持軟體,這些支持軟體可能被Java程序所調用也可能作為一個線程與Java運行環境并行運行。
在準備Java應用系統前,考慮Java的應用模型使其適合於整個應用的體系結構是非常重要的。目前,針對於嵌入式系統的Java應用模型主要是以下四類:No Java,嵌入式web伺服器,嵌入式Applet,嵌入式application。這四個應用模型根據Java位元組碼的位置、Java位元組碼所運行的處理器,這兩個變數來區分,每個變數可以取值target或者host target指所在的嵌入式系統,host指連接嵌入式系統的計算機。
No Java包括所有的位元組碼在本機存儲並且在host上執行的方案,雖然使用了Java,但不是在嵌入式系統上運行。
嵌入式web伺服器應用模型中,Java位元組碼在目標嵌入式系統的Flash存儲器或者ROM中存儲,但是在Host上執行。這種模型對於需要圖形介面的嵌入式系統非常有用。在host上運行的web瀏覽器執行從嵌入式系統中下載的位元組碼。除了位元組碼,這種方案中的嵌入式系統必須存儲至少一個HTML文件,並在嵌入式系統中運行嵌入式web伺服器軟體。因為Java不在嵌入式系統中運行,所以無需Java運行環境。
第三和第四應用模型中,Java位元組碼真正在嵌入式系統中運行,所以需要嵌入式Java運行環境。在嵌入式Applet模型中,Java位元組碼在host工作站中存儲,通過網路發送到嵌入式系統,由嵌入式系統執行位元組碼並將結果發回到host。嵌入式Applet能被用於執行網路管理的功能比如代替SNMP。
在嵌入式application模型中,嵌入式軟體或者全部或者部分的用Java開發,Java位元組碼存儲在非易失存儲器中,並且在嵌入式運行環境中執行。這種運行方式與在嵌入式系統中執行C/C++相似,本地代碼由處理器取指令並且執行。因為Java沒有直接訪問硬體的能力,它仍然必須依賴於由C/C++寫的本地方法,這與C使用彙編語言來完成平台相關的任務相似。