J2ME到底是什麼呢,J2ME是Java 2的一個組成部分,它與J2EE和J2SE並稱。Sun是這樣定義的:J2ME是一種高度優化的Java運行環境,主要針對消費類電子設備的,例如蜂窩電話和可視電話、數字機頂盒、汽車導航系統等等。J2ME技術在1999年的JavaOne Developer Conference大會上正式推出,它將Java語言的與平台無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。
J 2ME 在設計其規格的時候,遵循著「對於各種不同的裝置而造出一個單一的開發系統是沒有意義的事」這個基本原則。於是 J2ME 先將所有的嵌入式裝置大體上區分為兩種 :一種是運算功能有限、電力供應也有限的嵌入式裝置,另外一種則是運算能力相對較佳、並且在電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機上盒 (set-top box))。因為這兩種型態的嵌入式裝置,所以Java 引入了一個叫做Configuration 的概念,然後把上述運算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規格之中;而另外一種裝置則規范為 Connected Device Configuration(CDC)規格。也就是說, J2ME 先把所有的嵌入式裝置利用Configuration 的概念區隔成兩種抽象的型態。
其實在這裡大家可以把CLDC 當作是J2ME 對於兩種類型嵌入式裝置的規格,而這些規格之中定義了這些裝置至少要符合的運算能力、供電能力、記憶體大小等規范,同時也定了一組在這些裝置上執行的 Java 程序所能使用的類別函式庫、這些規范之中所定義的類別函式庫為 Java 標准核心類別函式庫的子集合以及與該型態裝置特性相符的擴充類別函式庫。比方就CLDC 的規范來說,可以支援的核心類別函式庫為java.lang.* 、java.io.*、java.util.*,而支援的擴充類別函式庫為java.microedition.io.*。區分出兩種主要的CLDC 之後,J2ME 接著在定義出Profile的概念。Profile 是架構在CLDC 之上的規格。之所以有Profile的概念,是為了要更明確地區分出各種嵌入式裝置上Java 程序該如何開發以及它們應該具有哪些功能。因此Profile 之中定義了與特定嵌入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上的使用者介面該如何呈現就是定義在Profile 裡頭。Profile 之中所定義的擴充類別函式庫是根據底層CLDC 內所定義的核心類別函式庫所建立。
與J2SE和J2EE相比,J2ME總體的的運行環境和目標更加多樣化,但其中每一種產品的用途卻更為單一,而且資源限制也更加嚴格。為了在達到標准化和兼容性的同時盡量滿足不同方面的需求,J2ME的架構分為Configuration、Profile和Optional Packages(可選包)。它們的組合取捨形成了具體的運行環境。
Configuration主要是對設備縱向的分類,分類依據包括存儲和處理能力,其中定義了虛擬機特性和基本的類庫。已經標准化的Configuration有- Connected Limited Device Configuration(CLDC)和Connected Device Configuration(CDC)。
Profile建立在Configuration基礎之上,一起構成了完整的運行環境。它對設備橫向分類,針對特定領域細分市場,內容主要包括特定用途的類庫和API。CLDC上已經標准化的Profile有Mobile Information Device Profile ( MIDP)和Information Module Profile(IMP),而CDC上標准化的Profile有Foundation Profile(FP)、Personal Basis Profile(PBP)和Personal Profile(PP)。
可選包獨立於前面兩者提供附加的、模塊化的和更為多樣化的功能。目前標准化的可選包包括數據庫訪問、多媒體、藍牙等等。
開發Java ME程序一般不需要特別的開發工具, 開發者只需要裝上Java SDK 及下載免費的 Sun Java Wireless Toolkit 就可以開始編寫Java ME程式,編譯及測試, 此外目前主要的IDE(Eclipse 及 NetBeans)都支持 Java ME 的開發,個別的手機開發商如 Nokia 及 Sony EriCSSon 都有自己的SDK, 供開發者在開發出兼容於他們的平台的程序。