- J2ME應(yīng)用開發(fā)詳解
- 陸昌輝主編
- 142字
- 2019-01-01 07:06:59
第1章 引入J2ME平臺
本章將從定義J2ME開始講起,然后介紹它的總體架構(gòu)并學(xué)習(xí)J2ME目標(biāo)設(shè)備。作為架構(gòu)討論的一部分,將提供有關(guān)簡表和配置的概述(后面的小節(jié)中將詳細(xì)介紹簡表和配置)。同時會簡要介紹打包和配置J2ME應(yīng)用程序過程中的一些注意事項。
Sun Microsystems將J2ME定義為“一種以廣泛的消費性產(chǎn)品為目標(biāo)的高度優(yōu)化的Java運行時環(huán)境,包括尋呼機(jī)、移動電話、可視電話、數(shù)字機(jī)頂盒和汽車導(dǎo)航系統(tǒng)。”自從1999年6loper Conference上聲明之后,J2ME為小型設(shè)備帶來了Java語言的跨平臺功能,允許移動無線設(shè)備共享應(yīng)用程序。有了J2ME,Sun已經(jīng)使Java平臺能夠適應(yīng)集成了或基于小型計算設(shè)備并在JavaOne Deve的用戶產(chǎn)品。
Sun Nucrosystems已發(fā)布了幾個Java版本,且它們維護(hù)著不同版本的體系結(jié)構(gòu)的一致性。以系列方式發(fā)布的這些版本,由于每個版本都加入了一些新的功能,從而改進(jìn)了它們的能力。但在Java1.2版發(fā)行之后,在Java的打包和許可證發(fā)放的方式上有些改變。這導(dǎo)致了Java平臺被拆成三個版本。
即不同環(huán)境的三個Java平臺是:
(1)Java2標(biāo)準(zhǔn)版(J2SE)
(2)Java2企業(yè)版(J2EE)
(3)Java2微型版(J2ME)
J2SE是工具和API的收集,主要用于創(chuàng)建Java Applets和單獨的、基于Web的應(yīng)用。J2EE是對跨分布網(wǎng)絡(luò)和遠(yuǎn)程訪問的單個應(yīng)用的企業(yè)計算Java的回答。J2EE包含J2SE的所有功能,著重于用企業(yè)Java Beans(EJB),Servlets和Java服務(wù)器頁面(JSP),以及擴(kuò)展置標(biāo)語言(XML),進(jìn)行服務(wù)器端編程。
1.1 J2ME和WAP
開發(fā)無線應(yīng)用的一種方法是J2ME,它著重于無線計算環(huán)境,這是一個在不斷推進(jìn)的領(lǐng)域。無線計算的主要限制是對硬件設(shè)備資源的制約,諸如手機(jī),個人數(shù)字助手(PDA),及其他的電子和嵌入設(shè)備。Java2微型版(J2ME)是Sun公司的一種模塊化、定制的平臺,處理這些小到128 KB RAM的設(shè)備,且其處理器的能力低于臺式計算機(jī)的計算要求。
J2ME的多數(shù)特征是從J2SE派生出來的。J2ME的某些特征如下:
(1)可移植性。
(2)跨不同產(chǎn)品的內(nèi)在的一致性。
(3)跨網(wǎng)絡(luò)的安全性。
(4)與J2SE平臺和J2EE平臺的兼容性。
開發(fā)無線應(yīng)用的另一種方法是通過無線應(yīng)用協(xié)議(Wireless Application Protocol)(WAP)。WAP是適應(yīng)于由Web協(xié)議(諸如TCP/IP和UDP)使用的幾種數(shù)據(jù)處理技術(shù)的一種特例。WAP應(yīng)用開發(fā)比較簡單,因為它重用了現(xiàn)有的Web技術(shù)。WAP不是為使用HTML而設(shè)計的,盡管許多WAP網(wǎng)關(guān)可把HTML轉(zhuǎn)換為特定無線設(shè)備的數(shù)據(jù)。為生成動態(tài)的WAP內(nèi)容,可使用Servlets和Java Server Pages(JSP)或無線置標(biāo)語言(Wireless Markup Language)(WML)。盡管WAP和J2ME是互補(bǔ)的技術(shù),但它們以不同的方式進(jìn)行操作。對于WAP的情形,移動設(shè)備運行一個訪問Intranet或Internet應(yīng)用的瀏覽器。移動設(shè)備不包含任何其他的應(yīng)用。另一方面,J2ME應(yīng)用駐留在移動設(shè)備上,用戶可得到這些應(yīng)用,即使個別沒有連接到網(wǎng)絡(luò)上。
1.2 J2ME的體系結(jié)構(gòu)
J2ME使用配置和簡表定制Java運行時的環(huán)境(JRE)。作為一個完整的JRE,J2ME由配置和簡表組成,配置決定了使用的JVM,而簡表通過添加特定于域的類來定義應(yīng)用程序。配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設(shè)備上的特定JVM。本書將在J2ME配置一章中詳細(xì)討論配置。
簡表定義應(yīng)用程序;特定地,它向J2ME配置中添加特定于域的類,定義設(shè)備的某種作用。在本章1.6小節(jié)中將深入介紹簡表。下面的圖1-1描述了不同的虛擬機(jī)、配置和簡表之間的關(guān)系。它同時把J2SE API和它的Java虛擬機(jī)進(jìn)行了比較。雖然J2SE虛擬機(jī)通常被稱為一種JVM,但是J2ME虛擬機(jī)、KVM和CVM都是JVM的子集。KVM和CVM均可被看作是一種Java虛擬機(jī)——它們是J2SE JVM的壓縮版,并特定于J2ME。

