程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2ME 走向成熟

J2ME 走向成熟

編輯:關於JAVA

J2ME (Java 2, Micro Edition) 於 1999 年 6 月由 Sun Microsystems 第一次推向 Java 團體,它是一項能更好滿足 Java 開發人員的不同需求的廣泛倡議的一部分。 在 Java 2 平台下,Sun 重新定義了 Java 技術的架構,將其分為三個版本。標准版 (J2SE) 為桌面開發和低端商務應用提供了可行的解決方案。企業版 (J2EE) 是為面向以企業為環境而開發應用程序的專門開發人員而准備的。而小型版是致力於消費產品和嵌入式設備的開發人員的最佳選擇。盡管早期人們對它看好而且 Java 開發人員團體中的熱衷人士也不少,然而,J2ME 最近才開始從其影響更大的同屬產品 J2EE 和 J2SE 的陰影中走出其不成熟期。

J2ME 的嶄露頭角對 Sun,對跨通訊產業、信息產業和消費類電子產品業的公司,還有對 Java 開發人員來說的確是個好消息。Java 技術將一大批設備(從服務器到台式機和移動設備)集中到一種語言和一種技術之下。雖然這些設備的應用不同,但 Java 技術為這些不同點起到了橋梁的作用,使原本致力於單一領域的開發人員能將其技能發揮到跨越不同設備和應用的領域。

如果您是初次接觸 J2ME,您會驚奇地發現 J2ME 沒有技術規范。這是因為 J2ME 不是一個單獨的技術規范,而是相關技術規范的一個家族,這些規范定義了 Java 技術在資源限制的設備(即能源消耗少於普通台式機的設備)中的形態。

在本文中,我們將討論今日的 J2ME。我會講述定義 J2ME 目前結構的各個組件,並為那些對是否使用 J2ME 持觀望態度的用戶提供該技術近期發展的概覽。我還將為您提供針對嵌入式設備的 Java 平台的二種早期實現方法:KJava 和 PersonalJava 的最新狀況。我們首先講述 J2ME 目前的二項順序原則:配置和簡檔。

了解 J2ME

首先考慮一下可能用到 J2ME 的各類設備。這類設備包括 PDA、蜂窩式電話和尋呼機、電視機機頂盒、遠程遙控裝置和許多其他嵌入式設備。很明顯,要為所有這些設備定義一種最優化,或者接近最優化的單一技術是不可能的。處理器能源、內存、固定存儲器和用戶界面的差異非常之大。

為解決這一問題,Sun 將適合 J2ME 的設備的定義劃分成各個部分,然後再進一步細分。在第一步的劃分中,Sun 將各種設備按照處理性能、內存和存儲能力劃分成兩大類,此時並不考慮使用目的。公司然後定義 Java 語言的一個剝離版本,它能夠在每一類設備的限制下工作,而同時提供最低限度的 Java 語言功能性。

然後,Sun 在這二個種類中找出功能類似的設備類 -- 比如說所有的蜂窩電話無論哪個生產廠商都歸為一類。通過 Java Community Process 中的合作伙伴的協助,Sun 然後再針對每個縱向分類定義了附加的功能性。

第一部分創建 J2ME 目前的二種配置:連接設備配置 (CDC) 和連接限制設備配置 (CLDC)。 配置是 Java 的虛擬機 (JVM) 和為選擇的一組設備提供運行環境的最小類庫集和 API。配置指定了 Java 語言的最小公分母子集,它符合為其而開發的設備家族所強制的資源限制。

由於用戶界面、功能和用途中的這種極大差異,甚至在同一配置中,一個典型的配置不能像用戶界面工具包和固定存儲 API 那樣定義這樣的重要片斷。而該功能性的定義被稱為簡檔。

J2ME 簡檔是由從事例如尋呼機或蜂窩電話的特定種類設備的某業界領先集團指定的一系列 Java API。每個簡檔建立在由其配置提供的 Java 語言的最小共分母子集的頂部,並補充該配置。目前有二個簡檔:補充 CDC 的基礎簡檔和補充 CLDC 的移動信息設備簡檔 (MIDP)。更多的簡檔正處於開發階段,規范和參考實現方法即將出台。

圖 1 說明了 J2ME 及其配置和簡檔與 J2SE 和 J2EE 之間的關系。

圖 1. J2EE、J2SE 和 J2ME 之間的關系

如上所述,J2ME 不是單一的規范而是一系列規范,每一項適用於特定的一系列要求。在下文中,我將講述在 Java 2 平台下每一項規范和它與其它規范之間的關系。

CLDC: 512 KB 以下的應用程序

讓我們首先來分析一下較小的二個配置。根據其規范,CLDC 服務於具有 512 KB 以下內存、有限能源供應(通常使用電池)、有限或非持續網絡連接和簡單(或無)用戶界面的設備。這是最適合用來創建蜂窩電話、尋呼機、PDA 和類似設備的配置。

