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