| 領域 | 規範 (JSR) | 核心 API 包 | 主流實現 |
| Web 層 | Servlet 6.0 / JSP 3.1 / Faces 4.0 | jakarta.servlet.* | Tomcat 10+, Jetty 11+, Undertow |
| 依賴注入 | CDI 4.0 | jakarta.inject.*, jakarta.enterprise.* | Weld, OpenWebBeans |
| 持久化 | JPA 3.1 / NoSQL | jakarta.persistence.* | Hibernate, EclipseLink |
| 事務 | JTA 2.0 | jakarta.transaction.* | Narayana, Atomikos |
| 消息 | JMS 3.1 | jakarta.jms.* | ActiveMQ, RabbitMQ Client |
| REST | JAX-RS 3.1 | jakarta.ws.rs.* | RESTEasy, Jersey |
| 安全 | Security 3.0 / Authentication 3.0 | jakarta.security.* | Soteria |
| 批處理 | Batch 2.1 | jakarta.batch.* | JBeret |
| 配置 | Config 3.0 | jakarta.config.* | MicroProfile Config |
| JSON | JSON-B 3.0 / JSON-P 2.1 | jakarta.json.* | Yasson, Jackson |
關鍵轉折:Java EE → Jakarta EE
- Java EE 8 (2017):Oracle 最後版本,包
javax.*。
- 捐贈 Eclipse 基金會 (2018):更名 Jakarta EE,包遷移
javax.* → jakarta.* (EE 9, 2020)。
- Jakarta EE 10 (2022):基於 Java 11/17,支援 CDI 4.0、Servlet 6.0、JSON-B 3.0。
- MicroProfile:並行社區,專注微服務配置、健康檢查、容錯、Metrics、OpenTracing/OpenTelemetry,與 Jakarta EE 互補。
現代地位
「重規範、多實現、可組合」。Spring 生態雖非 Jakarta EE 認證兼容產品,但實現了絕大多數規範語義(如 Spring Data JPA 實現 JPA、Spring MVC 實現 Servlet/Web MVC)。Quarkus、Helidon、OpenLiberty 是原生兼容的新一代運行時。
四、Java ME:邊緣計算的前身
歷史定位
- CLDC (Connected Limited Device Configuration):極受限設備(160KB+ ROM, 32KB+ RAM),無浮點、無線程、子集 JVM (KVM)。
- CDC (Connected Device Configuration):較強設備(2MB+ ROM, 2.5MB+ RAM),完整 JVM 子集。
- MIDP (Mobile Information Device Profile):手機 UI、網絡、存儲 API,誕生了諾基亞 S40 時代的海量 Java 遊戲。
現狀與演進
- 智能機時代 (iOS/Android) 徹底終結 MIDP 應用生態。
- Oracle Java ME Embedded 8 (2014) 針對物聯網:支援 Raspberry Pi、Qualcomm、ARM Cortex-M/M4,整合 OSGi、安全模組、MQTT/CoAP。
- 現代物聯網邊緣計算主流:Eclipse Kura (OSGi/Java SE)、AWS Greengrass、Azure IoT Edge、嵌入式 Linux + Java SE (JLink 定製運行時)。
- Java ME 現主要用於智能卡 (Java Card)、極低功耗 MCU(配合專用 JVM 如 MicroEJ、ProGuard 優化)。
五、版本關係圖解
┌─────────────────────────────────────┐
│ Java SE (Foundation) │ ← 核心類庫、JVM、模組系統
│ java.*, jakarta.* (部分), javax.* │
└──────────────┬──────────────────────┘
│ extends / implements
┌──────────────▼──────────────────────┐
│ Jakarta EE (Specifications) │ ← 企業級 API 規範
│ Servlet, JPA, CDI, JAX-RS, JTA... │
└──────────────┬──────────────────────┘
│ implemented by
┌──────────────▼──────────────────────┐
│ Application Servers / Runtimes │
│ Tomcat, Jetty, WildFly, Liberty, │
│ Quarkus, Helidon, Spring Boot... │
└─────────────────────────────────────┘
Java ME: 獨立輕量級堆疊 (CLDC/CDC/MIDP) → 現代邊緣多用 Java SE 精簡版
六、選型決策指南 (2024 版)
| 項目類型 | 推薦基線 | 關鍵技術棧 | 說明 |
| 傳統單體企業應用 | Java SE 17/21 LTS | Spring Boot 3.x + Tomcat/Jetty + Jakarta EE API (Servlet/JPA/CDI) | 成熟穩定,生態豐富 |
| 雲原生微服務 | Java SE 21 LTS | Spring Boot 3.2+ / Quarkus 3.x / Helidon 4.x + GraalVM Native | 啟動快、內存低、虛擬線程高併發 |
| 高性能網關/代理 | Java SE 21 | Vert.x / Netty + GraalVM | 事件驅動、非阻塞 |
| 大數據/流處理 | Java SE 11/17 | Flink, Spark, Kafka Streams (依賴特定 JDK 版本) | 生態鎖定版本 |
| Android 應用 | Java SE 8 語法子集 | Kotlin (首選) / Java 8 + D8/R8 | Android 非標準 JVM |
| 物聯網邊緣網關 | Java SE 17/21 (jlink 定製) | Eclipse Kura / 自研 + 模組化運行時 | 精簡模組、啟動快 |
| 智能卡/安全元件 | Java Card 3.1 | Java Card API (極度子集) | 金融/身份認證 |
七、常見誤區澄清
- 誤區: Java EE 是一個產品/服務器。
真相: Java EE / Jakarta EE 是一組規範(接口、契約、行為定義)。Tomcat、WildFly、Liberty 是實現了這些規範的產品。
- 誤區: Spring 是 Java EE 的一部分/實現。
真相: Spring 是獨立框架生態,實現了類似功能但不完全遵循 Jakarta EE 認證流程。Spring 6 / Boot 3 基線要求 Jakarta EE 9+ (jakarta.* 命名空間)。
- 誤區: Java ME 已死,無需關注。
真相: Java ME 技術演進為Java SE 嵌入式精簡版 + Java Card,在物聯網安全、支付終端仍有不可替代地位。
- 誤區: 學習 Java EE 需先學完 Java SE 所有內容。
真相: 掌握 SE 核心(集合、併發、IO、JDBC、Lambda/Stream、模組)即可上手 EE 規範;邊用邊學更高效。
結語
Java SE / EE / ME 三版本分工明確:SE 是地基,EE 是商業大廈藍圖,ME 是專用微型設備套件。現代 Java 開發者 99% 時間在 SE 基石上構建應用,通過 Spring/Quarkus 等框架消費 EE 規範能力。理解三者關係、命名空間遷移 (javax→jakarta)、LTS 版本選型策略,能讓你在技術選型、面試溝通、架構演進中游刃有餘。下一代 Java(虛擬線程、結構化並發、模式匹配、值類型)將繼續在 SE 推進,並向上賦能 EE/雲原生生態。
- 上一篇文章: Java 驗證碼生成與驗證完整實現:Servlet、Spring MVC、前端交互一體化方案
- 下一篇文章: Java 正則表達式實戰總結:匹配、切割、替換三大核心操作與性能優化
Copyright ©
程式碼之家 All Rights Reserved