為了使 CLDC 適應如此嚴格的限制,開發人員不得不放棄 J2SE 中的許多功能。實際上,當完成設計後,CLDC 只包括四個包:其中三個來自標准 Java 規范(java.lang、java.util 和 java.io),另一個專門針對 CLDC (javax.microedition)。

甚至這三個標准包的內容也被縮減了。在 J2SE 中包含 47 個類和界面的 java.util 包在 CLDC 中縮減至 10 個類。那些被保留的類的功能性足以構建應用程序 -- 省略的功能性由 MIDP 提供,我將在下文中講述。

表 1 羅列了類的數量,以及每個 CLDC 包的界面,讓您清楚地了解 CLDC 有多小。

表 1. 每個 CLDC 包中類和界面的數量

包 描述 類和界面 java.io 系統輸入輸出 18 java.lang Java 編程語言的基本類 38 java.util 集合、日期和時間支持、各式實用工具類 10 javax.microedition 類屬連接 10

CLDC 不需要一致的實現方法來支持例如反映、結束、用戶定義的類裝載器或浮點算法等功能,這毫無價值。然而,CLDC 並不能提供構建有用應用程序的所有功能性。很明顯,它缺少用戶界面這一大多數應用程序必需的功能。CLDC 從來就不是一個完整的解決方案。它的設計只是個開頭,是可建立提供附加功能性和定位特定產品類的簡檔的通用基礎。MIDP 就是這樣一個簡檔。

已定義的 MIDP -- 那麼 MIDlet 又是什麼呢?

MIDP 為 CLDC 加入創建諸如蜂窩電話、尋呼機和簡單 PDA 應用程序必需的功能性。MIDP 的功能性包括支持計時器、簡單固定存儲器、通過 HTTP 的連網和用戶界面。

CLDC 中 3 項丟失的類已加入到 java.lang 和 java.util 包中,使 MIDP 支持計時器。這些類是:

java.util.Timer

java.util.TimerTask

java.lang.IllegalStateException

所有 MIDP 剩余的功能性包含在 J2ME 中唯一的四個包中。表 2 羅列了這四個剩余的包,以及包的描述和包中含有的類和界面。

表 2. 組成 MIDP 的 4 個 javax.microedition 包

包 描述 類和界面 javax.microedition.rms 固定記錄存儲 10 javax.microedition.midlet MIDlet 和其環境之間的界面 2 javax.microedition.io 支持 HTTP 協議 1 javax.microedition.lcdui 用戶界面工具包 24

javax.microedition.midlet 包保證了進一步的觀察,它為 Java 開發引入了一個新特性。 MIDlet 這一名稱提供給寫入 MIDP 規范的應用程序。所有這些應用必須適合 javax.microedition.midlet 包中定義的框架。

MIDlet 框架類似 J2SE 提供的小應用程序框架。MIDlet 是相關類的集合,其中一類擴展了 javax.microedition.midlet.MIDlet 類。由 MIDlet 所在設備提供的 MIDlet 環境通過傳遞使其開始、暫停和自毀的事件來控制 MIDlet。圖 2 展示了 MIDlet 的生命周期。

圖 2. MIDlet 的生命周期

請參閱 參考資料了解更多 MIDlet 的相關內容。

CDC 補充 CLDC 的遺留問題

目前 2 個已定義的 J2ME 的配置的大部分是 CDC,它最適合用來創建電視機機頂盒、娛樂系統、汽車導航系統和其他這類規模的應用程序。

在資源限制的條件下,CDC 補充了 CLCD 的不足,並針對大於 2 MB 內存的設備,它能支持標准 Java 虛擬機和 Java 編程語言的完整實現。簡而言之,CDC 非常接近您熟悉的 Java 規范。

當只需要兼容 CLDC 的虛擬機來支持標准 Java 虛擬機功能性的一個子集時,那麼 CDC 指定的虛擬機必須和標准 JVM 特性兼容。這意味著如果包括對本地方法調用的支持,CDC JVM (或 CVM)必須符合 JNI (Java 本地接口) 1.1。如果包括對調試的支持,那就必須符合 JVMDI (Java 虛擬機調試界面)。如果需要包括簡檔支持,那就必須遵從 JVMPI (Java 虛擬機簡檔界面)。

在類庫層中,CDC 提供支持全兼容 Java 2 虛擬機所必需的最小 API 集。這一 API 集包括所有為 CLCD 定義的 API 和針對文件 I/O、連網、高級安全性、對象序列等 API。表 3 羅列了在 CDC 規范下提供的包、每個包中的類和界面的數量和每個包的描述。

表 3. 在 CDC 規范下的所有包

