首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 是什麼?架構詳解:Configuration、Profile、Optional Package 三層體系

     編輯:J2ME

定義與定位

J2ME (Java 2 Micro Edition) 是 Java 2 平台的三大版本之一,與 J2SE (Standard)、J2EE (Enterprise) 齊名。Sun 官方定義:「高度優化的 Java 運行環境,針對消費性電子設備:蜂窩電話、PDA、機頂盒、車載導航等。」 1999 年 JavaOne 大會正式發布,核心目標:將 Java「一次編寫,到處運行」特性帶入資源受限嵌入式裝置。

設計哲學:一套規格不適配所有裝置

「對於各種不同的裝置而造出一個單一的開發系統是沒有意義的事。」

嵌入式裝置差異極大:

三層架構體系

第一層:Configuration (配置) — 縱向分層,定義「底座」

規範:虛擬機特性 + 核心類庫子集 + IO 基礎

維度低階裝置 (手機、PDA)高階裝置 (機頂盒、車載、智能家電)
運算能力極低 (MHz 級 CPU、無 FPU)較強 (百 MHz+、可能有 FPU)
記憶體128KB-2MB RAM/ROM2MB-32MB+
電源電池供電、極嚴格功耗控制市電/車載電、相對寬裕
顯示小螢幕、單色/低色深TV 輸出、高解析度、彩色
網絡間歇性、高延遲、GPRS/CSD持續連線、乙太網/有線寬頻
Configuration全稱目標裝置核心類庫擴展類庫VM 特性
CLDCConnected Limited Device Configuration手機、PDA、雙向傳呼機java.lang.* (子集)
java.io.* (子集)
java.util.* (子集)
javax.microedition.io.*KVM (Kilobyte VM)
無浮點、無 finalization、
無 JNI、無使用者定義類載入器
CDCConnected Device Configuration機頂盒、車載、智能家電、醫療設備幾乎完整 J2SE 核心庫javax.microedition.io.*
+ 更多標準擴展
CVM (Compact VM)
支援浮點、JNI、完整反射、
類載入器、最終化

關鍵點:CLDC 1.0 無浮點運算(整數模擬),CLDC 1.1 新增浮點支援。CDC 基本相當於精簡版 J2SE。

第二層:Profile (配置檔) — 橫向分層,定義「領域能力」

建立在 Configuration 之上,提供特定領域 API:UI、持久化、網絡、多媒體

基礎 ConfigurationProfile全稱核心 API 套件典型裝置
CLDCMIDPMobile Information Device Profilejavax.microedition.lcdui (高層/低層 UI)
javax.microedition.rms (RMS 持久化)
javax.microedition.midlet (MIDlet 生命周期)
javax.microedition.media (MMAPI 多媒體)
手機、PDA (主流 J2ME 開發目標)
IMPInformation Module Profile針對無顯示/簡單顯示的嵌入式模組 (如自動販賣機、傳感器節點)工業控制、M2M 設備
CDCFoundationFoundation ProfileCDC 核心 + 基礎網絡/安全/管理 API高階嵌入式通用基座
Personal BasisPersonal Basis ProfileFoundation + AWT 精簡版 (輕量 UI)機頂盒、車載導航
PersonalPersonal ProfilePersonal Basis + 完整 AWT + Applet 支援高效能嵌入式、瘦客戶機

MIDP 版本演進:MIDP 1.0 (基礎 UI/RMS) → MIDP 2.0 (GameCanvas、MMAPI、WMA、PushRegistry、HTTPS、信任域) → MIDP 3.0 (JSR 271,多任務、豐富 UI、服務發現) —— 但廣泛部署仍以 MIDP 2.0/CLDC 1.1 為主。

第三層:Optional Packages (可選包) — 模組化擴展

獨立於 Configuration/Profile,按需引入:

