做J2ME應用開發的程序員也許經常會被一些名詞或者概念所迷惑,比如Personal Basic Profile和Personal Profile有什麼關系?基於CLDC的應用程序能夠無修改的移植到基於CDC的設備上嘛?要回答這些問題並不輕易,因為你必須首先揭開J2ME平台的神秘面紗。
2000年當J2ME平台的CLDC發布的時候,所有的Java開發者都為之興奮不已。SUN也不負眾望在兩個月後發布了基於CLDC的MIDP,給開發者提供了開發交互式應用程序的平台。我想現在國內還主要是基於CLDC/MIDP在開發應用吧。J2ME平台的另一個規范CDC在大概10個月後才發布,同時發布的還有Foundation Profile。但是由於他們都沒有給開發者提供開發可交互應用程序的API,因此他們發布的影響遠遠小於CLDC/MIDP的發布。大概在2003年SUN發布了基於CDC的Personal Basic Profile和Personal Profile。他們的組合替代了以前的PersonalJava平台。
是不是已經被這些名字弄糊塗了,我們現在來看J2ME平台的結構。J2ME平台是本著Configuration和Profile結合來設計的。Configuration是提供支持最大范圍設備的最小的平台。Profile是針對特定的設備提供相應的開發包集合。在J2ME的兩個基本配置CDC和CLDC是按照如下的標准進行區分的。
CLDC:
512 KB 以下內存
有限能源供給(通常使用電池)
有限或非持續網絡連接
簡單的用戶界面
16位或者32位的處理器
CDC:
2M以上內存
具有網絡連接能力,通常為無線網絡
需要實現java虛擬機規范的全部功能
32位或者64位的處理器
從上述的要求中我們不難看出CLDC主要針對那些資源非常受限的設備比如手機、PDA、雙工尋呼機等。而CDC主要面對那些家電產品,比如機頂盒、汽車導航系統等。
下面我們來看看J2ME平台的結構圖:
我們可以看出J2ME的核心是Configuration,在它裡面定義了java的虛擬機,通過它來和底層的Host OS打交道。Profile提供了訪問設備的IO或者圖形界面的能力,這樣Configuration和Profile共同構成了J2ME的運行環境。比如CLCD/MIDP可以提供給你開發手機程序的環境。在Profile之上針對不同的設備還可以提供不同的可選開發包。
由於CLDC/MIDP大家都比較熟悉了,我們下面主要介紹一下基於CDC的J2ME系統構架,同樣還是看它的系統圖:
基於CDC的設備可以支持全部的Java2語言規范和Java虛擬機規范,它是CLDC的超集並且遠大於CLDC,因此基於CLDC的程序是可以無修改的移植到基於CDC的設備的。Foundation Profile是對CDC進行擴展的Profile,但是他並沒有提供GUI的開發包,GUI是在Personal Basic Profile中進行定義的,它提供了AWT的一個子集給開發人員。它還提供了Xlet應用程序模式——針對java TV。Personal Profile是Personal Basci Profile的超集。他提供了對Applet的支持,豐富了AWT的組件,添加了java.awt.datatransfer包。