圖1-1 不同的虛擬機(jī)、配置和簡表之間的關(guān)系
1.2.1 配置概述
配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設(shè)備上的特定JVM。雖然還可能在將來定義其他的配置,但當(dāng)前J2ME存在兩種配置。
(1)連接限制設(shè)備配置(CLDC)
特別與KVM一起用于內(nèi)存有限的16位或32位設(shè)備。這是用于開發(fā)小型J2ME應(yīng)用程序的配置(虛擬機(jī))。(從開發(fā)的角度來看)它的大小限制讓它比CDC更有趣、更具挑戰(zhàn)性。CLDC同時還是用于開發(fā)繪圖工具應(yīng)用程序的配置。Palm電腦便是一個運行小應(yīng)用程序的小型無線設(shè)備的示例。本書將在本章1.5小節(jié)中深入介紹CLDC。
(2)連接設(shè)備配置(CDC)
與C虛擬機(jī)(CVM)一起使用,用于要求內(nèi)存超過2 MB的32位體系結(jié)構(gòu)。因特網(wǎng)電視機(jī)頂盒便是這類設(shè)備的一個示例。稍后將在本章1.5.3小節(jié)中簡要介紹CDC。
1.2.2 簡表概述
簡表定義了用戶的應(yīng)用程序所支持的設(shè)備類型,它向J2ME配置添加了特定于域的類來定義設(shè)備的某種作用。簡表建立在配置的頂部。已經(jīng)為J2ME定義了兩種簡表:KJava和移動信息設(shè)備簡表(MIDP),它們也被建立在CDLC上。這兩種簡表適用于小型設(shè)備。有一種綱要簡表,用戶可以在它的上面創(chuàng)建自己的簡表,這種綱要簡表也稱為基礎(chǔ)表,可供CDC使用。我們將在后面的章節(jié)中討論上述這些簡表,還會使用KJava和MIDP建立一些示例應(yīng)用程序。
1.2.3 J2ME的目標(biāo)設(shè)備
使用CLDC開發(fā)的J2ME應(yīng)用程序的目標(biāo)設(shè)備通常具有以下特征:
(1)可供Java平臺使用的160 KB到512 KB的總內(nèi)存。
(2)功率有限,常常是電池供電。
(3)網(wǎng)絡(luò)連通性,常常是無線的、不一致的連接并且?guī)捰邢蕖?/p>
(4)用戶接口混亂,程度參差不齊;有時根本就沒有接口。
一些CLDC支持的設(shè)備,包括無線電話、尋呼機(jī)、主流個人數(shù)字助手(PDA),以及小型零售支付終端。
依照Sun Microsystems,CDC的目標(biāo)設(shè)備通常具有以下特征:
(1)使用32位處理器。
(2)2 MB或更多可供Java平臺使用的總內(nèi)存。
(3)設(shè)備要求的Java 2“藍(lán)皮書”虛擬機(jī)的全部功能。
(4)網(wǎng)絡(luò)連通性,常常是無線的、不一致的連接并且?guī)捰邢蕖?/p>
(5)用戶接口混亂,程度參差不齊;有時根本就沒有接口。
一些CDC支持的設(shè)備,包括常駐網(wǎng)關(guān)、智能電話和通訊器、PDA、管理器、家用電器、銷售網(wǎng)點終端以及汽車導(dǎo)航系統(tǒng)。
1.3 開發(fā)J2ME程序注意事項介紹
在本節(jié)中,首先介紹在為小型設(shè)備開發(fā)應(yīng)用程序時需要牢記的一些注意事項,然后介紹在使用J2SE編譯J2ME應(yīng)用程序時調(diào)用編譯器的方法,最后將探究打包和部署,以及在這個過程中提前驗證所扮演的角色。
1.3.1 設(shè)計開發(fā)小型設(shè)備應(yīng)用程序要注意的事項
為小型設(shè)備開發(fā)應(yīng)用程序,需要用戶在設(shè)計階段制定某種策略。最好是在開始編寫代碼之前,戰(zhàn)略性地為小型設(shè)備設(shè)計應(yīng)用程序。由于無法考慮到所有的“gotchas”,在開發(fā)應(yīng)用程序之前更正代碼是一件很痛苦的工作。下面是一些可以考慮的設(shè)計策略:
(1)保持程序簡單。除去不必要的功能,如果可能的話,將它們做成獨立的、次要的應(yīng)用程序。
(2)程序越小越好。這一點對所有的開發(fā)者來說應(yīng)該是顯而易見的。越小的程序占用的設(shè)備內(nèi)存越少,并且花費的安裝時間越少。可考慮將用戶的Java應(yīng)用程序打包,作為壓縮的Java檔案(jar)文件。
(3)運行時占用最少的內(nèi)存。為盡可能減少運行時占用的內(nèi)存,使用標(biāo)量類型代替對象類型。同時,不依賴?yán)占绦颉S脩魬?yīng)該在使用完對象時將對象引用置空,這樣可有效管理內(nèi)存。另外一種減少運行時所需內(nèi)存的方法是使用“惰性”實例,它僅在必需時才分配對象。其他一些減少小型設(shè)備上過量和峰值內(nèi)存使用的方法有快速釋放資源、重新使用對象以及避免異常。
1.3.2 設(shè)計開發(fā)移動設(shè)備應(yīng)用程序的注意事項
開發(fā)移動設(shè)備應(yīng)用程序的規(guī)則與前面提及的開發(fā)小型設(shè)備的相同:先設(shè)計再編碼。讓用戶檢查一下開發(fā)移動設(shè)備應(yīng)用程序時可考慮的一些設(shè)計建議:
(1)讓服務(wù)器做大部分的工作。將計算性較強(qiáng)的任務(wù)放到服務(wù)器上,讓服務(wù)器為用戶做這些工作。讓移動設(shè)備處理界面和最少的計算工作,而讓服務(wù)器做繁重的工作。當(dāng)然,用戶為其開發(fā)應(yīng)用程序的移動設(shè)備對設(shè)備連接到服務(wù)器上的難易程度和頻率有重要影響。
(2)謹(jǐn)慎地選擇編程語言。J2ME仍然處于成長期,可能還不是最好的選擇。根據(jù)用戶的需要,選擇其他的面向?qū)ο笳Z言,如C++,可能會更好。
1.3.3 性能注意事項
為性能而編碼。下面介紹一些以獲得最優(yōu)性能為目標(biāo)的編碼方法:
(1)使用局部變量。訪問局部變量比訪問類成員更快。
(2)避免字符串串聯(lián)。字符串串聯(lián)不僅會降低性能,而且會增加應(yīng)用程序的內(nèi)存峰值占用量。
(3)使用線程,避免同步。任何運行時間超過1/10 s的操作都需要一個獨立的線程。避免同步同樣能提高性能。
(4)使用模型視圖控制器(MVC)分離模型。MVC將代碼中控制顯示的邏輯分離出來。
1.3.4 編譯注意事項
同其他的Java應(yīng)用程序一樣,用戶在打包和部署應(yīng)用程序之前要先進(jìn)行編譯。盡管有了J2ME,用戶仍然使用J2SE編譯器并且需要用適當(dāng)?shù)倪x項來進(jìn)行調(diào)用。用戶需要使用-bootclasspath選項來指示編譯器使用J2ME類,而不是J2SE類。不要在編譯器的CLASSPATH中設(shè)置配置類。這樣將導(dǎo)致運行時錯誤,因為不管CLASSPATH中有什么,編譯器將首先自動搜索J2SE的核心類。換句話說,編譯器將無法引用特定J2ME配置中缺少的類或方法,結(jié)果導(dǎo)致在嘗試運行應(yīng)用程序時出現(xiàn)運行錯誤,如圖1-2所示。

圖1-2 編譯錯誤
1.3.5 打包和部署注意事項
由于J2ME是為內(nèi)存有限的小型設(shè)備設(shè)計的。大部分常用的Java提前驗證已經(jīng)從虛擬機(jī)中除去,以形成一個較小的覆蓋區(qū)域。結(jié)果,在配置之前提前驗證J2ME應(yīng)用程序就很有必要。在運行時會附加一個檢查以確保這個類在提前驗證之后還沒有改變過。
如何嚴(yán)格執(zhí)行提前驗證或者檢查類的正確性依靠的是工具包。CLDC提供一個稱為提前驗證的命令行實用程序,它能夠進(jìn)行實際的驗證并且可以把一些額外的信息插入到類文件中去。MIDP使用無線工具包,這種工具包提供一種GUI工具,也可從命令行運行這種工具。
部署工作取決于用戶要部署的平臺。應(yīng)用程序必須以一種適合J2ME設(shè)備類型的格式進(jìn)行打包和配置,就如簡表定義的那樣。
1.4 無線編程的新趨勢
世界逐漸地從有線網(wǎng)時代轉(zhuǎn)向無線網(wǎng)時代。用戶將不斷地看到連接無線網(wǎng)的小型設(shè)備彼此通信,類似于通過PC用有線網(wǎng)的方式進(jìn)行。這些設(shè)備包括手機(jī)、手持計算機(jī)、傳呼機(jī)、掌上OS(Palm OS)設(shè)備。所有這些設(shè)備將使用如J2ME這樣的平臺來運行專門為這些手持設(shè)備開發(fā)的不同應(yīng)用軟件。
1.4.1 J2ME使能設(shè)備
J2ME正成為創(chuàng)建移動設(shè)備、消費電子產(chǎn)品,以及嵌入式設(shè)備的新應(yīng)用的最合適的平臺。J2ME體系結(jié)構(gòu)由支持各式各樣設(shè)備的不同的配置類型、特征和規(guī)格說明組成。CDC配置支持CVM,它是為消費電子產(chǎn)品及嵌入式設(shè)備定制的JVM。這些設(shè)備有相當(dāng)于手持設(shè)備那樣較好的硬件資源。其基本特征由Java API組成。這種特征是CDC配置的組成部分,其組合將成為構(gòu)建未來消費電子產(chǎn)品及嵌入式設(shè)備的技術(shù)。
MIDP是一組Java API。其特征是CLDC配置的組成部分,以創(chuàng)建客戶化的手持設(shè)備的應(yīng)用。使用J2ME技術(shù)的不同設(shè)備可廣義地分兩種類型:手持設(shè)備和消費電子產(chǎn)品及嵌入式設(shè)備。手持設(shè)備利用CLDC配置運行Java應(yīng)用。反之,消費電子產(chǎn)品及嵌入式設(shè)備利用CDC配置運行Java應(yīng)用。
手持設(shè)備有較少的內(nèi)存資源、較低的處理器速度和不規(guī)則的網(wǎng)絡(luò)連接。這種設(shè)備的例子包括個人數(shù)字助理(PDAs),蜂窩電話、基于Palm OS的設(shè)備和形成體(organizers)。
另一方面,消費電子產(chǎn)品及嵌入式設(shè)備有大量的內(nèi)存、高的處理器速度、且總是與網(wǎng)絡(luò)連接。這種設(shè)備的例子包括機(jī)頂盒、Internet TV、屏幕電話和高端通信裝置。
提示
手持設(shè)備上可用的內(nèi)存一般范圍為32 KB到512 KB,常用的消費電子產(chǎn)品及嵌入式設(shè)備的內(nèi)存能力在1 MB到10 MB之間。
1.4.2 J2ME使能設(shè)備的優(yōu)點
使用J2ME技術(shù),服務(wù)提供者可基于每種客戶設(shè)備的資源說明提供獨特的、特定于客戶的應(yīng)用。J2ME應(yīng)用可部署在各種各樣資源約束的設(shè)備上。只要設(shè)備是依從J2ME的,這可用于任何網(wǎng)絡(luò)和任何的平臺。J2ME對最終用戶也是有好處的。最終用戶可基于他們的需要直接下載應(yīng)用和產(chǎn)品到他們的移動設(shè)備上。因此,用戶可不必為手機(jī)和其他的手持設(shè)備購買預(yù)先安裝在設(shè)備上的應(yīng)用和產(chǎn)品。
提示
移動設(shè)備部門的主要機(jī)構(gòu),如NTT DoCoMo、Inc.、LG Telecom和Nextel,已經(jīng)共同在3百萬以上的無線手持設(shè)備上部署了J2ME技術(shù)。移動設(shè)備制造商,如Nokia、Motorola、Siemens、NEC、Sony、Samsung以及LG Electronics,已經(jīng)開始將運輸設(shè)備和Java技術(shù)集成起來。
當(dāng)前,用J2ME創(chuàng)建的幾種移動設(shè)備應(yīng)用正廣泛地用在無線設(shè)備上。這些移動設(shè)備應(yīng)用的例子如下。
● 我的航行:客戶可以檢查個人的航行材料。例如,累計飛行距離及費用償還圖,客戶可核對飛行材料和選擇用E-mail通報飛行材料。
● 我的天氣:向客戶提供有音樂背景的每天的天氣預(yù)報。此外,在下雨天時得到報警。
● 我的名人:可讓客戶觀看流行的名人網(wǎng)站中的消息。
1.4.3 服務(wù)器應(yīng)用和應(yīng)用門戶
J2ME的主要著眼點是在小而資源有限的設(shè)備上提供最終用戶的應(yīng)用,J2ME還包括其他兩種類型的應(yīng)用——服務(wù)器應(yīng)用和應(yīng)用門戶。
1. 服務(wù)器應(yīng)用
設(shè)計J2ME服務(wù)器應(yīng)用以幫助服務(wù)提供者提交更好的最終用戶應(yīng)用。服務(wù)器應(yīng)用在Web服務(wù)器上運行,且易于在用戶設(shè)備上部署MIDlets。
提示
也可在非Java平臺上創(chuàng)建服務(wù)器應(yīng)用。
服務(wù)器應(yīng)用的典型例子是包括:
● AppStream
● 4thpass Mobile Application Server(MAS)
AppStream是一種流應(yīng)用(application streaming)使能的服務(wù)器應(yīng)用,它類似于流媒體(media streaming)。一般情況下,用戶下載文件時,在文件完全下載好之前不可能打開文件和運行它。但流媒體的情況下,用戶不必完全下載好音頻或視頻文件就可播放它,甚至在下載時就可開始播放文件。類似地,用流應(yīng)用還可在下載時就可運行應(yīng)用。這對于由慢速網(wǎng)絡(luò)下載應(yīng)用到內(nèi)存和速度有限的設(shè)備上的用戶來說特別有意義。稱為AppStream的公司提供了這種應(yīng)用。
4thpass Mobile Application Server(MAS)是一種服務(wù)器應(yīng)用,它有助于減少在速度較慢的無線網(wǎng)絡(luò)上下載的時間。稱為4thpass的公司開發(fā)了這種應(yīng)用。
2. 應(yīng)用門戶
J2ME應(yīng)用門戶是致力于以MIDlets的形式提供最終用戶應(yīng)用的Web站點。這些MIDlets按他們的應(yīng)用定價。某些MIDlets在Web上是免費的。應(yīng)用門戶能使移動設(shè)備用戶直接下載MIDlets到他們的設(shè)備上,減少用戶對提供這些應(yīng)用的服務(wù)提供者的依賴。這些門戶也有助于軟件廠商把他們的產(chǎn)品(MIDlets)直接銷售給用戶。
創(chuàng)建MIDlets的任何人可在應(yīng)用門戶上張貼它。用戶可從這些門戶中把這些MIDlets下載到他們的移動設(shè)備。Sun的官方網(wǎng)站(http://java.sun.com)提供了與能下載MIDlets的某些門戶的鏈接。
提示
讀者可通過http://midlet.org訪問midlet.org,通過http://jars.com訪問jars.com。
1.4.4 J2ME與其他Java技術(shù)的匯集
J2ME之前,Sun公司引入過一些技術(shù),尤其是對于小型的手持設(shè)備。由于J2ME的到來自然地期望Sun能把這些技術(shù)與J2ME匯集起來以拓寬J2ME可提供的應(yīng)用范圍。
J2ME開始之前,Sun已經(jīng)引入了稱為個人Java的技術(shù)(PersonalJava)。在普通家用電子裝置上使用PersonalJava能使它們的功能自動化。假定J2ME是PersonalJava自然的后繼者。但PersonalJava仍然在不適用于兩類J2ME配置(CDC and CLDC)的小裝置上使用。這些小裝置需要它們自己的特征。Sun現(xiàn)在決定把這些設(shè)備包括在受CDC配置影響的基礎(chǔ)特征(Foundation profile)中。Sun通過使PersonalJava與J2ME的集成來替代PersonalJava。
Sun開發(fā)的JINI作為不同平臺下的不同網(wǎng)絡(luò)和作業(yè)的集成系統(tǒng)的一種中間解決方案。在JINI的幫助下,任何類型的設(shè)備(如打印機(jī)、揚(yáng)聲器、存儲設(shè)備等)可插入到網(wǎng)絡(luò)。用戶可立即看到網(wǎng)絡(luò)中設(shè)備并使用它。新插入到網(wǎng)絡(luò)的設(shè)備將在網(wǎng)絡(luò)設(shè)備注冊表中定義它自身。
提示
JINI替代了使用稱為Device Drivers的軟件,使用它可把關(guān)于網(wǎng)上新加入的硬件通知操作系統(tǒng)。
使用JINI時,操作系統(tǒng)用網(wǎng)絡(luò)設(shè)備注冊表跟蹤新加入的硬件。目前,設(shè)計的JINI僅在J2SE和J2EE平臺下工作。JINI對于解決與嵌入系統(tǒng)的連接問題十分有效。因此,JINI也十分適宜在J2ME平臺下工作。
Web服務(wù)能使組織獨立于基礎(chǔ)網(wǎng)絡(luò)和任何一端上的平臺訪問Internet上的服務(wù)和應(yīng)用。用數(shù)據(jù)格式和諸如XML和簡單對象訪問協(xié)議(SOAP)這樣的協(xié)議創(chuàng)建這些Web服務(wù)。通過J2ME、J2EE和XML的集成,它可在J2ME依從的移動設(shè)備上訪問存儲在J2EE應(yīng)用服務(wù)器中的Web服務(wù)。
1.4.5 Java卡和J2ME靈巧卡的演化
靈巧卡在物理外形上類似于信用卡。但靈巧卡包含一個小的計算機(jī)芯片,與信用卡相比它們是動態(tài)的。靈巧卡可具有相當(dāng)于電子現(xiàn)金的功能。電子現(xiàn)金允許用戶支付交易的現(xiàn)金而不必通過銀行賬戶。
Java卡是能夠執(zhí)行Java程序的靈巧卡。它們主要用于處理數(shù)據(jù)的訂戶標(biāo)識模塊(SIM)卡。這是通過連接卡到手機(jī)來做。Java卡類似于信用卡,但可發(fā)送、接收和處理數(shù)據(jù)。這是通過卡片讀入機(jī)將Java卡連接到計算機(jī)上來做的。
Java Card相對原先的靈巧卡來說有以下優(yōu)點:
● 可互操作性
● 安全性
● 能運行多種應(yīng)用
● 靈活性
Java卡提供了可互操作性,因為用Java技術(shù)開發(fā)的任何Java Applet將在Java卡中起作用,不管其基礎(chǔ)硬件是什么。此外,Java卡具有與Java編程語言那樣的安全和靈活性。Java卡能提供多種應(yīng)用,因為它包含若干個Applets,每個Applets提供了不同的應(yīng)用。Java卡又是動態(tài)的,因為服務(wù)提供者能按照用戶的需要加入和除去Java卡提供的應(yīng)用。
靈巧卡與SIM卡一樣主要在手機(jī)中使用。以前,手機(jī)主要用于聲音傳遞。但隨著Java卡的到來,服務(wù)提供者現(xiàn)在能提供各種各樣的新服務(wù),諸如:網(wǎng)上銀行、通過電子商務(wù)的貿(mào)易和訪問Web站點,把手機(jī)信息轉(zhuǎn)到PC機(jī)上。
提示
Java卡應(yīng)用的一個典型例子是美國國防部提供的公共訪問卡(Common Access Card)。此卡可以使軍事人員和其他授權(quán)的用戶訪問軍用設(shè)施和其他敏感的資源。
Sun沒有提出在Java卡上實現(xiàn)J2ME技術(shù)的任何計劃。但J2ME提供了創(chuàng)建Java卡應(yīng)用的理想平臺。目前,Java卡用Java卡虛擬機(jī)(JCVM)執(zhí)行程序。如果J2ME能進(jìn)入這種想象的話,那么這個卡將必須適應(yīng)KVM執(zhí)行J2ME MIDlets。但如果KVM不能在Java卡環(huán)境中運行的話,Sun將可能必須創(chuàng)建CLDC配置下的Java卡的新特征。
1.4.6 J2ME在GADGET編程中的作用
Sun開發(fā)Java的目的是在家用電器中使用Java,以使這些設(shè)備更靈巧和更有交互性。用J2ME和小裝置編程的概念,使Sun在實現(xiàn)這個目標(biāo)上更接近了。
使用JVM的嵌入式公共電子小裝置使這些小裝置能執(zhí)行Java程序。這是所謂的小裝置編程(gadget programming)。小裝置編程使用戶能從單個測點控制不同的小裝置,提供遠(yuǎn)程控制這些小裝置的機(jī)制。小裝置編程也使這些設(shè)備可交互和自動化。這些小裝置編程可對來自計算機(jī)的指令做出應(yīng)答。例如,有些烘箱能直接接收來自TV的烹調(diào)指令而不要用戶干預(yù)。這是直接的小裝置到小裝置的交互。類似地,可為基于用戶的需要為其他的器具(如空調(diào)、音頻和視頻系統(tǒng)、洗衣機(jī)、真空洗塵器、電冰箱等)構(gòu)建應(yīng)用。所有這些小裝置可連接到中央服務(wù)器。這種服務(wù)器將包含Java程序,控制這些小裝置的操作,使它們高度自動化和可交互,從而創(chuàng)建“靈巧家用設(shè)備(smart home)”。靈巧家用設(shè)備的主要特點是可連接到外部網(wǎng)絡(luò)(如Internet),和從遠(yuǎn)程站點控制它們。現(xiàn)在,還沒有使用J2ME技術(shù)的嵌入式小裝置。但J2ME已經(jīng)證明了它在小型無線設(shè)備中價值。因此,可以預(yù)期它將成為未來小裝置編程的主流技術(shù)。
提示
Consumer Electronic Show 2000陳列了用Java技術(shù)創(chuàng)建的靈巧家用設(shè)備。Sun稱它為.com Home。.com Home由一些小裝置組成。例如,配有Web面板的冰箱以瀏覽網(wǎng)絡(luò),可編程的洗滌器在出現(xiàn)故障事件時可自動地通知制造廠商。這種靈巧家用設(shè)備也能使咖啡壺可自動地通過Internet更新其功能。
小裝置編程的另一個例子是建立自動汽油泵中使用J2ME技術(shù)。未來的汽油泵將與賬戶系統(tǒng)結(jié)合起來,這樣人們就不需要管理它們。汽油泵也將提供達(dá)到不同目的地的道路圖。假如汽油泵配有Java驅(qū)動的系統(tǒng),它也有可能直接和汽車交互,然后對汽車中可能的缺陷向用戶提出警告,并提醒用戶維修細(xì)節(jié)。也可能在Java卡中存儲這種維修細(xì)節(jié)。這將保證:當(dāng)用戶要支付而猛打卡時,該汽油泵回自動地告訴用戶關(guān)于需要注意的問題。
提示
GM、Ford、BMW和Fiat等汽車制造商已經(jīng)構(gòu)造了Java驅(qū)動系統(tǒng)的車輛原型,他們提出這種車輛的行駛版本僅僅是時間問題。
1.4.7 用J2ME的娛樂軟件編程
軟件市場中視頻娛樂業(yè)是爭錢最多的產(chǎn)業(yè)之一。現(xiàn)在市場的主要游戲者已認(rèn)識到這個等待開拓的巨大的、未觸及的市場,并已逐漸把注意力轉(zhuǎn)向生產(chǎn)移動設(shè)備的娛樂軟件。軟件廠商和移動設(shè)備制造商正在聯(lián)手提供移動設(shè)備的娛樂軟件。
提示
這種聯(lián)手的例子包括娛樂廠商THQ Inc和移動設(shè)備制造商Sony Ericsson之間的聯(lián)合,另一個例子是娛樂廠商Sega和移動設(shè)備制造商Motorola之間的聯(lián)合。按照這種聯(lián)合,娛樂廠商將創(chuàng)建只能在他們聯(lián)合方制造的移動設(shè)備上運行的娛樂程序。
目前,世界上有6億以上的手機(jī)用戶,而且用戶的數(shù)目正以指數(shù)速度增長。這就導(dǎo)致了開發(fā)專為手機(jī)而設(shè)計的全新的娛樂。盡管在100 ×100 像素屏幕上提供圖形豐富的娛樂是不容易的,但手機(jī)娛樂相比桌面視頻娛樂有它的優(yōu)點。它們是可攜帶的,因此只要用戶帶上移動設(shè)備,就可在任何地方播放。預(yù)期J2ME是移動設(shè)備娛樂軟件的核心。用J2ME開發(fā)移動設(shè)備的娛樂是簡單而容易的。這些娛樂增加了設(shè)備的價值和制造商的吸引力。創(chuàng)建計算機(jī)和控制臺的視頻娛樂涉及到藝術(shù)家和編程員,要花費大量的人力,這會引起巨大的開銷。而另一方面,J2ME提供了不可思議的創(chuàng)建娛樂的容易環(huán)境。幾種商標(biāo)的J2ME使能的電話包含這樣的API,可讓用戶訪問通常手機(jī)不能提供的特殊功能。包含這種API手機(jī)的例子包括Motorola和Nokia制造的手機(jī)。這些制造商已創(chuàng)建了可在娛樂中有音頻、動畫、及更好圖形的娛樂API。使用J2ME平臺的另一個主要優(yōu)點是在其他平臺上運行的現(xiàn)有的娛樂可容易地移植到這個平臺。
當(dāng)前,J2ME有兩種規(guī)格說明用于娛樂編程和多媒體應(yīng)用:
● Gaming API
● Mobile Media API
Gaming API規(guī)格說明是用于建立使用CDC配置設(shè)備的娛樂。用Mobile Media API訪問多媒體內(nèi)容。
Sun當(dāng)前正在從事新的API,移動3D圖形(Mobile 3D Graphics)API,將它包含在CLDC配置中。這種API將在MIDP中提供選項包,將極大地改善3D外觀、圖形、J2ME中娛樂的活躍特征。通過使用這種API,開發(fā)者將能為移動設(shè)備創(chuàng)建圖形豐富的娛樂。此外,這種API也將使應(yīng)用開發(fā)者創(chuàng)建栩栩如生的消息和類似于桌面工作站中的屏幕保護(hù)程序。
Mobile 3D Graphics API具有以下特點:
● 有助于創(chuàng)建各種移動應(yīng)用的3D圖像。
● 占有最少的設(shè)備資源,因此可在任何手持設(shè)備中使用。
● 用這種API創(chuàng)建的任何3D應(yīng)用,不管簡單的或高級的,都可在移動設(shè)備上運行。
提示
Sun的J2ME Wireless Toolkit帶有娛樂的源代碼。例如,TilePuzzle、WormGame、PushPuzzle、Snake、Sokoban、Pong、Star Cruiser,以及Tile Sliding游戲。
Sun也正在開發(fā)新的虛擬機(jī),它可大大地改進(jìn)現(xiàn)在用的KVM的性能。這個新的虛擬機(jī)將使3D圖形應(yīng)用和運行在移動設(shè)備上的其他的復(fù)雜應(yīng)用大大地前進(jìn)一步,且消耗更少的內(nèi)存和電池能量。
1.4.8 J2ME與多媒體的匯集
多媒體內(nèi)容(如音頻和視頻文件)即使是壓縮的形式也要消耗大量的內(nèi)存。因此,對于內(nèi)存能力差和低的處理器速度為特征的J2ME設(shè)備來說,把它與多媒體鏈接起來是很不合理的。但事實上服務(wù)提供者正在選擇可能的J2ME通過手機(jī)提交多媒體內(nèi)容。
● 移動設(shè)備的視頻:PacketVideo的公司開發(fā)的一個軟件,允許在無線網(wǎng)絡(luò)上傳輸視頻流。移動服務(wù)提供者使用這個軟件把新聞剪輯和影片預(yù)告?zhèn)鬏數(shù)绞謾C(jī)。正在構(gòu)建的稱為PacketVideo的軟件使用了視頻的MPEG-4標(biāo)準(zhǔn),并使用J2ME平臺。
● 移動設(shè)備的音頻:音頻文件以MP3格式被數(shù)字化地存儲以使內(nèi)存的需求最少。MP3格式與J2ME技術(shù)一起可把這種文件傳輸?shù)揭苿釉O(shè)備,現(xiàn)在,用戶可把音頻內(nèi)容下載到諸如:MP3播放機(jī)、手機(jī),以及傳呼機(jī)之類手持設(shè)備上,在無線網(wǎng)絡(luò)上提供這種功能的前沿廠商是稱為Sensate的公司。Sensate已開發(fā)了稱為AoIP Wireless Media Server的應(yīng)用,可使用戶下載音頻內(nèi)容到手持設(shè)備上。此應(yīng)用需要每個用戶建立與客戶的連接以下載音頻文件,采用J2ME技術(shù)開發(fā)。
1.5 J2ME配置
正如前面所介紹的,配置將基本運行時環(huán)境定義為一套核心類和一個運行在特定類型設(shè)備上的特定的JVM。讀者也可以學(xué)到J2ME的兩種配置類型是CLDC和CDC。
Sun提供的J2ME配置是適合不同層次的市場需求的,CLDC適合于小型設(shè)備,而CDC適合于大型設(shè)備。J2ME環(huán)境可以被動態(tài)地配置為提供運行應(yīng)用程序所需要的環(huán)境,而不用考慮是否為設(shè)備提供了運行該應(yīng)用程序所需的所有Java技術(shù)庫。核心平臺接收應(yīng)用程序代碼和庫。運行在網(wǎng)絡(luò)上的服務(wù)器軟件執(zhí)行配置工作。CDC主要用于具有網(wǎng)絡(luò)連接性的高端消費者設(shè)備。這些設(shè)備包括機(jī)頂盒、Internet TV,以及汽車導(dǎo)航系統(tǒng)。
提示
機(jī)頂盒是一種能使電視機(jī)作為與Internet用戶接口的設(shè)備,也能檢索數(shù)字電視(DTV)廣播。
CDC支持以下的Java包如表1-1所示。
表1-1 CDC支持的Java包