JSR名稱功能領域適用配置
JSR 75PDA Optional Packages (PIM/FileConnection)通訊錄/行程表/檔案系統存取CLDC/MIDP
JSR 82Bluetooth API (JABWT)藍牙通訊、服務發現、L2CAP/RFCOMM/OBEXCLDC/MIDP
JSR 135Mobile Media API (MMAPI)音訊/視訊播放錄製、MIDI、音效控制CLDC/MIDP
JSR 172Web Services API (JAX-RPC/SAAJ subset)SOAP/HTTP 呼叫 Web Service、XML 解析CLDC/MIDP
JSR 177SATSA (Security and Trust Services API)加密、簽名、金鑰管理、智慧卡存取 (APDU/JCRMI/PKI)CLDC/MIDP
JSR 179Location API (LAPI)GPS/基地台/定位、地標、路徑CLDC/MIDP
JSR 184Mobile 3D Graphics (M3G)3D 場景圖、網格、動畫、材質、光照CLDC/MIDP
JSR 205WMA 2.0 (Wireless Messaging API)SMS/CBS/MMS 收發、多部分訊息CLDC/MIDP
JSR 211Content Handler API (CHAPI)內容類型關聯、應用啟動傳遞資料CLDC/MIDP
JSR 226Scalable 2D Vector Graphics (SVG Tiny)SVG 向量圖渲染、動畫、腳本CLDC/MIDP
JSR 234Advanced Multimedia Supplements (AMMS)3D 音訊、音效處理、MIDI 控制、攝像頭控制CLDC/MIDP
JSR 238Mobile Internationalization API多語言、地區格式、複雜文字佈局CLDC/MIDP
JSR 248Mobile Sensor API加速度計、指南針、壓力、溫度等感測器CLDC/MIDP
JSR 256Mobile Sensor API 2.0增強感測器支援、數據過濾、融合CLDC/MIDP
JSR 257Contactless Communication API (NFC)NFC 標籤讀寫、P2P、卡模擬CLDC/MIDP
JSR 268Mobile Broadcast Service APIDVB-H/ISDB-T/媒體廣播服務CLDC/MIDP

開發工具鏈

  • 基礎:JDK + Sun Java Wireless Toolkit (WTK) — 含模擬器、編譯器、預驗證器、打包工具
  • IDE 整合:Eclipse + EclipseME / NetBeans Mobility Pack / IntelliJ IDEA (早期版本)
  • 廠商 SDK:Nokia S40/S60 SDK、Sony Ericsson SDK、Motorola SDK、Siemens SDK、BlackBerry JDE — 提供真實裝置皮膚、專屬 API、效能分析器

J2ME vs J2SE vs J2EE 對比

維度J2SEJ2EEJ2ME
目標桌面/伺服器通用企業級分散式系統資源受限嵌入式/行動裝置
運行環境JRE (完整)Application Server + JREKVM/CVM + Profile 實現
核心類庫完整 rt.jarJ2SE + 企業 API (EJB/JMS/JTA...)核心子集 + Profile API
記憶體MB~GBGB+KB~MB
部署單元.jar / .exe.ear / .war / .jar.jar + .jad (OTA)
生命周期main() 線程容器管理 (Servlet/EJB 生命周期)MIDlet 生命周期 (AMS 管理)

歷史地位與現代啟示

J2ME 曾佔據全球手機應用 90%+ 市佔 (2003-2009),孕育了《貪食蛇》、《愤怒的小鳥》早期版本、Opera Mini、Google Maps Mobile、無數銀行/支付/即時通訊客戶端。2007 年 iPhone、2008 年 Android 發布後迅速邊緣化。

遺產:

  • Profile/Configuration 模組化架構 → Android 模組化、OSGi、Java 9 JPMS (Jigsaw) 的思想源頭
  • 受限資源工程實踐:ProGuard、AOT 編譯、定點數運算、對象池、二進制協議 — 直接傳承至 Android ART、iOS、IoT、WebAssembly
  • OTA 部署模型:JAD/JAR → 現代 App Store/Play Store/微信小程序分包下載的鼻祖
  • 安全沙箱:MIDlet 信任域、簽名驗證 → Android 權限模型、iOS Sandbox

結語

J2ME 不僅是一段歷史,更是「在極致約束下實現通用計算」的經典案例。其三層架構體現了軟體工程中「分離關注點、分層抽象、標準化介面」的最高原則。研讀 J2ME 規格與實踐,能讓現代開發者在面對邊緣計算、嵌入式 AI、WebAssembly、微服務拆分等新挑戰時,擁有更深厚的架構直覺與工程智慧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved