Sun ONE (Open Net Environment) 架構以 Java 為核心,根據應用領域劃分為三大平台版本:
註:Java 5 (2004) 起更名為 Java SE / EE / ME,但「J2SE/J2EE/J2ME」稱呼仍廣泛沿用。
| 層級 | 技術 | 角色 |
|---|---|---|
| Web 表示 | Servlet, JSP, JSF, JSTL | 請求處理、動態頁面渲染 |
| 商業邏輯 | EJB (Session/Entity/Message-Driven) | 交易、安全、遠程、持久化 |
| 資料存取 | JDBC, JPA, JDO | 關聯資料庫統一存取 |
| 整合通訊 | JMS, JCA, RMI-IIOP, JAX-WS/RS | 訊息佇列、資源適配器、Web Service |
| 命名目錄 | JNDI (LDAP, DNS, RMI Registry) | 統一查找資源/服務 |
| 郵件/事務 | JavaMail, JTA | 郵件收發、分散式事務 |
.ear (Enterprise Archive):完整應用,含 application.xml、多個模組.war (Web Archive):Web 模組,含 web.xml、JSP/類別/靜態資源.jar (EJB Jar):EJB 模組,含 ejb-jar.xml、類別.rar (Resource Adapter):JCA 適配器+------------------------+
| Profile (垂直領域) | 例:MIDP (手機), PDA Profile, Personal Profile
+------------------------+
| Configuration (水平) | 例:CLDC (160KB RAM), CDC (2MB+ RAM)
+------------------------+
| JVM (KVM/CVM) | 針對硬體移植的虛擬機
+------------------------+
| Host OS / HW |
+------------------------+
| 特性 | CLDC (Connected Limited Device Configuration) | CDC (Connected Device Configuration) |
|---|---|---|
| 目標裝置 | 手機、PDA、寵物追蹤器 (128KB~512KB RAM) | 機頂盒、車載系統、工業控制器 (2MB+ RAM) |
| VM | KVM (Kilobyte VM) | CVM (完整 HotSpot 子集) |
| 核心套件 | java.lang, java.util, java.io, javax.microedition (J2SE 子集) | 近乎完整 J2SE (含 AWT, RMI, Reflection) |
| 缺少功能 | AWT/Swing, 自訂 ClassLoader, finalize, 弱引用, RMI, Reflection | 極少 |
javax.microedition.lcdui (高/低階 UI)、RecordStore (RMS)、HttpConnection、Timer。GameCanvas、Layer/Sprite/TiledLayer、PushRegistry、HTTPS、Multimedia API (MMAPI)、Security/Trusted Domain。| 版本 | 年份 | 關鍵特性 |
|---|---|---|
| J2SE 1.4 | 2002 | NIO, Logging, Preferences, Assert, JSSE, JDBC 3.0, 正則表達式 |
| Java 5 (1.5) | 2004 | Generics, Enum, Annotation, Autoboxing, Varargs, Concurrency utils, JVM TI |
| Java 6 | 2006 | Scripting (JSR 223), Compiler API, JDBC 4.0, JAX-WS/WS, 大幅效能優化 |
| Java 7 | 2011 | NIO.2, Fork/Join, Try-with-resources, Diamond, invokedynamic, G1 GC |
| Java 8 | 2014 | Lambda, Stream, Default Method, Date/Time API, Nashorn, Metaspace 取代 PermGen |
| Java 11 (LTS) | 2018 | HTTP Client, var, String/Collection 新方法, Flight Recorder, 無 Java EE 模組 |
| Java 17 (LTS) | 2021 | Sealed Class, Pattern Matching, Records, Strong Encapsulation, macOS ARM 支援 |
| Java 21 (LTS) | 2023 | Virtual Threads (Project Loom), Structured Concurrency, String Templates, Sequenced Collections |
J2SE ⊇ J2ME (CLDC/MIDP 類庫為 J2SE 子集)
J2EE ⊇ J2SE (J2EE 容器運行在 J2SE 之上)
選型決策樹:
├─ 目標為手機/嵌入式/極限資源 → J2ME (CLDC/MIDP)
├─ 目標為桌面應用/獨立服務/建構工具 → J2SE
└─ 目標為企業級分散式/高併發/事務/整合 → J2EE (現代多用 Spring Boot / Jakarta EE 於 J2SE 之上實踐)
理解 J2SE/J2EE/J2ME 的定位邊界與技術棧,能幫助團隊在專案啟動時快速鎖定技術選型、避免過度設計。雖然品牌已更名為 Java SE/EE/ME,但三大版本「標準版為基、企業版為擴、微型版為縮」的核心關係至今未變。