第一章:J2ME概述

第一章:J2ME概述


介紹

這一章將開始教您使用 J2ME。我們將從定義 J2ME 開始,然後討論它的總體架構並學習 J2ME 目標設備。作爲架構討論的一部分,我們將提供有關簡表和配置的概述(後面的章節中將詳細介紹簡表和配置)。同時我們會簡要介紹打包和配置 J2ME 應用程序過程中的一些注意事項。
J2ME 是什麼?

Sun Microsystems 將 J2ME 定義爲“一種以廣泛的消費性產品爲目標的的高度優化的 Java 運行時環境,包括尋呼機、移動電話、可視電話、數字機頂盒和汽車導航系統。”

自從 1999 年 6loper Conference 上聲明之後,J2ME 爲小型設備帶來了 Java 語言的跨平臺功能,允許移動無線設備共享應用程序。有了 J2ME,Sun 已經使 Java 平臺能夠適應集成了或基於小型計算設備月在 JavaOne Deve的用戶產品。

J2ME 總體架構

J2ME 使用配置和簡表定製 Java 運行時環境 (JRE)。作爲一個完整的 JRE,J2ME 由配置和簡表組成,配置決定了使用的 JVM,而簡表通過添加特定於域的類來定義應用程序。

配置將基本運行時環境定義爲一組核心類和一個運行在特定類型設備上的特定 JVM。我們將在 J2ME 配置一章中詳細討論配置。

簡表定義應用程序;特別地,它向 J2ME 配置中添加特定於域的類,定義設備的某種作用。我們將在 J2ME 簡表一章中深入介紹簡表。

下面的圖表描述了不同的虛擬機、配置和簡表之間的關係。它同時把 J2SE API 和它的 Java 虛擬機進行了比較。雖然 J2SE 虛擬機通常被稱爲一種
JVM,但是 J2ME 虛擬機、KVM 和 CVM 都是 JVM 的子集。KVM 和 CVM 均可被看作是一種 Java 虛擬機 -- 它們是
J2SE JVM 的壓縮版,並特定於 J2ME。

按此在新窗口瀏覽圖片

配置概述

配置將基本運行時環境定義爲一組核心類和一個運行在特定類型設備上的特定 JVM。雖然還可能在將來定義其他的配置,但當前 J2ME 存在兩種配置:

? 連接限制設備配置 (CLDC) 特別與 KVM 一起用於內存有限的 16 位或 32 位設備。這是用於開發小型 J2ME 應用程序的配置(虛擬機)。(從開發的角度來看)它的大小限制讓它比 CDC 更有趣、更具挑戰性。CLDC 同時還是用於開發繪圖工具應用程序的配置。 Palm 電腦便是一個運行小應用程序的小型無線設備的示例。我們將在 J2ME 配置一章中深入介紹 CLDC。

? 連接設備配置 (CDC) 與 C 虛擬機 (CVM) 一起使用,用於要求內存超過 2 兆的 32 位體系結構。互聯網電視機頂盒便是這類設備的一個示例。雖然稍後我們將在 CDC API 一章中簡要介紹 CDC,但它並不在本教程的範圍內。

簡表概述

簡表定義了您的應用程序所支持的設備類型。特別地,它向 J2ME 配置添加了特定於域的類來定義設備的某種作用。簡表建立在配置的頂部。已經爲 J2ME 定義了兩種簡表:KJava 和移動信息設備簡表 (MIDP),它們也被建立在 CDLC 上。這兩種簡表適用於小型設備。

有一種綱要簡表,您可以在它的上面創建自己的簡表,這種綱要簡表也稱爲基礎表,可供 CDC 使用。然而,在本教程中,我們只重點介紹建立在 CLDC 頂部,適用於小型設備的簡表。

我們將在後面的章節中討論上述這些簡表,還會使用 KJava 和 MIDP 建立一些示例應用程序。

J2ME 目標設備

使用 CLDC 開發的 J2ME 應用程序的目標設備通常具有以下特徵:
? 可供 Java 平臺使用的 160 到 512 千字節的總內存
? 功率有限,常常是電池供電
? 網絡連通性,常常是無線的、不一致的連接並且帶寬有限
? 用戶接口混亂,程度參差不齊;有時根本就沒有接口

一些 CLDC 支持的設備,包括無線電話、尋呼機、主流個人數字助手 (PDA),以及小型零售支付終端。

依照 Sun Microsystems,CDC 的目標設備通常具有以下特徵:
? 使用 32 位處理器
? 2 兆字節或更多可供 Java 平臺使用的總內存
? 設備要求的 Java 2 “藍皮書”虛擬機的全部功能
? 網絡連通性,常常是無線的、不一致的連接並且帶寬有限
? 用戶接口混亂,程度參差不齊;有時根本就沒有接口

一些 CDC 支持的設備,包括常駐網關、智能電話和通訊器、PDA、管理器、家用電器、銷售網點終端以及汽車導航系統。

J2ME、J2SE 與 J2EE 之間的比較

下面的圖表描述了支持 J2ME 應用程序的設備,同時說明了 J2ME 適合 Java 平臺之處:


按此在新窗口瀏覽圖片 

第二章:開發J2ME應用程序

介紹

在這一章中,我們將複習一下在爲小型設備開發應用程序時需要牢記的一些注意事項。我們將看一下在使用 J2SE 編譯 J2ME 應用程序時調用編譯器的方法。最後我們將探究打包和部署,以及在這個過程中提前驗證所扮演的角色。

設計開發小型設備應用程序要注意的事項

爲小型設備開發應用程序,需要您在設計階段制定某種策略。最好是在開始編寫代碼之前,戰略性地爲小型設備設計應用程序。由於無法考慮到所有的 "gotchas" ,在開發應用程序之前更正代碼是一件很痛苦的工作。

下面是一些可以考慮的設計策略:

? 保持程序簡單。除去不必要的功能,如果可能的話,將它們做成獨立的、次要的應用程序。

? 程序越小越好。這一點對所有的開發者來說應該是顯而易見的。越小的程序佔用的設備內存越少,並且花費的安裝時間越少。可考慮將您的 Java 應用程序打包,作爲壓縮的 Java 檔案 (jar) 文件。

? 運行時佔用最少的內存。爲儘可能減少運行時佔用的內存,使用標量類型代替對象類型。同時,不依賴垃圾收集程序。您應該在使用完對象時將對象引用置空,這樣可有效管理內存。另外一種減少運行時所需內存的方法是使用“惰性”實例,它僅在必需時才分配對象。其它一些減少小型設備上過量和峯值內存使用的方法有快速釋放資源、重新使用對象以及避免異常。


設計開發移動設備應用程序的注意事項

開發移動設備應用程序的規則與我們前面提及的開發小型設備的相同:先設計再編碼。讓我們檢查一下開發移動設備應用程序時可考慮的一些設計建議:

? 讓服務器做大部分的工作。將計算性較強的任務放到服務器上,讓服務器爲您做這些工作。讓移動設備處理界面和最少的計算工作,而讓服務器做繁重的工作。當然,您爲其開發應用程序的移動設備對設備連接到服務器上的難易程度和頻率有重要影響。

? 謹慎地選擇編程語言。J2ME 仍然處於成長期,可能還不是最好的選擇。根據您的需要,選擇其它的面嚮對象語言,如 C++,可能會更好。


性能注意事項

爲性能而編碼。下面有一些以獲得最優性能爲目標的編碼方法:
? 使用局部變量。訪問局部變量比訪問類成員更快。
? 避免字符串串聯。字符串串聯不僅會降低性能,而且會增加應用程序的內存峯值佔用量。
? 使用線程,避免同步。任何運行時間超過 1/10 秒的操作都需要一個獨立的線程。避免同步同樣能提高性能。
? 使用模型視圖控制器 (MVC) 分離模型。MVC 將代碼中控制顯示的邏輯分離出來。

編譯註意事項

同其它的 Java 應用程序一樣,您在打包和部署應用程序之前要先進行編譯。儘管有了 J2ME,您仍然使用 J2SE 編譯器並且需要用適當的選項來進行調用。

特別的,您需要使用 -bootclasspath 選項來指示編譯器使用 J2ME 類,而不是 J2SE 類。不要在編譯器的 CLASSPATH 中設置配置類。這樣將導致運行時錯誤,因爲不管 CLASSPATH 中有什麼,編譯器將首先自動搜索 J2SE 的核心類。換句話說,編譯器將無法引用特定 J2ME 配置中缺少的類或方法,結果導致在嘗試運行應用程序時出現運行時錯誤。
打包和部署注意事項

由於 J2ME 是爲內存有限的小型設備設計的。大部分常用的 Java 提前驗證已經從虛擬機中除去以形成一個較小的覆蓋區域。結果,在配置之前提前驗證 J2ME 應用程序就很有必要。在運行時會附加一個檢查以確保這個類在提前驗證之後還沒有改變過。

如何嚴格執行提前驗證或者檢查類的正確性依靠的是工具包。CLDC 提供一個稱爲提前驗證的命令行實用程序,它能夠進行實際的驗證並且可以把一些額外的信息插入到類文件中去。MIDP 使用無線工具包,這種工具包提供一種 GUI 工具,也可從命令行運行這種工具。

部署工作取決於您要部署的平臺。應用程序必須以一種適合 J2ME 設備類型的格式進行打包和配置,就如簡表定義的那樣。

第四章:J2ME簡表
J2ME 簡表是什麼?

如我們在前面教程中提及的,一個簡表定義了受支持設備的類型。例如,移動信息設備簡表 (MIDP),定義了蜂窩電話的類。它把一些特定於域的類加入J2ME 配置中來定義對類似設備的使用。已經爲 J2ME 定義了兩個簡表:KJava 和 MIDP 。它們都構建在 CLDC 之上。KJava 和 MIDP 都和 CLDC 及小型設備相關聯。

簡表被構建在配置的頂部。由於簡表是特定於運行應用程序的設備的大小(內存的數量),所以,某個簡表是與某種特定的配置相關聯的。

在綱要簡表上,您可以創建自己的簡表,這種綱要簡表也稱爲基礎表,它對於 CDC 也是可用的。然而,在本教程和本節中,我們將只重點學習建立在 CLDC 上的 KJava 和 MIDP 簡表。

簡表 1:KJava

KJava 是歸 Sun 公司所有的簡表,它包含 KJava API。KJava 簡表建立在 CLDC 配置的頂部。KJava 虛擬機,KVM,像標準的 J2SE 虛擬機那樣接受相同的字節代碼和類文件格式。

KJava 包含一個特定於 Sun 的、運行在 Palm 操作系統上的 API。這個 KJava API 和 J2SE 抽象視窗工具包 (AWT) 有很多地方都是相同。然而,由於它不是一個標準的 J2ME 軟件包,它的主軟件包是 com.sun.kjava。在以後的教程中開發一些示例應用程序時會學到更多關於 KJava API 的知識。

簡表 2: MIDP

MIDP 適合諸如蜂窩電話和尋呼機等移動設備。MIDP 和 KJava 一樣,也是建立在 CLDC 之上的,並且提供一個標準的運行時環境,允許在終端用戶設備上動態地部署新的應用程序和服務。

MIDP 是一個公共的、爲移動設備設計的工業標準簡表,它不依賴某個特定的商家。對於移動應用程序開發來說,它是一個完整的、受支持的基礎。

MIDP 包含下列軟件包,前面 3 個是核心 CLDC 軟件包,另加 3 個特定於 MIDP 的軟件包。我們將在後面的教程中討論每個軟件包:

? java.lang
? java.io
? java.util
? javax.microedition.io
? javax.microedition.lcdui
? javax.microedition.midlet
? javax.microedition.rms

MIDP 取代 KJava

正如我們在前面的章節中提及的,KJava 是 Sun 公司所擁有的一個 API。它不作爲一種完整的、功能齊全的簡表,而是作爲一種示範,示範簡表如何與 CLDC 一起工作。根據 CLDC 發行說明 (其中包含 CLDC 下載版本):

在軟件包 com.sun.kjava 中提供的 GUI 類不是連接限制設備配置 CLDC 的一部分。Java 2 平臺袖珍版的正式 GUI 類,將通過 Java Community Process 分別定義並被包含進 J2ME 簡表中。

不管這個事實存在與否,KJava 簡表已經被早期的採用者廣泛使用了。在 2001 年 JavaOne 的開發商會議上,Sun 公司宣稱早期 Palm 操作系統的 MIDP 可用性(MID 簡表的最初發行版焦點主要集中在無線電話上)。 Palm 操作系統 MIDP 的規格是由 Java Community Process (JCP) 定義的。因此,它是獨立於供應商的。當前衆多限制中的一個 -- 它將隨時間消失 -- 就是 Palm 操作系統的 MIDP 需要最新的 Palm 操作系統,3.5 版。

在我們寫這個教程的同時, Palm 操作系統的 MIDP 的規範仍然在隨着 JCP 不斷髮展,其細節也會隨時改變。儘管目前還無法確定其發行日期,但是規範一旦出臺,將必然減少對 KJava 的需求。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章