注意
J2ME應(yīng)用不可訪問定制包。
CLDC是處理能力比高檔消費者設(shè)備低的設(shè)備。使用CLDC的某些常用設(shè)備是手機(jī)、私人記事器(personal organizers)和傳呼機(jī)。
下面將介紹有關(guān)CLDC和CDC的更多知識以及與它們關(guān)聯(lián)的簡表。
1.5.1 連接限制設(shè)備配置(CLDC)
CLDC是由Java Community Process創(chuàng)建的。正如Sun Microsystems的Web站點所定義的那樣,它的標(biāo)準(zhǔn)是:“輕便、覆蓋區(qū)域最小的Java構(gòu)建塊,適合小型的、有資源限制的設(shè)備”。
J2ME CLDC配置是為將在業(yè)界定義的簡表中使用的一個虛擬機(jī)和一套核心庫準(zhǔn)備的。正如前面提及的,一個簡表通過在基本J2ME配置頂部提供特定于域的類來為特定的設(shè)備定義應(yīng)用程序。K虛擬機(jī)(KVM)、虛擬機(jī)的CLDC的參考執(zhí)行和它的KJava簡表運行在CLDC的頂部。
CLDC簡要描述了高度限制設(shè)備上每個J2ME執(zhí)行所要求的一套最基本的庫和Java虛擬機(jī)特征。CLDC主要面向那些網(wǎng)絡(luò)連接速度慢、能源有限(經(jīng)常是電池供電)、具有大于等于128 KB的穩(wěn)定內(nèi)存,以及大于等于32 KB的不穩(wěn)定內(nèi)存的設(shè)備。不穩(wěn)定內(nèi)存是不持久的并且沒有寫保護(hù),這意味著如果關(guān)掉設(shè)備,內(nèi)存中的內(nèi)容將全部丟失。而穩(wěn)定內(nèi)存中的內(nèi)容是持久的,并且有寫保護(hù)。CLDC設(shè)備使用穩(wěn)定內(nèi)存來存儲運行時的庫和KVM,或存儲為某個特殊設(shè)備創(chuàng)建的另一個虛擬機(jī)。不穩(wěn)定內(nèi)存被用來分配運行時的內(nèi)存。
J2SE API不適用于手持設(shè)備,因為它們需要大量的內(nèi)存。因此,CLDC庫API中不包括所有的J2SE API。不同種類的CLDE庫API如下:
CLDE庫包含J2SE API的子集類。這些J2SE-特定的類設(shè)置在java.lang、java.io和java.util包中。表1-2列出了一些從這些包中繼承過來的類。
表1-2 從J2SE包中繼承的類

CLDC庫包含CLDC特定的幾個新的接口和類,它們構(gòu)成了javax.microedition.io包的一部分,J2ME中用它支持CLDC的連網(wǎng)能力。表1-3列出了這些類。
表1-3 javax.microedition.io包的一部分類

J2ME中核心API包括來自諸如java.lang和java.util之類包的一些類。所有這些API被不同的配置使用,因此,這些API應(yīng)得到包括KVM在內(nèi)的所有虛擬機(jī)的支持。表1-4列出J2ME中使用的核心API可用的不同類。
表1-4 java.lang和java.util之類包的一些類

提示
在某些情況下,如J2ME中那樣使用J2SE包,例如,java.util和java.io包。但由于資源的制約,只是某些J2SE包的一個子集,如java.lang所使用的那樣。其中有些包,如微編輯包,則是為J2ME全部重寫過的。
1.5.2 CLDC要求
CLDC定義了下列要求:
● 完整的Java語言支持(除浮點支持、最終定案和錯誤處理之外)。
● 完整的JVM支持。
● CLDC的安全性。
● 有限國際化的支持。
● 繼承類:所有不針對CLDC的類都必須是J2SE 1.3類的子類。
● 針對CLDC的類都在名為javax.microedition的軟件包和它的子包中。
除javax.microedition軟件包以外,CLDC API還由J2SE的子集java.io、java.lang以及java.util等軟件包組成。
1.5.3 CLDC與CDC的比較
圖1-3描述了CDC和CLDC之間的關(guān)系,同時也揭示了它們與整個J2SE API系統(tǒng)的關(guān)系。正如前面所說,CDC是加上一些額外類的J2SE的子集,讀者也可以看到CLDC是CDC的子集。

圖1-3 CLDC與CDC的比較
1.6 J2ME簡表
一個簡表定義了受支持設(shè)備的類型。例如,移動信息設(shè)備簡表(MIDP),定義了蜂窩電話的類。它把一些特定于域的類加入J2ME配置中來定義對類似設(shè)備的使用。已經(jīng)為J2ME定義了兩個簡表:KJava和MIDP。它們都構(gòu)建在CLDC之上。KJava和MIDP都和CLDC及小型設(shè)備相關(guān)聯(lián)。
簡表被構(gòu)建在配置的頂部。由于簡表是特定于運行應(yīng)用程序的設(shè)備的大小(內(nèi)存的數(shù)量),所以,某個簡表是與某種特定的配置相關(guān)聯(lián)的。
在綱要簡表上,用戶可以創(chuàng)建自己的簡表,這種綱要簡表也稱為基礎(chǔ)表,它對于CDC也是可用的。然而,在本書中,將只介紹建立在CLDC上的KJava和MIDP簡表。
1.6.1 KJava簡表
KJava是歸Sun公司所有的簡表,它包含KJava API。KJava簡表建立在CLDC配置的頂部。KJava虛擬機(jī)可以像標(biāo)準(zhǔn)的J2SE虛擬機(jī)那樣接受相同的字節(jié)代碼和類文件格式。
KJava包含一個特定于Sun的、運行在Palm操作系統(tǒng)上的API。這個KJava API和J2SE抽象視窗工具包(AWT)有很多地方都是相同的。然而,由于它不是一個標(biāo)準(zhǔn)的J2ME軟件包,它的主軟件包是com.sun.kjava。在第10 章中開發(fā)一些示例應(yīng)用程序時會介紹更多關(guān)于KJava API的知識。
1.6.2 MIDP簡表
MIDP適合諸如蜂窩電話和尋呼機(jī)等移動設(shè)備。MIDP和KJava一樣,也是建立在CLDC之上的,并且提供一個標(biāo)準(zhǔn)的運行時環(huán)境,允許在終端用戶設(shè)備上動態(tài)地部署新的應(yīng)用程序和服務(wù)。
MIDP是一個公共的、為移動設(shè)備設(shè)計的工業(yè)標(biāo)準(zhǔn)簡表,它不依賴某個特定的商家。對于移動應(yīng)用程序開發(fā)來說,它是一個完整的、受支持的基礎(chǔ)。
MIDP包含一些附加的庫,它們?yōu)榕c用戶界面和數(shù)據(jù)庫的交互提供了Java API。此外,這些Java API提出了諸如應(yīng)用生命周期和特定設(shè)備聯(lián)網(wǎng)之類的問題。用戶可用MIDP下的API來創(chuàng)建各種不同的應(yīng)用,如消費者應(yīng)用和游戲軟件等。MIDP應(yīng)用稱為MIDlets,表1-5中描述了不同的MIDP包。
表1-5 MIDP包的部分類