包 描述 類和界面 java.io 系統輸入與輸出 62 java.lang Java 編程語言基本類 77 java.lang.ref 特別參考類 5 java.lang.reflect 反映支持 12 java.math Math 支持 1 java.net 網絡類和工具 23 java.security 安全支持 36 java.security.cert 證書支持 4 java.text 文本處理類 13 java.util 集合、日期和時間支持,各種實用工具類 47 java.util.jar Jar 文件支持 7 java.util.zip Zip 文件支持 9 javax.microedition 類屬連接 10

很明顯,表 3 中缺少屬於 java.awt 包中的類和界面。與 CLDC 的情形相同,CDC 不支持任何用戶界面。這還是由於設備與設備之間的用戶界面差異很大所造成的。必須為 CDC 加入合適的簡檔以獲得用戶界面支持。

CVM 是指定和 CDC 一起使用的 Java 虛擬機,它具有許多超出支持 CDC 所必需的有趣功能。它的移植性很強、支持可 ROM 的類、允許快速線程同步操作,並提供對本地線程的支持。簡而言之,它是為支持經常出現在嵌入式應用中的操作系統而設計的。

基礎簡檔

基礎簡檔是唯一的為 CDC 而定義的簡檔。它大大地擴展了 CDC 提供的 API。然而,它並不提供用戶界面 API。正如其名“基礎”所示,該簡檔必須通過一個或多個提供用戶界面支持的附加簡檔來擴充 -- 例如個人簡檔 (JSR 62),它正處於開發階段並有可能最終替代 PersonalJava 的簡檔。

表 4 羅列了基礎簡檔中的,也包括 CDC 中的所有類和界面的數量。這一配置及其主要簡檔提供的所有類和界面與我們習慣使用的 Java 平台類似。

表 4. 基礎類和界面(包括 CDC 包)

包 描述 類和界面 java.io 系統輸入與輸出 74 java.lang Java 編程語言基本類 79 java.lang.ref 特別參考類 5 java.lang.reflect 反映支持 12 java.math Math 支持 1 java.net 網絡類和工具 35 java.security 安全支持 63 java.security.acl 訪問控制表支持 8 java.security.cert 證書支持 15 java.security.interface 安全界面類 9 java.security.spec 關鍵規范和運算法則參數規范 14 java.text 文本處理類 23 java.util 收集、日期和時間支持,各種實用工具類 54 java.util.jar Jar 文件支持 8 java.util.zip Zip 文件支持 17 javax.microedition 類屬連接 11

舊的規范:KJava 和 PersonalJava 重新露面

如果近兩年一直關注著 Sun 對資源限制設備的支持,那麼您一定對 KJava 和 PersonalJava 很了解。PersonalJava 是 Sun 首次為資源限制設備創建 Java 平台版本的嘗試。Sun 的 Spotless 研究計劃派生的 KJava 是 Sun 在 1999 年 JavaOne 中為 Palm 而開發的 Java 平台版本。

由於為 PersonalJava 和 KJava 編寫的代碼很多,許多開發人員非常關切這兩種平台未來的發展如何。因為它們各自都獨立地發展,所以關於這兩種平台的信息並不多,但我會告訴您我所知道的信息。

PersonalJava 正逐漸轉變成 CDC 的個人簡檔。尚處於開發階段的這一簡檔將處於基礎簡檔的頂部,並且將與 PersonalJava 版本 1.1 和 1.2 向後兼容。

KJava 的情形就不十分明朗。Sun 非常關注 KJava 的實驗狀態,並提醒開發人員注意它對 API 的不斷變化,甚至重大變化。Palm Inc. 目前正為 CLDC 定義 PDA 簡檔,它將取代 KJava。不幸的是,現在尚無法明確地知道要對現有的 KJava 應用程序做出多少修改才能使其與新簡檔協同工作。

總結

J2ME 的前景很明顯要比 J2SE 甚至 J2EE 來的復雜,但是復雜性也預示著 J2ME 能夠支持的設備的多樣性。總的來說,以我的方法學習一種特定的配置和簡檔並不很困難。許多情況下,J2ME 讓我想起 1995 年的 Java 語言。

如果試圖決定是否在嵌入式應用程序中使用 J2ME,您會發現有許多無法回答的問題。例如,我仍然不清楚何時 J2ME 的優勢能超越它的成本,特別是鑒於虛擬機和 API 在已經資源限制的環境下使用的資源。

然而,隨著規范的成型和更多簡檔的加入,我確信答案會出現,而且 J2ME 將鞏固其在嵌入式設備領域的地位。通過 CDC 和 CLDC,Sun 已采取重要的步驟為該領域的開發人員的各種需求提供各種重要的服務。基礎簡檔剛開始鞏固,個人簡檔將在幾個月內出台。作為開發人員,我們將與 J2ME 一同發展,如果僅是實驗性的,並且使 Sun 以及其他在無線和嵌入設備市場的商家明確我們的需求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved