跳轉到內容

J2ME 程式設計/J2ME 平臺

來自華夏公益教科書,自由的教科書
(從 Programming:J2ME:The J2ME Platform 重定向)

Java 2 Platform, Micro EditionJ2ME 是針對嵌入式消費產品的 Java API 集合,例如 PDA手機 和其他消費類電器。

J2ME 已經成為建立手機遊戲的熱門選擇,因為它們可以在開發階段在 PC 上模擬,並輕鬆上傳到手機。這與為其他特殊遊戲平臺(例如由 任天堂索尼 等製造的遊戲平臺)開發、測試和載入遊戲相比,難度要小得多,因為需要昂貴的系統特定硬體和工具包。

通常,J2ME 的介紹會忽略初學者可能改進學習過程的領域,希望這組文章能夠消除障礙。我們將涵蓋 J2ME 誕生前後的歷史。我們還將介紹整個 J2ME API 生態系統的複雜性,希望這將有助於您在 J2ME 開發專案和應用程式中。

總的來說,裝置和服務這些裝置的基礎設施,從模擬到數字的轉變,是 J2ME 發展的第三個看不見的角色。從模擬的蜂窩通訊方法到諸如 CDMATDMAWCDMA 等標準的轉變。此外,車輛計算和數字電視領域的重大變化涉及諸如 DVBMHPHAViMPEG4OSGi 等新標準,改變了 Java 等計算機語言以及 J2ME 平臺與該新領域之間的互動方式。

Java 在移動裝置上的簡要歷史(平臺前和 JCP 前)

[編輯 | 編輯原始碼]

這段歷史被稱為平臺前,發生在 1999 年 Sun 將 Java 部分重新命名為平臺版本之前。在 1992 年期間,Sun Microsystems 工程師和風險投資支援的初創公司共同參與了一個名為 Green 的專案("Green". Green 專案簡史.)將新的虛擬機器執行框架引入嵌入式裝置。該裝置稱為 Star7,由 SPARC CPU 驅動。

當時被稱為 OAK 的語言及其功能是 FirstPerson、ON 和 Sun Microsystems 合併的結果。儘管在這段簡要的歷史中沒有提及("Java 5th Birthday". JAVA 技術:早期.)。第一個 JVM 實際上是由 ON 完成的,並且根據 Java 語言歷史的官方維基百科版本,它是基於 Smalltalk 的("Java History". Java 語言歷史的官方維基百科版本.)。因此,擁有一個虛擬機器的較小佔用空間不僅有利於 Java 的誕生,而且在這一時期使其穩定地進入瀏覽器,並開始了其向移動裝置的重生。

儘管 Sun Microsystems 認為,它在這一時期的部分作用是將消費裝置市場從 WINTEL 推向 SPARC 處理器,但正是應用程式殺手級應用方面在這一風險啟動期得以生存。

PersonalJava (pJava)

[編輯 | 編輯原始碼]

Sun 對 Java 在移動裝置上的第二次探索集中在將 JDK1.1.8 的子集部署到具有更深入顯示功能的移動裝置上("JDK1.1.8". Java 開發工具包 1.1.8_10.)。在 1998 年左右,PersonalJava 的目標裝置之一是機頂盒,正如 McNealy 吹噓 Java 在機頂盒上的新聞所證明的那樣("McNealy". McNealy 吹噓 Java 無處不在,TCI 協議.)。

當 PersonalJava 規範("PersonalJava spec". PersonalJava API 規範.)在 1998 年推出時,Sun Microsystems 給它起了個綽號 pJava。由於 pJava 使用了 JDK1.1.8 的子集,SUN Microsystems 釋出了 pJava 模擬環境("pJava Emulation Environment". PersonalJava 模擬環境.)來幫助開發人員測試其小程式和應用程式的 pJava 相容性。

EmbeddedJava

[編輯 | 編輯原始碼]

EmbeddedJava ("EmbeddedJava". EmbeddedJava Application Environment.) 基於 JDK1.1.6 ("JDK1.1.6". JDK1.1.6 Download.),並針對那些只有字元顯示的移動裝置。

JavaPhone

[edit | edit source]

移動裝置 OEM 發現 PersonalJava 和 EmbeddedJava 解決方案缺乏那些允許訪問移動裝置上純電話功能的 API。因此,JavaPhone API ("JavaPhone". JavaPhone API.) 是由 Sun Microsystems 設計的,它是 PersonalJava 的垂直擴充套件,旨在為移動裝置上部署的 Java 解決方案新增電話功能。

JavaTV

[edit | edit source]

JavaTV ("JavaTV". Java TV API.) 旨在為機頂盒和無頭網路終端提供 Java API,這些 API 超出了 PersonalJava 提供的功能,這些功能特定於 iTV/DTV 平臺,例如 HAViDVB-MHP 等。

AutoJava

[edit | edit source]

AutoJava 也是 1998 年 Sun Microsystems 進入車聯網 (Auto) 的嘗試,但沒有足夠的吸引力,無法作為一個獨立的 API 生存下來。

JavaOS

[edit | edit source]

JavaOS ("JavaOS". JavaOS: A StandAlone Java Environment.) 針對通常部署在移動裝置或嵌入式裝置上的 OS 的底層即時作業系統 (RTOS) 結構。JavaOS 由 SUN Microsystems 於 1996 年秋季推出,基於 JDK1.0。ChorusOS 在 JavaOS 開發期間被 SUN Microsystems 收購,後來被剝離為 ChorusOS ("ChorusOS OpenSource". ChorusOS Open Source.).

J2ME 的誕生

[edit | edit source]

正如你可以從這份新聞快訊中看到 ("SUN NewsFlash". SUN ANNOUNCES KEY CONSUMER TECHNOLOGY TO BRING THE POWER OF THE JAVA PLATFORM TO AUTO, TV AND PHONE MARKETS.),1998 年春季,移動裝置市場正被 Java 席捲,但方式並不規範。正如你可以從對 KVM 之父的採訪中看到 ("Interview of the Father of the KVM". J2ME Luminary Antero Taivalsaari.),Sun 在幕後透過為移動裝置創新新的 JVM 和第一套 J2ME 平臺規範來應對移動裝置領域的碎片化,該專案最初被稱為 Spotless。

J2ME 活躍了

[edit | edit source]

在 1998 年到 1999 年期間,SUN Microsystems 公佈了 Java Community Process 的成立,並重組了這些針對移動裝置的 Java API 的碎片,形成了 J2ME,微型版平臺,從而戰勝了移動裝置領域的碎片化。現在讓我們來看看 J2ME 是如何針對移動裝置領域的 API 碎片化進行組織的。

J2ME 配置

[edit | edit source]

Sun Microsystems 提出了一種想法,即配置 API 將涵蓋部署在裝置上的 J2ME 的執行時方面。最小的 J2ME 配置實際上是最大的 J2ME 配置的子集。執行時方面透過在配置 API 中包含這些特定的類來涵蓋

  • 核心 Java 類
  • Java 程式語言功能
  • 虛擬機器功能

目前,有 CLDC (Connected Limited Device Configuration,連線受限裝置配置) 和 CDC (Connected Device Configuration,連線裝置配置) 兩種配置。

連線受限裝置配置

[edit | edit source]

The CLDC 涵蓋 JVM 環境記憶體小於 512k 的裝置,並刪除了 JNI、使用者定義的類載入器、類驗證過程中的某些類驗證項 (這就是為什麼我們需要對 MIDlet 進行預驗證,以便將它們編譯後部署在 CLDC 裝置上) 和反射,以適應這種小佔用空間。CLDC 裝置上的 JVM 被稱為 KVM (K-VirtualMachine),暱稱 K-VirtualMachine 指的是千位元組。javaTV 的應用程式生命週期概念和 javaPhone 的安裝概念被納入到這種連線受限裝置配置中。CLDC 的 JSR 是

  • "CLDC1.0". Connected Limited Device Configuration 1.0 JSR30. 此連線受限裝置配置 1.0 面向記憶體為 128k 到 512k (256kROM/256RAM 或更少) 的裝置,這些裝置具有有限的電源或電池操作,低速連線到某些網路,以及使用者介面。
  • "CLDC1.1". Connected Limited Device Configuration 1.1 JSR139. 此連線受限裝置配置 1.1 面向記憶體為 160K 或更大的裝置,處理器速度為 8-32MHZ,具有有限的電源或電池操作,以及使用者介面。此配置擴充套件了 CLDC1.0,以包含浮點數學。

連線裝置配置

[編輯 | 編輯原始碼]

連線裝置配置 (CDC) 涵蓋了為 JVM 環境提供至少 512K 記憶體的裝置。垃圾回收器是部署在 CDC 裝置上的 CVM 中一個可插拔的獨立項。執行緒的實現不是特定於作業系統的,而是完全在 CVM 中實現的執行緒,被稱為“綠色執行緒”。執行緒也可以實現為作業系統本地執行緒。類檔案驗證在裝置上的 CVM 中進行,就像在桌面系統上的 J2SE Java 平臺一樣。CDC 裝置上的 JVM 被稱為 CVM 或 C-虛擬機器。CDC 的 JSR 包括

  • "連線裝置配置 1.0". 連線裝置配置 1.0 JSR36. 3 月 17 日. {{cite web}}: 請檢查日期值:|date=|year= / |date= 不匹配 (幫助) 該連線裝置配置 1.0 針對具有至少 512K ROM/128K RAM 的裝置,可連線到某些網路,支援完整安裝的完整 JVM,並提供與 CLDC 相比功能更全面的使用者介面。
  • "連線裝置配置 1.1". 連線裝置配置 1.1 JSR218. 3 月 17 日. {{cite web}}: 請檢查日期值:|date=|year= / |date= 不匹配 (幫助) 該連線裝置配置 1.1 擴充套件/更新了 CDC1.0,以將 CDC1.0 中使用的 J2SE API 更新到 J2SE 1.4 API。記憶體大小從 128K ROM 增加到 256K ROM。

J2ME 配置檔案

[編輯 | 編輯原始碼]

配置檔案提供專注於特定裝置組的 API。這些裝置通常具有相同或類似的使用者介面(螢幕和輸入)、裝置連線到網路的方式、裝置儲存資料的方式等。目前,配置檔名稱表示此裝置組的系列名稱或此裝置組的通用功能。例如,MIDP(MID 配置檔案)適用於移動資訊裝置組。J2ME 配置檔案包括

移動資訊裝置配置檔案

[編輯 | 編輯原始碼]

移動資訊裝置配置檔案擴充套件和增強了 CLDC,為在移動資訊裝置和語音通訊裝置上開發應用程式提供 Java 環境。此配置檔案的 JSR 包括

  • "MIDP1.0". 移動資訊裝置配置檔案 1.0 JSR37. 該移動資訊裝置配置檔案 1.0 以縱向方式擴充套件了 CLDC1.0 Java 環境,透過提供 GUI 工具包、持久資料儲存、訊息傳遞、網路元件和安全性,支援在 CLDC1.0 規範中面向的裝置上進行 MIDlet 應用程式開發。雖然規範中提到了 JavaPhone 和 Java Telephony 的屬性;JavaPhone 電話屬性未作為 MIDP1.0 中的類包含,而是後來作為單獨的 JSR 和 API 包完成。
  • "MIDP2.0". 移動資訊裝置配置檔案 2.0 JSR118. 該移動資訊裝置配置檔案 2.0 擴充套件了 MIDP1.0,以包括 HTTPS 網路、具有數字證書的域安全模型、正式包含 OTA 配置、MIDlet 的事件響應推送架構、新增到 LCDUI 的遊戲功能、小型 XML 解析器以及基本聲音 API。
  • "MIDP3.0". 移動資訊裝置配置檔案 3.0 JSR271. 該移動資訊裝置配置檔案 3.0 擴充套件了 MIDP2.0,允許 MIDlet 自動啟動,在同一個 VM 中的後臺執行,並支援 MIDlet 間通訊。擴充套件的功能包括安全記錄儲存/可移動記錄儲存、IPv6、每個裝置的多個網路介面,以及除了 OTA 之外的其他 MIDlet 配置。

基礎配置檔案

[編輯 | 編輯原始碼]

基礎配置檔案可以稱為縱向規範配置檔案。縱向規範配置檔案透過記憶體大小指定目標裝置系列,以及除此配置檔案之外可能插入更多功能的可選配置檔案。GUI API 通常是插入在此配置檔案之上的配置檔案。典型的富網路裝置包括機頂盒 (iTV)、汽車計算 (遠端資訊處理) 等。此配置檔案的 JSR 包括

  • "基礎配置檔案 1.0". 基礎配置檔案 1.0 JSR46. 該基礎配置檔案 1.0 針對具有至少 128K ROM/512K RAM 的裝置,可連線到某些網路,並且在 CDC1.0 之上沒有提供由此配置檔案提供的圖形使用者介面。
  • "基礎配置檔案 1.1". 基礎配置檔案 1.1 JSR219. 該基礎配置檔案 1.1 建立在 CDC1.1 之上,支援 J2SE 1.4 API。目標裝置的記憶體增加到至少 256K ROM/512K RAM。包含了一些 API 以指定 IPv6、安全性以及更多數學支援的功能。

個人配置檔案

[編輯 | 編輯原始碼]

該個人配置檔案為具有豐富網路連線的裝置提供高網頁保真度,可以使用作為 PersonalJava 規範一部分的重量級 applet 類。雖然個人配置檔案 JSR62 支援 PersonalJava 應用程式環境的 PersonalJava1.1.x 和 PersonalJava1.2.x;個人配置檔案 1.1 支援採用 J2SE1.4 API 的子集,因為個人配置檔案 1.0 基於 J2SE1.3 API 的子集。此配置檔案的 JSR 包括

  • "個人配置檔案 1.0". 個人配置檔案 1.0 JSR62. 該個人配置檔案 1.0 針對具有至少 1.5 兆 ROM/1 兆 RAM 的裝置,以及建立在 CDC1.0 和基礎配置檔案 1.0 之上的可靠網路連線,並允許使用 pJava 模擬環境規範 1.1.x 和 1.1.2 開發的應用程式在此配置檔案面向的裝置上執行。
  • "個人配置檔案 1.1". 個人配置檔案 1.1 JSR216. 該個人配置檔案 1.1 擴充套件了個人配置檔案 1.0,以將 API 更新到 J2SE 1.4,並確保從 J2SE 1.4 API 派生的可選圖形包可以部署在此配置檔案之上。現在,目標裝置的最小記憶體大小為 3.5 兆 ROM/3.5 RAM。

個人基礎配置檔案

[編輯 | 編輯原始碼]

該個人基礎配置檔案在 CDC 和基礎配置檔案之上提供基本圖形使用者介面,即 AWT 輕量級 API,並被認為是個人配置檔案的子集。此配置檔案還提供 JavaTV 所需的 xlet 類。此配置檔案的 JSR 包括

  • "Personal Basis Profile 1.0". Personal Basis Profile 1.0 JSR129. 該 Personal Basis Profile 1.0 部署在 CDC1.0 和 Foundation Profile 1.0 之上,面向 ROM 最小 2MB/RAM 最小 1MB 的裝置。輕量級 AWT API 基於 JDK1.1 而不是 JDK1.3 API,以滿足較小的佔用空間要求。
  • "Personal Basis Profile 1.1". Personal Basis Profile 1.1 JSR217. 此 Personal Basis Profile 1.1 透過將所有 API 更新為源自 J2SE 1.4 API 來擴充套件 Personal Basis Profile 1.0,從而與可選圖形 API(如 AGUI)相容。

資訊模組配置檔案

[edit | edit source]

此資訊模組配置檔案支援沒有圖形使用者介面的嵌入式網路連線裝置。此配置檔案是 MIDP1.0 配置檔案的子集,不包含 MIDP1.0 的 LCDUI 類。典型目標裝置包括調變解調器、家用裝置和工業計量裝置。雖然 IMP 是 MIDP1.0 的子集,但 IMP-NG 是 MIDP2.0 的子集。此配置檔案的 JSR 為

  • "IMP". Information Module Profile JSR195. 此資訊模組配置檔案是 MIDP1.0 的子集,缺少 LCDUI 類。
  • "IMP-NG". Information Module Profile-Next Generation JSR228. 此資訊模組配置檔案 - 下一代是 mIDP2.0 的子集,不包含 LCDUI 類。

數字機頂盒配置檔案

[edit | edit source]

此數字機頂盒配置檔案是 JavaTV 的子集,面向部署 OCAP 的較小機頂盒。因此,此配置檔案不同於 javaTV(CDC、PP PBP)設定,因為它位於 CLDC 而不是 CDC 之上,以支援更小的裝置記憶體佔用空間。但是,Personal Basis Profile 中的一些概念(如 xlet 生命週期)是從 JavaTV 專案中借鑑的。此配置檔案的 JSR 為

  • "Digital Set Top Box Profile". Digital Set Top Box Profile JSR242. 此數字機頂盒配置檔案是 Personal Java 和 JavaTV 的子集,基於 OCAP 中當前的 java 類。使用此配置檔案開發的 Xlet 與 JavaTV(CDC、PP 和 PBP)組合向上相容。

J2ME 可選包和 API

[edit | edit source]

在 1999 年到 2001 年期間,引入了 J2ME 可選包和 API 的概念,以便在 J2ME 配置檔案之上提供額外的包和 API,為某些類別的裝置新增特定功能。一些配置檔案 JSR 被更改為這種新的可選包概念

  • "RMI". RMI Optional Package JSR66. RMI 可選包在 CDC 和 Foundation Profile 之上提供可互操作的 J2SE RMI 支援。
  • "PDA". PDA Optional Package JSR75. PDA 可選包位於 CLDC 之上,並提供 PDA 和手機通用的可選 API。例如,JavaPhone 中的 PIM 功能在此可選包中重新引入到 J2ME 平臺裝置中。添加了 FileConnection API,以允許 GCF 訪問可移動媒體儲存。

面向無線行業的 J2ME 技術

[edit | edit source]

由於 J2ME 的複雜性不斷增加,JTWI 在 2002 年被提出。面向無線行業的 J2ME 技術,也稱為"JTWI1.0". JSR185.,為哪些可選包和 API 與哪些配置檔案匹配設定了一個明確的架構概念。此概念涵蓋了 CLDC1.0、CLDC1.1、CDC1.0 和 MIDP2.0 系列裝置。可選包和 API 為

  • "Wireless Messaging API". Wireless Messaging API JSR120. 無線訊息 API 提供類來支援在 J2ME 平臺上開發訊息應用程式。
  • "Mobile Media API". Mobile Media API JSR135. 移動媒體 API 支援 J2ME 平臺的 CLDC 和 CDC 上的音訊和多媒體。

JTWI2.0 的第二個版本沿著 CLDC 和 CDC 配置線被拆分為"JSR248". JTWI2.0 Mobile Service Architecture for CLDC."JSR249". JTWI2.0 Mobile Service Architecture for CDC.

結論

[edit | edit source]

雖然,其他特定於作業系統的解決方案(如 將 C/C++ 擴充套件到移動平臺)獲得了第一波採用;但以 javaPhone、javaTV、嵌入式 Java、PersonalJava 的形式進行的初步工作,以及 J2ME 平臺的建立,為 J2ME 的成功推動奠定了基礎,並使其穩步攀升,成為移動裝置上的市場領導者。雖然並非所有 JavaPhone 功能都已完全整合到 MIDP 裝置中;但此其他 API 將 JavaPhone 的其餘部分帶入 J2ME 平臺

隨著我們進入移動裝置的未來,J2ME 平臺的 Java 社群流程貢獻者一直在努力建立新的 JSR 來涵蓋移動技術的最新進展。例如

參考資料

[編輯 | 編輯原始碼]

商標宣告

[edit | edit source]

J2ME、Java 和所有基於 Java 的標識是 Sun Microsystems, Inc. 在美國和其他國家/地區的商標或註冊商標。

華夏公益教科書