J2ME (CLDC/MIDP) 是 Java SE 的嚴格子集,為適應嵌入式裝置資源限制,大量精簡了類庫與語法特性。從 J2SE 書籍學起會浪費大量時間在「用不到」的知識上。
| 領域 | 必會項目 | J2ME 差異備註 |
|---|---|---|
| 語法基礎 | 基本類型、運算符、流程控制、陣列、字串操作 | 無差異,但無 long 字面值需加 L 後綴 |
| 面向對象 | 類/介面/繼承/多態/封裝/建構子/靜態成員/內部類/匿名類 | 支援單繼承、介面多實現、多態;無反射 (MIDP 1.0),MIDP 2.0 僅 Class.forName() |
| 異常處理 | try-catch-finally、throw/throws、自定義異常、檢查型/非檢查型異常 | 完全相同,但無 Throwable 以外的 Error 體系簡化 |
| 多執行緒 | Thread/Runnable、start()/run()/sleep()/join()、synchronized、wait/notify、執行緒安全集合 | 核心差異:無 java.util.concurrent、無 ThreadGroup、無 InterruptedException 被中斷機制簡化、Thread.stop() 不建議用但未移除 |
| 集合框架 (精簡版) | Vector、Hashtable、Enumeration、Stack、Random | 無 ArrayList/LinkedList/HashMap/HashSet/Iterator,用 Vector+Enumeration 替代 |
| I/O 基礎 | InputStream/OutputStream、DataInput/DataOutput、ByteArrayInput/OutputStream | 無 File/RandomAccessFile (需 JSR 75)、無 Reader/Writer 體系 (用 DataInput/OutputStream + UTF-8) |
| 核心工具類 | System、Math (精簡)、String、StringBuffer、Date、Calendar、Random | Math 無 random(),用 Random;Date/Calendar 功能精簡 |
javac/java/jar/javadoc/jdb 等命令列操作 (WTK/IDE 自動化)。Frame/Panel/Button/LayoutManager 等桌面 GUI (J2ME 用 LCDUI)。java.applet.Applet 生命週期、瀏覽器嵌入 (已淘汰技術)。java.lang.reflect.*、Proxy (MIDP 1.0 無,2.0 極限)。URL/URLConnection/Socket 完整 API (J2ME 用 GCF Connector.open())。java.security.*、JCE (J2ME 用 JSR 177 SATSA 選配)。ResourceBundle/Locale (J2ME 用 RMS 儲存多語言字串)。| 套件 | 核心類別 | 用途 |
|---|---|---|
javax.microedition.midlet | MIDlet, MIDletStateChangeException | 應用生命週期 |
javax.microedition.lcdui | Display, Displayable, Screen, Form, List, TextBox, Alert, Canvas, Graphics, Image, Font, Command, Item, Ticker | UI (高層+低層) |
javax.microedition.rms | RecordStore, RecordEnumeration, RecordFilter, RecordComparator | 持久化儲存 |
javax.microedition.io | Connector, HttpConnection, StreamConnection, DatagramConnection, InputConnection, OutputConnection | 網絡 (GCF) |
javax.microedition.media | Manager, Player, PlayerListener, Control, VolumeControl | 多媒體 (MMAPI/JSR 135) |
javax.wireless.messaging | MessageConnection, TextMessage, BinaryMessage | SMS/MMS (WMA/JSR 120/205) |