開發(fā)J2ME應(yīng)用程序準(zhǔn)則揭秘
這里向大家描述一下開發(fā)J2ME應(yīng)用程序準(zhǔn)則,同其它的Java應(yīng)用程序一樣,您在打包和部署應(yīng)用程序之前要先進(jìn)行編譯。盡管有了J2ME,您仍然使用J2SE編譯器并且需要用適當(dāng)?shù)倪x項(xiàng)來進(jìn)行調(diào)用。
開發(fā)J2ME應(yīng)用程序準(zhǔn)則
1.介紹
在這一章中,我們將復(fù)習(xí)一下在為小型設(shè)備開發(fā)J2ME應(yīng)用程序時需要牢記的一些注意事項(xiàng)。我們將看一下在使用J2SE編譯J2ME應(yīng)用程序時調(diào)用編譯器的方法。最后我們將探究打包和部署,以及在這個過程中提前驗(yàn)證所扮演的角色。
設(shè)計(jì)開發(fā)小型設(shè)備應(yīng)用程序要注意的事項(xiàng)
為小型設(shè)備開發(fā)應(yīng)用程序,需要您在設(shè)計(jì)階段制定某種策略。最好是在開始編寫代碼之前,戰(zhàn)略性地為小型設(shè)備設(shè)計(jì)應(yīng)用程序。由于無法考慮到所有的"gotchas",在開發(fā)應(yīng)用程序之前更正代碼是一件很痛苦的工作。
2.下面是一些可以考慮的設(shè)計(jì)策略:
保持程序簡單。除去不必要的功能,如果可能的話,將它們做成獨(dú)立的、次要的應(yīng)用程序。
程序越小越好。這一點(diǎn)對所有的開發(fā)者來說應(yīng)該是顯而易見的。越小的程序占用的設(shè)備內(nèi)存越少,并且花費(fèi)的安裝時間越少??煽紤]將您的Java應(yīng)用程序打包,作為壓縮的Java檔案(jar)文件。
運(yùn)行時占用最少的內(nèi)存。為盡可能減少運(yùn)行時占用的內(nèi)存,使用標(biāo)量類型代替對象類型。同時,不依賴?yán)占绦?。您?yīng)該在使用完對象時將對象引用置空,這樣可有效管理內(nèi)存。另外一種減少運(yùn)行時所需內(nèi)存的方法是使用“惰性”實(shí)例,它僅在必需時才分配對象。其它一些減少小型設(shè)備上過量和峰值內(nèi)存使用的方法有快速釋放資源、重新使用對象以及避免異常。
3.設(shè)計(jì)開發(fā)移動設(shè)備應(yīng)用程序的注意事項(xiàng)
開發(fā)移動設(shè)備應(yīng)用程序的規(guī)則與我們前面提及的開發(fā)小型設(shè)備的相同:先設(shè)計(jì)再編碼。讓我們檢查一下開發(fā)移動設(shè)備應(yīng)用程序時可考慮的一些設(shè)計(jì)建議:
讓服務(wù)器做大部分的工作。將計(jì)算性較強(qiáng)的任務(wù)放到服務(wù)器上,讓服務(wù)器為您做這些工作。讓移動設(shè)備處理界面和最少的計(jì)算工作,而讓服務(wù)器做繁重的工作。當(dāng)然,您為其開發(fā)應(yīng)用程序的移動設(shè)備對設(shè)備連接到服務(wù)器上的難易程度和頻率有重要影響。
謹(jǐn)慎地選擇編程語言。J2ME仍然處于成長期,可能還不是最好的選擇。根據(jù)您的需要,選擇其它的面向?qū)ο笳Z言,如C++,可能會更好。
4.性能注意事項(xiàng)
為性能而編碼。下面有一些以獲得最優(yōu)性能為目標(biāo)的編碼方法:
使用局部變量。訪問局部變量比訪問類成員更快。
避免字符串串聯(lián)。字符串串聯(lián)不僅會降低性能,而且會增加應(yīng)用程序的內(nèi)存峰值占用量。
使用線程,避免同步。任何運(yùn)行時間超過1/10秒的操作都需要一個獨(dú)立的線程。避免同步同樣能提高性能。
5.編譯注意事項(xiàng)
同其它的Java應(yīng)用程序一樣,您在打包和部署應(yīng)用程序之前要先進(jìn)行編譯。盡管有了J2ME,您仍然使用J2SE編譯器并且需要用適當(dāng)?shù)倪x項(xiàng)來進(jìn)行調(diào)用。
特別的,您需要使用-bootclasspath選項(xiàng)來指示編譯器使用J2ME類,而不是J2SE類。不要在編譯器的CLASSPATH中設(shè)置配置類。這樣將導(dǎo)致運(yùn)行時錯誤,因?yàn)椴还蹸LASSPATH中有什么,編譯器將首先自動搜索J2SE的核心類。換句話說,編譯器將無法引用特定J2ME配置中缺少的類或方法,結(jié)果導(dǎo)致在嘗試運(yùn)行應(yīng)用程序時出現(xiàn)運(yùn)行時錯誤。
6.打包和部署注意事項(xiàng)
由于J2ME是為內(nèi)存有限的小型設(shè)備設(shè)計(jì)的。大部分常用的Java提前驗(yàn)證已經(jīng)從虛擬機(jī)中除去以形成一個較小的覆蓋區(qū)域。結(jié)果,在配置之前提前驗(yàn)證J2ME應(yīng)用程序就很有必要。在運(yùn)行時會附加一個檢查以確保這個類在提前驗(yàn)證之后還沒有改變過。
如何嚴(yán)格執(zhí)行提前驗(yàn)證或者檢查類的正確性依靠的是工具包。CLDC提供一個稱為提前驗(yàn)證的命令行實(shí)用程序,它能夠進(jìn)行實(shí)際的驗(yàn)證并且可以把一些額外的信息插入到類文件中去。MIDP使用無線工具包,這種工具包提供一種GUI工具,也可從命令行運(yùn)行這種工具。
部署工作取決于您要部署的平臺。應(yīng)用程序必須以一種適合J2ME設(shè)備類型的格式進(jìn)行打包和配置,就如簡表定義的那樣。
【編輯推薦】