注意
屬于移動信息設(shè)備分類的PDA特征,仍處于它的構(gòu)造階段。
在移動信息設(shè)備(如手機(jī)和傳呼機(jī))中使用的MIDP有以下特點:
● 屏幕的最低大小為96 ×54像素
● 1位顯示深度
● 輸入設(shè)備,如:鍵盤或觸屏
● 關(guān)于MIDP部件,最少128 KB非易失內(nèi)存
● 雙向無限可連接性
此外,MIDP在低端處理器上運行,創(chuàng)建最少的無用信息。在J2ME中,CLDC與MIDP結(jié)合形成了綜合的運行時環(huán)境。系統(tǒng)級服務(wù)的接口是由其配置,CLDC提供,而應(yīng)用級服務(wù)的接口是由特征MIDP提供。
注釋
用戶可控制顯示的像素,用“位”來指出顏色或灰度級。1位顯示移位:1個像素使用1位。
1.6.3 MIDP取代KJava
正如在前面的1.6.1小節(jié)中提及的,KJava是Sun公司所擁有的一個API。它不作為一種完整的、功能齊全的簡表,而是作為一種示范,示范簡表如何與CLDC一起工作。根據(jù)CLDC發(fā)行說明(其中包含CLDC下載版本)。
在軟件包com.sun.kjava中提供的GUI類不是連接限制設(shè)備配置CLDC的一部分。Java 2平臺袖珍版的正式GUI類,將通過Java Community Process分別定義并被包含進(jìn)J2ME簡表中。
不管這個事實存在與否,KJava簡表已經(jīng)被早期的采用者廣泛使用了。在2001年JavaOne的開發(fā)商會議上,Sun公司宣稱早期Palm操作系統(tǒng)的MIDP可用性(MID簡表的最初發(fā)行版焦點主要集中在無線電話上)。Palm操作系統(tǒng)MIDP的規(guī)格是由Java Community Process(JCP)定義的。因此,它是獨立于供應(yīng)商的。當(dāng)前眾多限制中的一個——它將隨時間消失——就是Palm操作系統(tǒng)的MIDP需要最新的Palm操作系統(tǒng)——V3.5。
在作者寫這本書的同時,Palm操作系統(tǒng)的MIDP的規(guī)范仍然在隨著JCP不斷發(fā)展,其細(xì)節(jié)也會隨時改變。盡管目前還無法確定其發(fā)行日期,但是規(guī)范一旦出臺,將必然減少對KJava的需求。
1.7 J2ME無線工具箱
J2EE和J2SE平臺用于創(chuàng)建在高速、大容量存儲設(shè)備上運行的應(yīng)用。對于為這種設(shè)備寫的Java應(yīng)用由使用大量內(nèi)存的JVM編譯。但與JVM相比,KVM占有較少的內(nèi)存,嚴(yán)重地限制了它的能力。移動應(yīng)用中的任何虛擬機(jī)必須能夠識別和拒絕無效的類文件。KVM的限制之一是它不可能執(zhí)行類文件的檢驗。要求這些檢驗過濾不屬于CLDC配置的類文件。因此,需要一種機(jī)制能在KVM之外執(zhí)行類文件檢驗,這由J2ME無線工具箱完成。這個工具箱是Sun公司用來構(gòu)建和測試MIDlet的一組工具。
創(chuàng)建MIDlet之后,必須測試它以保證應(yīng)用能成功地運行。如果開發(fā)的MIDlet要在不同的移動設(shè)備上運行,必須在每個這些設(shè)備中測試它。J2ME無線工具箱提供了模擬這些環(huán)境和測試應(yīng)用的一種機(jī)制。這些被模擬的測試消除了在特定設(shè)備中MIDlet發(fā)生故障的可能性。
1.7.1 J2ME無線工具箱的結(jié)構(gòu)
J2ME無線工具箱由兩個部件組成:
● 字節(jié)代碼檢驗器(Bytecode verifier)
● J2ME仿真器(emulator)
此外,由Motorola發(fā)布的某些J2ME無線工具箱(如J2ME的SDK),還包含稱為配置編輯器(Configuration editor)的附加部件。
1. 字節(jié)代碼檢驗器
如前面提到的,J2ME MIDlet必須遵循CLDC配置。J2ME不支持J2SE中可用的所有的類文件。CLDC配置進(jìn)一步限制了這些類文件的使用。在這種情形下,虛擬機(jī)必須能夠定位并拒絕來自MIDlet的所有的無效類文件,只保留有效的類文件。KVM不可能執(zhí)行這些任務(wù)。因為,使用字節(jié)代碼檢驗器。過濾無效類的過程稱為預(yù)檢驗。在MIDlet的開發(fā)階段執(zhí)行預(yù)檢驗過程。然后準(zhǔn)備把被檢驗的MIDlet作為應(yīng)用被裝入。字節(jié)代碼檢驗器的優(yōu)點是:它減少了KVM的工作負(fù)荷。這可讓KVM完全集中于編譯過程而不必檢查無效的類文件。歸結(jié)起來,字節(jié)代碼檢驗器用來定位并拒絕來自MIDlet的所有無效的類文件,只保留有效的類文件。過濾無效類的類文件的過程稱為預(yù)檢驗。減少了KVM的工作負(fù)荷,可讓KVM完全集中于編譯過程而不必檢查無效的類文件。
在預(yù)檢驗過程中,.class文件被轉(zhuǎn)換為.jar文件。MIDlet被編譯之后,以.class擴(kuò)展的方式存儲它,這類似于Java字節(jié)代碼文件。下一步是預(yù)檢驗過程,此后,.class文件被轉(zhuǎn)換為.jar文件。預(yù)檢測過程如圖1-4所示。

圖1-4 預(yù)檢測過程
除了MIDlet類和其他的支持類之外,MIDlet JAR文件還包含以下元素。
● MIDlet:MIDlet類文件。
● Manifest文件:又稱為應(yīng)用描述符,這個文件描述了MIDlets,諸如:MIDlet的名、廠商名,等等。用擴(kuò)展jad來保存此文件。
● 其他資源:這些資源包括:MIDlets使用的圖像文件和聲音文件。
單個JAR文件可以包含一個以上的MIDlet。若干個MIDlets一起形成了MIDlet套件。應(yīng)用描述符提供了由套件訪問特定MIDlet所需的信息。這種應(yīng)用描述符作為JAR文件內(nèi)的.jad文件存儲。存儲在JAR文件中的其他資源包括聲音和圖像文件。
2. J2ME仿真器
在準(zhǔn)備部署MIDlet之前,必須在真實的情況下測試它。這涉及到測試創(chuàng)建它的每個設(shè)備中的MIDlet。用J2ME仿真器來執(zhí)行此測試。該仿真器提供了在PC上測試代碼的有效的被模擬的環(huán)境。當(dāng)執(zhí)行此模擬時,設(shè)備的圖像出現(xiàn)在屏幕上,應(yīng)用的執(zhí)行完全像在特定設(shè)備上執(zhí)行的那樣。用戶可通過鼠標(biāo)點擊設(shè)備上的不同按鈕來與設(shè)備交互。
J2ME無線工具箱能模擬以下設(shè)備的環(huán)境:
● DefaultColorPhone
● DefaultGrayPhone
● MinimumPhone
● Motorola i85s
● PalmOS_Device
● RIMJavaHand-held
圖1-5 描繪了J2ME仿真器屏幕,這在測試游戲軟件時出現(xiàn)在3 種不同的移動設(shè)備(DefaultGrayPhone、RIMJavaHand-held和Motorola i85s)上的MIDlet。

圖1-5 不同的仿真器
J2ME仿真器具有以下優(yōu)點:
● 幫助用戶在模擬的環(huán)境中重復(fù)地運行MIDlet直到確定錯誤為止。
● 提供讓用戶可在不同的設(shè)備上測試運行MIDlets單個接口。
● 分析MIDlet的特定方面,如:無用單元收集和裝入類文件。
盡管用戶可認(rèn)為J2ME仿真器是一個完整的解決方案提供者,但它有一些限制。仿真器不能以確實的精度來測試和檢驗MIDlets的一些特點。這些限制主要包括:
● 執(zhí)行速度
● 內(nèi)存可用性
創(chuàng)建在不同設(shè)備上運行的MIDlet,每個設(shè)備有它自己的處理器速度。因此,希望有一種仿真器能以不同的速度測試運行MIDlets,但是J2ME Wireless Toolkit的當(dāng)前版本還做不到這一點。同樣,要對不同設(shè)備中MIDlets測試其可用的內(nèi)存,內(nèi)存可用性決定了應(yīng)用能否在設(shè)備內(nèi)很好地運行。對于可變的可用內(nèi)存,在仿真器中測試運行MIDlet是不可能的。
仿真器的另一個限制是它不能模擬駐留在每個移動設(shè)備上的應(yīng)用管理器(application manager)的工作。應(yīng)用管理器負(fù)責(zé)在移動設(shè)備內(nèi)添加、刪除和執(zhí)行MIDlet。仿真器不能模擬應(yīng)用管理器的工作。因此,它不可能確切地確定這些MIDlets怎樣在設(shè)備內(nèi)被管理的。
3. 配置編輯程序
配置編輯程序幫助用戶配置設(shè)備環(huán)境。這意味:用戶可改變設(shè)備內(nèi)可用的不同特征。例如,用戶可修改設(shè)備圖像、屏幕大小,以及設(shè)備中可用的按鈕。這樣,編輯程序提供了可讓用戶控制模擬環(huán)境的機(jī)制。
注釋
Sun公司發(fā)布的標(biāo)準(zhǔn)J2ME Wireless Toolkit不提供配置編輯程序。但這個標(biāo)準(zhǔn)工具箱能讓用戶配置設(shè)備環(huán)境。在Motorola發(fā)布的J2ME的SDK中,有這個功能。
- SELinux Cookbook
- HFSS電磁仿真設(shè)計從入門到精通
- 2018—2019年中國無線電應(yīng)用與管理藍(lán)皮書
- 5G在智能電網(wǎng)中的應(yīng)用
- Android語法范例參考大全
- 電子設(shè)備人機(jī)工程設(shè)計及應(yīng)用
- 5G NR無線網(wǎng)絡(luò)優(yōu)化實踐
- 鯤鵬生態(tài)應(yīng)用開發(fā)
- 路由與交換(第二版)
- 成像雷達(dá)并行仿真優(yōu)化技術(shù)
- 數(shù)字視頻創(chuàng)意設(shè)計與實現(xiàn)(第二版)
- 光電子技術(shù)基礎(chǔ)與技能
- 電子工程師必備:元器件應(yīng)用寶典(強(qiáng)化版)
- 5G+智能制造
- 物聯(lián)產(chǎn)品電磁兼容分析與設(shè)計