內(nèi)容:
J2ME的由來(lái)
J2ME系統(tǒng)結(jié)構(gòu)??Configuration和Profiles
J2ME
重要標(biāo)準(zhǔn)簡(jiǎn)介
J2ME的
平臺(tái)無(wú)關(guān)性和標(biāo)準(zhǔn)的兼容性
其他非J2ME標(biāo)準(zhǔn)的相干技巧
無(wú)線Java技巧
移動(dòng)信息設(shè)備的重要把持系統(tǒng)平臺(tái)及其對(duì)J2ME的支撐
移動(dòng)信息設(shè)備上J2ME開發(fā)的現(xiàn)狀和遠(yuǎn)景
參考材料
關(guān)于作者
Also in the Java zone:
教學(xué)
工具與產(chǎn)品
代碼與組件
所有文章
實(shí)用技巧
董向輝
中科院主動(dòng)化所人工智能實(shí)驗(yàn)室博士生
明天的盤算將進(jìn)進(jìn)普及盤算時(shí)代。各種消費(fèi)電子產(chǎn)品,包含智能手機(jī),PDA,Web-TV,將來(lái)的信息家電等等將實(shí)現(xiàn)隨時(shí)隨地的盤算。這是一個(gè)異常廣闊和豐富多彩的領(lǐng)域,其設(shè)備極度多樣化而且都將在網(wǎng)絡(luò)中,Java技巧的跨平臺(tái)性和網(wǎng)絡(luò)功效在這里大有用武之地。這就是J2ME,這一豐富多彩的領(lǐng)域中活力勃勃的技巧。但是,這一領(lǐng)域的多樣性和J2ME標(biāo)準(zhǔn)的復(fù)雜性很輕易讓初次接觸者困惑。假如他試圖寫一個(gè)能在自己的PDA上運(yùn)行的程序,很有可能會(huì)碰到很多艱苦,由于已有的舊的技巧很有可能會(huì)被放棄,真正合適PDA的標(biāo)準(zhǔn)尚未完成,多種多樣的標(biāo)準(zhǔn)和技巧本身也在迅速發(fā)展變更。
為此,本文的重點(diǎn)不在于具體的編碼細(xì)節(jié),而在于從概念上更正確地表述J2ME的系統(tǒng)結(jié)構(gòu),贊助讀者懂得和把握這些復(fù)雜的標(biāo)準(zhǔn)。并且從宏觀上描寫平臺(tái)和標(biāo)準(zhǔn)的發(fā)展,分析在移動(dòng)信息設(shè)備上開發(fā)J2ME利用的現(xiàn)狀和遠(yuǎn)景,盡量讓讀者能夠從全局上把握復(fù)雜的局面,為將來(lái)的發(fā)展做好準(zhǔn)備。
在今天盤算已經(jīng)無(wú)處不在。越來(lái)越多的人開端認(rèn)為,經(jīng)過(guò)了很多人共用一臺(tái)盤算機(jī)的大型主機(jī)時(shí)代,一人一臺(tái)盤算機(jī)的個(gè)人PC時(shí)代之后,下一個(gè)時(shí)代就是一人多臺(tái)盤算設(shè)備的普及盤算時(shí)代(Ubiquitous Computing,IBM稱之為Pervasive Computing)。盤算設(shè)備將從單一的PC擴(kuò)大到各種各樣的大小和功效,從家庭消費(fèi)電子產(chǎn)品,到個(gè)人隨身攜帶,穿著,車載的各種移動(dòng)信息處理設(shè)備,多樣化是這個(gè)領(lǐng)域的最大特點(diǎn)。
網(wǎng)絡(luò)是這個(gè)領(lǐng)域最重要的增值特征。當(dāng)手機(jī)可以隨時(shí)隨地?zé)o線上網(wǎng),PDA可以和個(gè)人PC同步,車載PC可以獲得網(wǎng)上GPS輿圖數(shù)據(jù)時(shí),這些孤立的設(shè)備才干夠施展最大的作用。
而平臺(tái)無(wú)關(guān)性和網(wǎng)絡(luò)功效正是Java的設(shè)計(jì)目標(biāo)和能力(事實(shí)上,Java最初的設(shè)計(jì)目標(biāo)就是用于消費(fèi)電子領(lǐng)域,但是后來(lái)在PC和服務(wù)器上得到了發(fā)展)。"一次編寫,到處運(yùn)行"的平臺(tái)無(wú)關(guān)性,對(duì)網(wǎng)絡(luò),多重設(shè)備間聯(lián)網(wǎng)的機(jī)制(JINI)顯然對(duì)這個(gè)領(lǐng)域是至關(guān)重要的軟件條件。這個(gè)領(lǐng)域內(nèi)的Java標(biāo)準(zhǔn)就是J2ME。
J2ME的由來(lái)
Java的最大目標(biāo)和特點(diǎn),就是"一次編寫,到處運(yùn)行"的平臺(tái)無(wú)關(guān)性。但是,很自然的,正如Sun熟悉到的,"One size does′nt fit all",一套標(biāo)準(zhǔn)無(wú)法適應(yīng)各種不同的需求。因此,Java技巧目前共有三套,分辨針對(duì)不同的平臺(tái)和利用。
Standard Edition (J2SE,標(biāo)準(zhǔn)版):針對(duì)桌面端PC和工作站的個(gè)人和低端商務(wù)利用。
Enterprise Edition (J2EE,企業(yè)版):針對(duì)服務(wù)器端企業(yè)級(jí)利用,支撐Servlets, JSP和XML等等。
Micro Edition (J2ME,袖珍版,也有翻譯為小型版或者移動(dòng)版的。)針對(duì)有限內(nèi)存,顯示和處理能力的設(shè)備,重要是消費(fèi)電子和嵌進(jìn)式設(shè)備領(lǐng)域(這實(shí)際正是Java語(yǔ)言設(shè)計(jì)最初的目標(biāo)領(lǐng)域)。
注:Java SDK 1.2及以后的版本都同一改名為Java 2,因此這些名字中都有2。
在消費(fèi)電子和嵌進(jìn)式設(shè)備領(lǐng)域,內(nèi)存從幾百K到幾十M,從沒有屏幕到Web-TV,CPU從低功耗的嵌進(jìn)式處理器到206MHz的RISC處理器,硬件條件的差別是相當(dāng)大的。這就使得J2ME的標(biāo)準(zhǔn)需要有不同的層次和種別來(lái)適應(yīng)這個(gè)復(fù)雜的領(lǐng)域,因此相比之下J2ME就比J2SE和J2EE的標(biāo)準(zhǔn)要復(fù)雜得多。關(guān)于J2ME標(biāo)準(zhǔn)的文章已經(jīng)有了不少,但是很少有文章明確簡(jiǎn)要地講明確J2ME的系統(tǒng)結(jié)構(gòu)劃分的原因,而只有明確了劃分的根據(jù)和為什么這么劃分,才干夠更好地懂得標(biāo)準(zhǔn)。尤其是由于硬件發(fā)展速度是很快的,很有可能一段時(shí)間之后,假如還按最初標(biāo)準(zhǔn)的字面定義區(qū)劃分設(shè)備就會(huì)陷于迷惘。作者瀏覽和瀏覽了相當(dāng)多的文章和先容,但有些標(biāo)題也還是最近才熟悉得比較明確,在此和讀者分享我的熟悉,也??吹玫浇ㄗh和指正。因此,下面的先容盡量不往重復(fù)其他文章中都已先容過(guò)的一些具體細(xì)節(jié),不往翻譯規(guī)范的字面定義,而是分析規(guī)范制定的原因,種別劃分的真正標(biāo)準(zhǔn),從開發(fā)者的角度,讓讀者能夠在這個(gè)復(fù)雜而多變的領(lǐng)域中更正確地把握技巧的差別和趨勢(shì)脈搏,更好地為將來(lái)廣闊的機(jī)會(huì)做好準(zhǔn)備。
J2ME系統(tǒng)結(jié)構(gòu)??Configuration和Profiles
針對(duì)消費(fèi)電子和嵌進(jìn)式設(shè)備領(lǐng)域豐富多樣的設(shè)備和彼此相差極大的盤算能力及各種硬件條件,J2ME首先根據(jù)最基礎(chǔ)的一些特點(diǎn)把它們劃分為兩類。
具備中斷網(wǎng)絡(luò)通信能力的個(gè)人移動(dòng)信息設(shè)備:如手機(jī),雙向呼機(jī),PDA(Personal Digital Assistant,個(gè)人數(shù)字助理,也稱掌上電腦)等等。
有固定的不中斷網(wǎng)絡(luò)連接的共享連接信息設(shè)備:如置頂盒(set-top boxes),Web-TV,支撐Internet的有屏幕電話,汽車娛樂/導(dǎo)航系統(tǒng)等等。
Sun的J2ME FAQ(常見標(biāo)題集)里有一個(gè)很好的概括:J2ME技巧有兩個(gè)設(shè)計(jì)中心??手持的設(shè)備,和可以插到墻上插座的設(shè)備。第一類設(shè)備往往是個(gè)人化的,移動(dòng)的,應(yīng)用電池,體積和功耗都有限制,因此功效和盤算能力有限。第二類設(shè)備一般是固定的,因此體積沒有太大限制。由于固定,可以有持續(xù)電源供給,因此功耗沒有太大標(biāo)題,盤算能力相對(duì)充裕。
盤算能力是這兩類設(shè)備的重要差別,對(duì)其上可能的利用和環(huán)境顯然有著本質(zhì)影響,不同種別的設(shè)備不可能采用同樣的Java平臺(tái),必須分辨定義。針對(duì)這兩大類設(shè)備的平臺(tái)規(guī)范就是Configuration(有譯為配置的,不過(guò)我認(rèn)為最好不譯)。第一類設(shè)備的Configuration稱為CLDC(Connected, Limited Device Configuration),第二類稱為CDC(Connected Device Configuration)。
屬于同一類的設(shè)備盤算能力是類似的,但是其他功效和條件還有非常大的差別。作為Java平臺(tái)必須保證相容性,這就必須舍棄所有的設(shè)備特別性。因此,Configuration就是支撐一組通用設(shè)備的最小Java平臺(tái),作為這些設(shè)備的最小公分母來(lái)保證不同設(shè)備間的平臺(tái)相容性。這里的Java平臺(tái)重要是指Java虛擬機(jī)(JVM)和核心庫(kù)。
在Configuration中舍棄了設(shè)備的特別性來(lái)保證Java平臺(tái)的相容性,但是僅僅有Configuration顯然是不夠的,特別的具體設(shè)備其獨(dú)占的功效和硬件條件都沒有得到支撐。為此,在Configuration的基礎(chǔ)上,根據(jù)設(shè)備具體功效再進(jìn)行一次劃分,比如智能手機(jī),PDA等等。功效的劃分也就是其他硬件條件的劃分,比如屏幕大小,內(nèi)存,盤算能力,電力供給等等都是附屬于功效的,因此同功效的設(shè)備的硬件條件都是非常類似的。Profile(譯為簡(jiǎn)表或者簡(jiǎn)檔)就是針對(duì)每一類功效設(shè)備的特別性定義的與設(shè)備特征相干的API,建筑于Configuration之上,作為Configuration的擴(kuò)大和補(bǔ)充。例如MIDP(Mobile Information Device Profile,移動(dòng)信息設(shè)備Profile)就定義了關(guān)于移動(dòng)信息設(shè)備(重要指智能手機(jī)和一部分具有無(wú)線通信功效的PDA)的圖形界面,輸進(jìn)和時(shí)間處理,持久性存儲(chǔ),短消息等等的API,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。而正在制定中的PDA Profile則定義了針對(duì)PDA的API,其屏幕,內(nèi)存條件都要大于MIDP,但是網(wǎng)絡(luò)方面的請(qǐng)求則顯然和手機(jī)有所不同。如下圖所示,同屬于一個(gè)Configuration的設(shè)備根據(jù)功效不同由不同的Profile來(lái)支撐,Profile體現(xiàn)設(shè)備的特別性,但是都建筑在一個(gè)共同的基礎(chǔ)Configuration平臺(tái)之上。
關(guān)于J2ME的系統(tǒng)結(jié)構(gòu),我們可以這樣總結(jié):
Configuration的分類是根據(jù)盤算能力的不同來(lái)劃分的,同類設(shè)備的盤算能力相近。Configuration是一個(gè)規(guī)范,定義了這類設(shè)備的共同Java平臺(tái),定義與設(shè)備無(wú)關(guān)的Java虛擬機(jī)和核心庫(kù),是平臺(tái)相容性的基礎(chǔ)。Profile的分類是根據(jù)設(shè)備功效劃分的,同類功效的設(shè)備其他各種硬件條件和需求也相近。Profile是一組API,在某一Configuration的基礎(chǔ)上擴(kuò)大了針對(duì)設(shè)備特定功效的API,使得標(biāo)準(zhǔn)能夠完整適應(yīng)特別的設(shè)備,徹底施展設(shè)備的功效。
J2ME系統(tǒng)的一般結(jié)構(gòu)是:由Configuration定義的Java虛擬機(jī)運(yùn)行于設(shè)備的宿主把持系統(tǒng)之上,構(gòu)成全部平臺(tái)的基礎(chǔ)。Configuration供給了基礎(chǔ)的語(yǔ)言特征,Profile供給針對(duì)設(shè)備的特別功效API和擴(kuò)大類庫(kù)。利用程序的運(yùn)行環(huán)境需要一個(gè)Configuration和至少一個(gè)Profile,多個(gè)Profile可以共存,也可以疊加。
我們用兩個(gè)具體設(shè)備的實(shí)現(xiàn)作為例子闡明。在一個(gè)運(yùn)行Palm OS的PDA上,Configuration采用CLDC,虛擬機(jī)采用KVM(虛擬機(jī)和Configuration是緊密相連的,KVM只是CLDC定義的一個(gè)參考實(shí)現(xiàn)(reference implementation),并不是唯一的選擇),然后采用PDA Profile的Profile。在另一個(gè)運(yùn)行Symbian的智能手機(jī)上,則可以采用KVM,CLDC,MIDP。
注:在JCP(Java Community Process,J2ME標(biāo)準(zhǔn)在這里制定)的網(wǎng)站上已經(jīng)提出了JSR 68(Java Specification Request,標(biāo)準(zhǔn)提案),將在下一代J2ME標(biāo)準(zhǔn)中用Building Block概念來(lái)代替Configuration。其原因是,Profile經(jīng)常需要供給J2SE中已有的功效,為了能夠利用已有的J2SE API而不是重新制定新API,引進(jìn)了Building Block概念。一個(gè)Building Block定義一個(gè)來(lái)自J2SE或者J2EE的API以用于J2ME。這樣,Profile就可以通過(guò)Building Block來(lái)利用已有的API。
J2ME重要標(biāo)準(zhǔn)簡(jiǎn)介
J2ME的標(biāo)準(zhǔn)很多,其中很多細(xì)節(jié)凡是關(guān)于J2ME的文章都會(huì)先容,這里我們只簡(jiǎn)要先容幾個(gè)基礎(chǔ)而重要的標(biāo)準(zhǔn)。讀者也可以直接往查標(biāo)準(zhǔn)的正式文檔,在JCP網(wǎng)站可以找到所有J2ME標(biāo)準(zhǔn)和規(guī)范,包含還在提出和審核階段,沒有正式成為標(biāo)準(zhǔn)的提案。
固然J2ME標(biāo)準(zhǔn)繁多,但只要把握住標(biāo)準(zhǔn)劃分的原因就很輕易把握。在這個(gè)技巧飛速發(fā)展的領(lǐng)域,我們不能把眼力局限于標(biāo)準(zhǔn)的字面含義,而要機(jī)動(dòng)把握,把握其精力。比如,CLDC和CDC的定義中具體的最小內(nèi)存需求僅僅是"最小的",隨著硬件能力的飛速發(fā)展,很有可能一些界限會(huì)變得含混。PDA本來(lái)應(yīng)當(dāng)屬于CLDC的領(lǐng)域,但是Compaq的iPaq上卻實(shí)現(xiàn)了CDC。以后的下一代PDA有64M內(nèi)存并不意外,在其上實(shí)現(xiàn)CDC也是完整可能的。但是,從功效的角度,應(yīng)當(dāng)還是CLDC以及PDA Profile更合適于PDA的條件。到那時(shí),具體的實(shí)現(xiàn)就要看廠商和開發(fā)者的選擇了。還需要留心的是,由于Profile是建于Configuration之上,作為對(duì)Configuration的擴(kuò)大,因此Profile必須Configuration的支撐。有的文章在講到MIDP的內(nèi)存需求時(shí),說(shuō)MIDP需要最少256K,這是指MIDP本身。而有的文章說(shuō)MIDP需要最少768K,那時(shí)由于把作為基礎(chǔ)的CLDC所需要的512K算進(jìn)往了。
CLDC
CLDC(Connected, Limited Device Configuration)針對(duì)個(gè)人化的移動(dòng)的有限連接信息設(shè)備,例如智能手機(jī),雙向呼機(jī),PDA等等。其請(qǐng)求是:
512 KB 以下內(nèi)存
有限能源供給(通常應(yīng)用電池)
有限或非持續(xù)網(wǎng)絡(luò)連接
簡(jiǎn)略的用戶界面(甚至沒有)
在如此嚴(yán)格的限制之下,CLDC 只包含四個(gè)包,其中三個(gè)來(lái)自標(biāo)準(zhǔn) Java 規(guī)范并且作了縮減(java.lang、java.util 和 java.io),另一個(gè)專門針對(duì) CLDC (javax.microedition)。
包 描寫 類和接口數(shù)目
java.io 系統(tǒng)輸進(jìn)輸出 18
java.lang Java 編程語(yǔ)言的基礎(chǔ)類 38
java.util 集合、日期和時(shí)間支撐、各式實(shí)用工具類 10
javax.microedition 通用連接框架(Generic Connection Framework) 10
表 1. CLDC 中的包
CLDC必須照顧最苛刻的硬件條件,因此往掉了很多重要的類和特點(diǎn),只保存了最核心的一些基礎(chǔ)類。例如RMI和映射因需要內(nèi)存太多而被舍棄,毛病處理請(qǐng)求的代價(jià)太高,也被刪除了。很多設(shè)備不能支撐浮點(diǎn)數(shù),更不用說(shuō)雙精度類了。還有很多設(shè)備沒有或不供給訪問一個(gè)文件系統(tǒng)的功效或權(quán)限。不過(guò)請(qǐng)放心,對(duì)于那些能夠支撐更多特點(diǎn)的設(shè)備,它們所需要的這些功效或者超出標(biāo)準(zhǔn)J2SE請(qǐng)求的功效,都可以由針對(duì)此類設(shè)備的Profile來(lái)補(bǔ)充。
CLDC中唯一新增的javax.microedition包定義了一個(gè)通用連接框架(Generic Connection Framework,GCF)。通用連接框架把J2SE中的文件,sockets,HTTP懇求和其他輸進(jìn)/輸出機(jī)制的概念抽象為更簡(jiǎn)略的一套類??梢哉f(shuō),它供給了java.io和java.net的同樣功效,卻不需要設(shè)備的特別能力。與底層把持系統(tǒng)無(wú)關(guān)是Configuration的基礎(chǔ)請(qǐng)求。通用連接框架可以看成是結(jié)構(gòu)通信驅(qū)動(dòng)的框架,這一點(diǎn)類似于J2SE中的JDBC,后者是一個(gè)結(jié)構(gòu)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的框架。通用連接框架并沒有定義對(duì)任何特定協(xié)議的支撐,但是在Sun的一個(gè)CLDC參考實(shí)現(xiàn)中確實(shí)包含了對(duì)一些通信協(xié)議的支撐,這點(diǎn)使很多人感到困惑。那些協(xié)議只是一些例子,協(xié)議的支撐應(yīng)當(dāng)在Profile層或者專門針對(duì)某設(shè)備的擴(kuò)大中定義。
由于虛擬機(jī)處于Configuration中定義平臺(tái)的核心,Configuration和虛擬機(jī)是緊密相干的。既然CLDC的硬件請(qǐng)求如此苛刻,對(duì)其虛擬機(jī)也就有著非常高的請(qǐng)求。Sun供給的參考實(shí)現(xiàn)是KVM(K Virtual Machine)。KVM是完整從頭開端編寫的,其設(shè)計(jì)目標(biāo)包含:
虛擬機(jī)的大小和類庫(kù)為50到80KB左右
內(nèi)存占用為幾十K
在具有 16 位和 32 位處理器的設(shè)備上,有相當(dāng)?shù)男阅?
高度可移植和可擴(kuò)大,特定于機(jī)器和/或平臺(tái)的代碼的總量很少
多線程和垃圾回收是獨(dú)立于系統(tǒng)的
可以對(duì)虛擬機(jī)的組件進(jìn)行配置,以合適于特定設(shè)備,從而加強(qiáng)了機(jī)動(dòng)性
KVM的實(shí)現(xiàn)是相當(dāng)成功的。最早在1999年JavaOne大會(huì)的時(shí)候,作為Sun的Spotless打算派生成果,Sun分發(fā)了很多Palm V,供給了Palm OS上的第一個(gè)KVM版本和一個(gè)實(shí)驗(yàn)性的類庫(kù)com.sun.kjava。這一KVM非常小而緊湊,只需要幾十K內(nèi)存。而com.sun.kjava類庫(kù)供給了Palm的圖形用戶接口,Palm數(shù)據(jù)庫(kù)訪問,簡(jiǎn)略的集合類等等。將兩者聯(lián)合,開發(fā)者就可以開發(fā)Palm上的Java利用,因此它受到了開發(fā)者的廣泛歡迎,網(wǎng)上也有了很多教程和示例代碼。事實(shí)上,到目前為止,這都是在Palm上開發(fā)Java程序的唯一公平道路。CLDC沒有定義用戶界面等API,MIDP并不合適PDA,對(duì)應(yīng)的最合適J2ME標(biāo)準(zhǔn)是PDA Profile,但是尚未完成。很多開發(fā)者強(qiáng)烈請(qǐng)求Sun在正式的J2ME標(biāo)準(zhǔn)中持續(xù)支撐它,但是Sun已經(jīng)放棄了這一技巧,而且并不保證正式的PDA Profile與之的兼容性,因此我們不建議讀者過(guò)多研究。
由于這一歷史原因,造成了很多名詞上的困擾。很多早期的文章把這一KVM與com.sun.kjava包合稱為KVM,表現(xiàn)這一技巧,而現(xiàn)在所說(shuō)的KVM應(yīng)當(dāng)是單單指Sun的CLDC虛擬機(jī)參考實(shí)現(xiàn)。甚至還有人用K Java作為J2ME的代稱,表現(xiàn)基于KVM的Java,這很輕易和正式的J2ME標(biāo)準(zhǔn)以及早期的com.sun.kjava包相混雜,讀者在看這類文章時(shí)需要留心文章的時(shí)間和背景,并采用嚴(yán)格的正式名稱。
目前Sun還正在開發(fā)KVM的一個(gè)高性能版本--Project Monty虛擬機(jī)以用于下一代的移動(dòng)信息處理設(shè)備。它采用了Hot Spot的技巧,性能將比現(xiàn)有的KVM將近高一個(gè)數(shù)目級(jí)。
固然KVM作為Sun的參考實(shí)現(xiàn)最經(jīng)常被提到,不過(guò)并不即是必定要用KVM。其它公司的虛擬機(jī)只要滿足相應(yīng)的Configuration里的定義,通過(guò)兼容性測(cè)試,一樣可以作為Configuration的虛擬機(jī)。目前IBM WebSphere Micro Environment,已經(jīng)通過(guò)了"Java PoweredTM"認(rèn)證,其J9虛擬機(jī)在相當(dāng)多的平臺(tái)上通過(guò)了J2ME兼容性測(cè)試:
MIDP
MIDP(Mobile Information Device Profile)定義了針對(duì)移動(dòng)信息處理設(shè)備(重要指智能手機(jī)和一部分具有無(wú)線通信功效的PDA)的圖形界面,輸進(jìn)和時(shí)間處理,持久性存儲(chǔ),無(wú)線電話網(wǎng)絡(luò)連接之上的一些消息處理(例如短消息),安全等等API,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。類似于J2SE中的Applet框架,MIDP供給了基于javax.microedition.midlet 包的MIDlet利用程序框架。
由于MIDP提出較早,目前重要的智能手機(jī)和PDA把持系統(tǒng)上都已有了相應(yīng)的實(shí)現(xiàn)(后面將簡(jiǎn)要先容這些把持系統(tǒng)),網(wǎng)上也有很多教程與文章,一般所謂的Wireless利用文章都是關(guān)于MIDP的,這里就不再重復(fù)了,讀者可以參考文末的資源。
PDA Profile
PDA Profile將在CLDC的基礎(chǔ)上,供給針對(duì)PDA的用戶界面,數(shù)據(jù)存儲(chǔ)等擴(kuò)大API。用戶界面部分實(shí)用于有限大小和色彩的顯示,為了支撐開發(fā)者已有的經(jīng)驗(yàn)基礎(chǔ),將是AWT的一個(gè)子集,也有可能在AWT子集之上加進(jìn)MIDP用戶界面組件。而存儲(chǔ)機(jī)制將是簡(jiǎn)略的,平臺(tái)無(wú)關(guān)的,類似于MIDP中的存儲(chǔ),為利用程序、數(shù)據(jù)、配置/環(huán)境信息供給簡(jiǎn)略的數(shù)據(jù)存儲(chǔ)。
目前這一規(guī)范正由Palm Source公司(從Palm公司分別出來(lái)的專門負(fù)責(zé)Palm OS的公司)領(lǐng)導(dǎo)主持,已經(jīng)在4月8日開端進(jìn)進(jìn)了JCP流程的第二階段Community Draft最后部分(Community Draft Ballot 08 Apr, 2002 ),估計(jì)終極正式版本應(yīng)當(dāng)在7月至9月左右完成。(參考http://jcp.org/introduction/timeline/index.en.jsp)前面已經(jīng)提到,PDA Profile將代替 k java,作為針對(duì)PDA的正式J2ME標(biāo)準(zhǔn)。因此建議??丛赑DA上開發(fā)利用的開發(fā)者等候這個(gè)標(biāo)準(zhǔn)的出臺(tái)和相應(yīng)的實(shí)現(xiàn),現(xiàn)在假如要進(jìn)行MIDP的利用開發(fā),則應(yīng)明確其目標(biāo)是智能手機(jī)類的設(shè)備,而不是PDA,這一點(diǎn)很多文章都沒有講明確。
CDC
CDC(Connected Device Configuration)針對(duì)有固定的不中斷網(wǎng)絡(luò)連接的共享連接信息設(shè)備,如置頂盒(set-top boxes),Web-TV,支撐Internet的有屏幕電話,汽車娛樂/導(dǎo)航系統(tǒng)等等。
CDC請(qǐng)求為Java供給至少2M的內(nèi)存,這可以是ROM加上RAM,也就是說(shuō),Java虛擬機(jī)和核心類庫(kù)很有可能放在ROM或者Flash里。事實(shí)上,下一代無(wú)線手持設(shè)備完整可以滿足CDC的需求。
CDC是CLDC的完整超集,包含了所有的CLDC規(guī)范。另外,在相對(duì)充裕的條件下,它支撐J2SE的標(biāo)準(zhǔn) Java 虛擬機(jī)和一部分核心類庫(kù)。對(duì)于這一點(diǎn),幾乎所有的文章都這么說(shuō),卻很少有文章徹底分清彼此之間的兼容性關(guān)系,甚至還有文章毛病地說(shuō)CDC支撐Java語(yǔ)言的完整實(shí)現(xiàn),這是很輕易引起混雜的。
首先可以確定,既然CDC是CLDC的超集,基于CLDC的程序在CDC內(nèi)是完整兼容的。不過(guò)這里的CLDC程序必須只用到CLDC的部分,一旦采用了某一個(gè)Profile,顯然也就不能在CDC內(nèi)兼容了。
其次,CDC支撐標(biāo)準(zhǔn)的J2SE虛擬機(jī),這只是Java平臺(tái)的基礎(chǔ),并不包含建筑于平臺(tái)基礎(chǔ)之上的各種類庫(kù)。特定設(shè)備需要的特定類庫(kù)由相應(yīng)的Profile來(lái)定義。這一點(diǎn)隨后就會(huì)提到。還是那個(gè)要害:Configuration定義的是一類設(shè)備的與設(shè)備無(wú)關(guān)的最小平臺(tái),因此,諸如用戶界面之類的類都被分別,留在Profile中定義。
固然CDC支撐標(biāo)準(zhǔn)的J2SE虛擬機(jī),但是標(biāo)準(zhǔn)的Java虛擬機(jī)顯然無(wú)法適應(yīng)有限的資源環(huán)境。為此需要專門定義一個(gè)虛擬機(jī),稱為CVM(開端的時(shí)候,CVM代表Compact Virtual Machine,但是后來(lái)Sun的工程師認(rèn)為這有可能與KVM相混雜,因此現(xiàn)在C并不代表特定的含義)。CVM除了支撐標(biāo)準(zhǔn)J2SE虛擬機(jī)的所有特征外,還支撐很多嵌進(jìn)系統(tǒng)需要的特征,更合適于在資源限制條件下運(yùn)行,移植性很強(qiáng)。目前Sun供給了Linux和VxWorks之上的CVM參考實(shí)現(xiàn)(reference implementation)。
Foundation Profile
Foundation Profile供給除了用戶界面以外CDC所缺乏的幾乎所有標(biāo)準(zhǔn)J2SE核心類庫(kù),作為其他所有Profiles的基礎(chǔ)(我們看到,多個(gè)Profile可以共存,也可以疊加)。
Personal Profile
Personal Profile針對(duì)那些資源相對(duì)有限,但是需要高度的Internet和WEB連接支撐的設(shè)備,例如Web-TV,汽車導(dǎo)航系統(tǒng)等等。它在Foundation Profile的基礎(chǔ)上供給了網(wǎng)絡(luò)特征以及支撐Java applets的 GUI。
Personal Profile的前身是Personal Java,Personal Java是Sun為資源限制設(shè)備創(chuàng)立 Java 平臺(tái)版本的早期嘗試。Personal Profile將與Personal Java 1.1和1.2向后兼容。
RMI Profile
RMI Profile在Foundation Profile的基礎(chǔ)上供給RMI支撐,將答應(yīng)網(wǎng)絡(luò)設(shè)備與其它系統(tǒng)利用程序(不必定是J2ME的)交互把持。
J2ME的平臺(tái)無(wú)關(guān)性和標(biāo)準(zhǔn)的兼容性
平臺(tái)無(wú)關(guān)性重要指的是設(shè)備的宿主把持系統(tǒng)平臺(tái)。由于Java平臺(tái)建筑于虛擬機(jī)之上,只要不同的把持系統(tǒng)上的虛擬機(jī)滿足同樣的規(guī)范和標(biāo)準(zhǔn),對(duì)于虛擬機(jī)以上的層次是平臺(tái)無(wú)關(guān)的。這使得針對(duì)某一Configuration或者Profile的利用可以運(yùn)行于所有實(shí)現(xiàn)了這一Configuration或者Profile的把持系統(tǒng)平臺(tái)。舉例來(lái)說(shuō),目前已經(jīng)有網(wǎng)站開端收集基于MIDP的程序??MIDlet,供給下載和收費(fèi),各種支撐MIDP的設(shè)備都可以應(yīng)用,這包含數(shù)目宏大的智能手機(jī)和幾乎所有的PDA(Palm OS和Pocket PC)。
對(duì)于Profile而言,不同的Profile之間一般是不相容的,比如日本NTT 的DoCoMo已經(jīng)銷售了相當(dāng)多的支撐CLDC的手機(jī),但是應(yīng)用的是自己專用的Profile,針對(duì)這一Profile的程序?qū)ζ渌鸓rofile也就是不兼容的。事實(shí)上,由于Profile是針對(duì)設(shè)備功效的,不同的Profile針對(duì)的設(shè)備,往往功效上有著較大差別,程序的相容性既不可能也無(wú)太大意義。當(dāng)然有一些設(shè)備的功效劃分不那么明確,比如有無(wú)線通信功效的PDA和智能手機(jī)。由于一個(gè)Configuration之上可以同時(shí)有多個(gè)Profile,Profile之間也可以嵌套和疊加,例如CDC的Foundation Profile就是其他各種Profile的基礎(chǔ)。那么這些設(shè)備就既可以采用MIDP也可以采用PDAP,在以后的硬件基礎(chǔ)上,同時(shí)裝多個(gè)Profile也完整沒有標(biāo)題。
有的文章里說(shuō),J2ME為了能夠在盤算能力有限的設(shè)備上運(yùn)行,舍棄了J2SE的很多特征,因此J2ME是J2SE的子集。這樣的說(shuō)法沒有夸張J2ME里由于設(shè)備特別性而增長(zhǎng)的內(nèi)容,因而是不正確的。除非程序只用到這些平臺(tái)間共同的部分,否則是不能相容的。而一般來(lái)說(shuō),共同的部分是相當(dāng)有限的。
其他非J2ME標(biāo)準(zhǔn)的相干技巧
還有一些技巧和J2ME相干,但是并不屬于J2ME,我們?cè)谶@里作簡(jiǎn)要先容。
Java Card
Java卡(Java Card)是為智能卡(smart cards)設(shè)計(jì)的。Smart cards的內(nèi)存非常有限,為此限制了類的數(shù)目(例如,沒有Windows系統(tǒng)類),并把全部Java Card規(guī)范在一個(gè)二進(jìn)制核心里實(shí)現(xiàn),然后用Java封裝。由于智能卡的功效很簡(jiǎn)略而輕易把握,類不需要頻繁轉(zhuǎn)變,這一方法效果很好(對(duì)于J2ME顯然不能應(yīng)用這種方法)。另外,由于每一個(gè)Java卡利用的數(shù)據(jù)和代碼是獨(dú)立在沙箱(sand box)內(nèi)履行的,一張卡上可以有多個(gè)利用,彼此獨(dú)立,并且很安全,這樣就實(shí)現(xiàn)了一卡多用,不需要在錢包里裝太多的卡。
固然Java卡是為智能卡設(shè)計(jì)的,不過(guò)也可以用于很多其他處所。例如1998年的Java One大會(huì)上的Java戒指(Java Ring,又名 Java-Powered iButton,事實(shí)上只是Java Card的另外一種型態(tài),Dallas Semiconductor公司將它制作成為鈕扣的外形,進(jìn)而鑲嵌在戒指之上),或者世界上現(xiàn)在發(fā)布的數(shù)百萬(wàn)張GSM SIM卡。
Embedded Java
Embedded Java是歷史上Sun另一次創(chuàng)立嵌進(jìn)系統(tǒng)Java平臺(tái)的嘗試,針對(duì)有中斷的網(wǎng)絡(luò)連接或者沒有網(wǎng)絡(luò)連接的設(shè)備,這些設(shè)備經(jīng)常是沒有圖形界面的。Embedded Java的設(shè)計(jì)更接近于J2SE,但是因此太大太慢,而且對(duì)系統(tǒng)請(qǐng)求過(guò)高。另外,Embedded Java將把持其運(yùn)行的平臺(tái),也就是吸收所有的系統(tǒng)調(diào)用,所有的庫(kù),所有的設(shè)備。顯然供給平臺(tái)的公司不會(huì)愛好這一點(diǎn)。因此,Embedded Java基礎(chǔ)上完整失敗了。
WAP
WAP(Wireless Application Protocol,無(wú)線利用協(xié)議)是XML的一個(gè)利用,其目標(biāo)是在無(wú)線設(shè)備如手機(jī)上顯示Internet內(nèi)容。由于無(wú)線設(shè)備的顯示區(qū)域有限,需要將標(biāo)準(zhǔn)的HTML重新調(diào)劑以適應(yīng)硬件條件。
很多初聽說(shuō)J2ME的人都會(huì)想到WAP,實(shí)在WAP和J2ME并不沖突,而且是很好的互補(bǔ)。WAP對(duì)于文本為主的內(nèi)容是很合適的,需要持續(xù)的網(wǎng)絡(luò)連接。但是對(duì)于圖形較多的利用WAP就不太合適,只能供給輕量級(jí)的腳本履行能力。WAP的網(wǎng)關(guān)也有安全性標(biāo)題。而Java技巧可以用于中斷的網(wǎng)絡(luò)連接,可以將利用和服務(wù)邏輯在設(shè)備和服務(wù)器間分別,很合適于圖形利用,有很穩(wěn)固而可靠的安全模型。
聯(lián)合WAP和Java技巧的一個(gè)方法是在設(shè)備上安裝一個(gè)WAP瀏覽器,并且實(shí)現(xiàn)CLDC和MIDP及其與WAP瀏覽器之間的通信。也有一些WAP技巧是用Java實(shí)現(xiàn)的,比如K Browser(http://www.4thpass.com)就是一個(gè)用Java實(shí)現(xiàn)的瀏覽器,運(yùn)行于J2ME之上。
無(wú)線Java技巧
無(wú)線這個(gè)概念在J2ME的相干文章中經(jīng)常涌現(xiàn),但是
無(wú)線Java不即是J2ME。J2ME中,無(wú)線設(shè)備只是其中的一小部分。而無(wú)線Java技巧也可能包含這種情況:在筆記本上運(yùn)行J2SE利用,通過(guò)802.11 LAN連接網(wǎng)絡(luò)。
MIDP不是全部的J2ME。MIDP發(fā)布最早,因此也得到了最廣泛的支撐,相干的討論和文章因此也非常多,但是J2ME當(dāng)然不僅僅是MIDP。
MIDP不是全部的無(wú)線Java技巧。還有很多其他Java技巧屬于無(wú)線技巧,比如Personal Java,PDA Profile,甚至無(wú)線設(shè)備上的J2SE。
移動(dòng)信息設(shè)備的重要把持系統(tǒng)平臺(tái)及其對(duì)J2ME的支撐
在消費(fèi)電子和嵌進(jìn)式設(shè)備的廣闊領(lǐng)域中,目前最受關(guān)注的是移動(dòng)信息設(shè)備,因此有必要先容一下移動(dòng)信息設(shè)備的重要把持系統(tǒng)平臺(tái),這對(duì)J2ME的開發(fā)是相當(dāng)重要的。移動(dòng)信息設(shè)備重要包含PDA和智能手機(jī),現(xiàn)在和將來(lái)都還會(huì)有一部分設(shè)備處于PDA和智能手機(jī)交界的地位。其中手機(jī)的市場(chǎng)遠(yuǎn)比PDA要大得多,所以很多國(guó)外談到J2ME的文章都是以Wireless利用為主。
PDA也即掌上電腦,一般是指類似于Palm公司出品的Palm這樣的設(shè)備,重要的把持系統(tǒng)有Palm OS和Pocket C兩大陣營(yíng)。Palm OS來(lái)自Palm公司,是一個(gè)開放的系統(tǒng),在PDA市場(chǎng)上占主導(dǎo)地位,已經(jīng)有非常多的第三方廠商開發(fā)的利用和一大批非常忠誠(chéng)和狂熱的用戶。目前采用Palm OS的重要有Palm公司的Palm系列和Sony公司的Clie系列(Handspring公司的Visor也屬于這類產(chǎn)品,但是已經(jīng)頒布退出傳統(tǒng)PDA市場(chǎng),重要發(fā)展PDA和無(wú)線通信聯(lián)合的產(chǎn)品Treo)。
Pocket PC是微軟及其合作伙伴Casio、Compaq、Hewlett Packard和Symbol推出的,基于Win CE 3.0,也是一個(gè)開放的標(biāo)準(zhǔn)系統(tǒng),功效可以擴(kuò)大(以往的Win CE是一個(gè)封閉的不可擴(kuò)大的系統(tǒng)),在這個(gè)平臺(tái)上廠商可以自己開發(fā)軟件。具體產(chǎn)品如Compaq的iPAQ。
另外,Sharp公司Zaurus系列PDA采用Linux的一個(gè)針對(duì)嵌進(jìn)式系統(tǒng)的版本。作為擁有高達(dá)64M內(nèi)存的高端PDA,可以滿足CDC的標(biāo)準(zhǔn),預(yù)裝了Personal Java的虛擬機(jī)。
在智能手機(jī)領(lǐng)域,重要的平臺(tái)是Symbian的EPOC。EPOC最早由Psion開發(fā),重要面向智能手機(jī),也有PDA的特點(diǎn),Psion就是第一批重要的PDA廠商之一。Psion頒布EPOC的第一個(gè)版本是開放的OS,并向其它廠商授權(quán),隨后Psion與Ericsson,Nokia,及稍后的Motorola建立了名為"Symbian"的同盟,目前重要股東為Motorola, Nokia, Panasonic, Psion和SonyEricsson,而且Siemens4月也頒布加進(jìn)。Symbian在歐洲有很好的基礎(chǔ),為大多數(shù)重要手機(jī)廠商所采用,范例的產(chǎn)品如Norkia的9210。
圖5:Norkia 9210
Symbian向領(lǐng)先的軟硬件開發(fā)商開放源代碼--所謂的Platinum Programme。從Symbian OS 5起開端支撐java,OS 6引進(jìn)了Personal Java和Java Phone(在Personal Java基礎(chǔ)上的一個(gè)擴(kuò)大API,重要針對(duì)手機(jī)),OS 7開端支撐CLDC和MIDP(部分基于6.0和6.1的產(chǎn)品也支撐)。
另一方面,微軟則有PocketPC 2002電話版和SmartPhone 2002(又稱Stinger)與Symbian競(jìng)爭(zhēng),顯然,前者是有無(wú)線通信功效的PDA(前面提到的Handspring新推出的Treo就是這類產(chǎn)品的范例),后者是有智能處理功效的手機(jī)。
移動(dòng)信息設(shè)備上J2ME開發(fā)的現(xiàn)狀和遠(yuǎn)景
在前面提到的這些把持系統(tǒng)平臺(tái)中,Palm OS上已經(jīng)有了MIDP的參考實(shí)現(xiàn),但是并不是最合適PDA的Profile。Symbian實(shí)現(xiàn)了CLDC和MIDP,作為智能手機(jī)的把持系統(tǒng),是理想的MIDP利用平臺(tái)。在Compaq的iPaq上已經(jīng)實(shí)現(xiàn)了CDC(基于Pocket PC),另外前面提到過(guò),IBM的WebSphere Micro Environment在Pocket PC上實(shí)現(xiàn)了CLDC,CDC和MIDP。Sharp的Zaurus實(shí)現(xiàn)了Personal Java(基于Linux)??梢钥吹?,在硬件條件較好的PDA上(Pocket PC和Zaurus都應(yīng)用Intel Arm CPU,比Palm應(yīng)用的Motorola DragonBall系列性能要高得多)都可以實(shí)現(xiàn)CDC的標(biāo)準(zhǔn)。由于這些重要把持系統(tǒng)平臺(tái)都是開放的,基礎(chǔ)可以信任,重要的移動(dòng)信息設(shè)備把持系統(tǒng)都將一直供給J2ME的支撐,但是具體支撐哪個(gè)標(biāo)準(zhǔn)則并不必定呆板地按照CLDC和CDC的最初定義,和設(shè)備的硬件條件和廠商的選擇有關(guān),或者可能同時(shí)實(shí)現(xiàn)多個(gè)標(biāo)準(zhǔn)。
關(guān)于移動(dòng)信息設(shè)備上J2ME利用的具體開發(fā),現(xiàn)有的文章和技巧基天職為以下幾類:
采用早期的KVM和com.sun.kjava包,或者加上第三方的k awt類庫(kù)。有很多早期的文章和代碼,但是這一技巧將被PDA Profile代替,而且不保證兼容性,不建議開發(fā)者采用這一方法,而是等候PDA Profile的最后完成及實(shí)在現(xiàn)。
采用CLDC和MIDP開發(fā)。由于MIDP標(biāo)準(zhǔn)發(fā)布較早,智能手機(jī)的市場(chǎng)也遠(yuǎn)比PDA大得多,這是目前大批的無(wú)線利用文章的重要內(nèi)容,不過(guò)它最合適的目標(biāo)是智能手機(jī),固然智能手機(jī)可能有必定的PDA的功效,但是這一技巧并不是最合適PDA的,開發(fā)者需要考慮明確。
采用CDC和Personal Profile,這樣的文章不太多見,目前的移動(dòng)信息設(shè)備硬件能力還有所不足。但是下一代的PDA和智能手機(jī)確定可以支撐。
就現(xiàn)有的PDA硬件條件而言,J2ME利用要和已有的利用競(jìng)爭(zhēng)還有比較多的艱苦:
空間:現(xiàn)在一般的Palm類設(shè)備內(nèi)存從2M到16M不等(目前較高級(jí)的機(jī)型都已支撐擴(kuò)大卡,可以擴(kuò)大到128M,但是卡上運(yùn)行程序的速度要慢得多,一般重要用來(lái)放數(shù)據(jù),運(yùn)行程序不能依附于卡),Palm上一般現(xiàn)有程序的標(biāo)準(zhǔn)大小是幾十K到300K以下。而僅MIDP的Palm參考實(shí)現(xiàn)庫(kù)在Palm上就需要將近600K,再加上作為基礎(chǔ)的CLDC庫(kù),加上程序,就快要接近1M了。和已有的利用相比,目前是沒有太大競(jìng)爭(zhēng)力的。
速度:由于Palm一直信仰的是"簡(jiǎn)略就是美"的原則,目前的Palm系列PDA重要用的是33MHz 的Motorola 68000系列DragonBall,這固然帶來(lái)了本錢的降低和節(jié)電性,但J2ME利用的性能很難讓人滿足了。作者在自己的Palm m100(進(jìn)門機(jī)型,但是Palm系列各機(jī)型的CPU速度基礎(chǔ)上是一樣的)測(cè)試過(guò)一些演示程序,一般都有兩三秒鐘的啟動(dòng)延遲。
功效:目前最合適Palm的PDA Profile尚未完成,假如用MIDP開發(fā)則不太合適,用早期的KVM和com.sun.kjava則由于不是J2ME標(biāo)準(zhǔn),程序兼容性無(wú)法保證。
固然如此,但是在移動(dòng)信息設(shè)備上開發(fā)J2ME利用的遠(yuǎn)景還是非常美好的:
硬件的發(fā)展:目前的Palm配8M到16M內(nèi)存已經(jīng)是主流,下一代超過(guò)32M是必定的趨勢(shì)。Palm OS 5終于開端支撐32位的ARM RISC處理器,其速度應(yīng)當(dāng)能夠進(jìn)步10倍以上。事實(shí)上,Sharp公司今年第一季度發(fā)售的Zaurus SL-5500已經(jīng)采用了Intel 206MHz StrongARM處理器和64M內(nèi)存,在這樣的硬件上速度和內(nèi)存都不會(huì)成為標(biāo)題。
標(biāo)準(zhǔn)的完善:PDA Profile今年內(nèi)將最后完成,可以預(yù)計(jì)很快會(huì)在重要把持系統(tǒng)上得到實(shí)現(xiàn)。目前在JCP也有很多其他標(biāo)準(zhǔn)非常有意義,例如關(guān)于藍(lán)牙技巧(Bluetooth),游戲,定位等等。
平臺(tái)的廣泛性:移動(dòng)信息設(shè)備的重要把持系統(tǒng)平臺(tái)都是開放的,J2ME的標(biāo)準(zhǔn)也是開放的,因此基礎(chǔ)上所有的重要把持系統(tǒng)平臺(tái)都支撐或?qū)⒅蜫2ME,這帶來(lái)的廣闊市場(chǎng)(智能手機(jī)的市場(chǎng)尤其宏大,據(jù)稱Norkia到今年就可以出貨5000萬(wàn)只Java手機(jī),而到2003年可達(dá)1億只。)和真正的"一次編寫,到處運(yùn)行"是任何其他技巧無(wú)法相比的。對(duì)于開發(fā)者而言,可以不受把持系統(tǒng)的限制,不用擔(dān)心在這個(gè)多變的市場(chǎng)上因平臺(tái)的變更而影響自己的利用。
開發(fā)的方便性:J2ME固然和J2SE有著很多不同,但仍然屬于Java技巧,具有Java方便開發(fā)的優(yōu)點(diǎn),也使得Java程序員學(xué)習(xí)移動(dòng)信息設(shè)備開發(fā)沒有太大艱苦(事實(shí)上,我認(rèn)為開發(fā)J2ME利用的重要艱苦不在于具體編碼,而在于標(biāo)準(zhǔn)的復(fù)雜性)。
相關(guān)資源:
J2ME牽涉到的內(nèi)容相當(dāng)多,這里具體列出各方面的重要站點(diǎn)。
J2ME的官方網(wǎng)站:
http://jcp.org,Java Community Process(JCP)。固然Sun是Java的開創(chuàng)人,但是現(xiàn)在Java平臺(tái)的很多定義和擴(kuò)大工作是通過(guò)JCP進(jìn)行的。JCP答應(yīng)公司和個(gè)人參與到Java平臺(tái)的定義和修正工作中來(lái),其流程很簡(jiǎn)略,先提交一個(gè)擴(kuò)大Java平臺(tái)的規(guī)范需求(java specification request, JSR),假如被吸收,就組成一個(gè)專家組正式定義這個(gè)JSR。專家組的成員包含該領(lǐng)域的專家和志愿奉獻(xiàn)精力和時(shí)間者。下一步就頒布出來(lái)吸收其他JCP成員和大眾,審查,根據(jù)審查意見修正后,就投票吸收為一個(gè)正式的Java標(biāo)準(zhǔn)。這一過(guò)程能夠保證Java的各種實(shí)現(xiàn)是兼容的,從而保證Java利用的相容性。所有的J2ME標(biāo)準(zhǔn)都是通過(guò)這個(gè)流程定義的。
http://java.sun.com/products/cldc/wp/ProjectMontyWhitePaper.pdf,Project Monty虛擬機(jī)的白皮書。
無(wú)線Java技巧:
http://wireless.java.sun.com,有大批的教程和文章,重要針對(duì)無(wú)線Java技巧。其中
http://wireless.java.sun.com/getstart/,先容無(wú)線Java技巧的含義和基礎(chǔ)概念。
http://wireless.java.sun.com/midp和http://wireless.java.sun.com/midp/articles,關(guān)于MIDP。
http://wireless.java.sun.com/midp/quizzes/midp是一個(gè)測(cè)驗(yàn)?zāi)銓?duì)MIDP懂得程度的測(cè)試。
http://wireless.java.sun.com/getstart/conceptmap.html,以非常直觀的情勢(shì)表現(xiàn)了各種Java平臺(tái),技巧和標(biāo)準(zhǔn)之間的關(guān)系,對(duì)把握全局很有利益。
http://www-106.ibm.com/developerworks/wireless/,IBM developerworks的無(wú)線技巧專區(qū)。
http://alphaworks.ibm.com/wireless,大批的無(wú)線新技巧。
http://www-3.ibm.com/pvc/index.shtml,IBM的普及盤算。
資源收集網(wǎng)站:
Bill Day的J2ME資源,http://www.billday.com/j2me,非常全面,但是初接觸者看的話可能會(huì)感到重點(diǎn)不太突出。Bill Day是Sun在J2ME方面的資深專家,其文章很有價(jià)值。
http://www.jguru.com/faq/J2ME,他在jGuru主持的J2ME FAQ
http://forums.itworld.com,Community-> Java Forum-> Device Programming,他在ITworld主持的Device Programming論壇。
http://www.shiunkle.idv.tw/j2me/articles/index.htm,我國(guó)臺(tái)灣在PDA的應(yīng)用和J2ME的熟悉上都要比大陸超前一些,這里列出了臺(tái)灣方面幾乎所有重要的中文材料,對(duì)于我們很有贊助。其中王森的文章,以及臺(tái)灣IBM DeveloperWorks網(wǎng)站的MIDP專題都相當(dāng)不錯(cuò)。另外有幾位重要書籍的作者經(jīng)常在BBS linux.twbbs.org(telnet linux.twbbs.org)的J2ME版討論和答復(fù)標(biāo)題,是國(guó)內(nèi)J2ME方面討論比較深進(jìn)的處所。
http://www.midletcentral.com/,供給MIDP利用下載。
http://midlet.org/jsp/index.jsp,供給MIDP利用下載。
http://www.pdaordie.com/java_for_wince.asp,在Pocket PC上的Java開發(fā)。
一些重要的J2ME文章:developerWorks 中國(guó)網(wǎng)站的另外兩篇關(guān)于J2ME的文章
http://www-900.ibm.com/developerWorks/cn/java/wi-j2me/index.shtml,仔細(xì)研究 J2ME。
http://www-900.ibm.com/developerWorks/java/j-j2me/index.shtml,J2ME 走向成熟。
http://www.yesky.com/20011004/199789.shtml,Java嵌進(jìn)式開發(fā)系列一到六,比較全面。
相關(guān)書籍:
前面提到的Bill Day的J2ME資源中列出了重要的J2ME相干英文書籍。
前面提到的http://www.shiunkle.idv.tw/j2me/articles/index.htm中列出了臺(tái)灣出版的重要J2ME方面著作。
電力出版社引進(jìn)了其中兩本:
Palm 利用程序設(shè)計(jì)--應(yīng)用 Java 語(yǔ)言,朱仲杰著;中國(guó)電力出版社,2001.
深進(jìn)Palm利用程序設(shè)計(jì):應(yīng)用Java語(yǔ)言,朱仲杰著;中國(guó)電力出版社,2001.
關(guān)于作者
董向輝,中科院主動(dòng)化所人工智能實(shí)驗(yàn)室博士生。研究方向?yàn)檠葑儽P算和復(fù)雜性科學(xué)。