J2EE (現 Jakarta EE) 定義了企業級應用的標準化技術體系。本文系統梳理 13 大核心規範的定位、關係、典型場景與現代演進,構建完整知識地圖。
| 類別 | 技術規範 | 核心定位 | 現代替代/演進 |
|---|---|---|---|
| 數據訪問 | JDBC | 關係數據庫統一 API | JPA/Hibernate, MyBatis, jOOQ, R2DBC |
| JPA | 對象關係映射標準 | Hibernate, EclipseLink, Spring Data JPA | |
| JTA | 分布式事務邊界控制 | Atomikos, Bitronix, Seata, 本地事務 | |
| 命名發現 | JNDI | 統一命名目錄接口 | Spring DI, Consul, Nacos, Kubernetes Service |
| Java IDL/CORBA | 異構系統互操作 | gRPC, Thrift, REST, GraphQL | |
| 組件模型 | EJB | 企業級業務組件 (事務、安全、並發) | Spring Bean + @Transactional, 微服務 |
| JavaBeans | 可復用組件規範 | POJO, Lombok, Record (Java 14+) | |
| Connectors (JCA) | 企業信息系統適配器 | Kafka Connect, Debezium, Camel | |
| Web 技術 | Servlet | HTTP 請求處理基礎 | Spring MVC, WebFlux, Jakarta Faces |
| JSP | 動態頁面模板 | Thymeleaf, FreeMarker, React/Vue 前後端分離 | |
| JSTL/EL | 標準標簽庫/表達式語言 | 現代模板引擎內建 | |
| 消息通訊 | JMS | 消息中介標準 API | Spring JMS, Kafka, RabbitMQ, Pulsar |
| Jakarta Messaging | JMS 3.0+ 現代化 | 反應式流、簡化 API | |
| 郵件激活 | JavaMail | 郵件發送接收標準 | Jakarta Mail, Spring Mail, 郵件服務商 SDK |
| JAF | 數據內容處理框架 | MIME 類型檢測、DataHandler | Apache Tika, 標準庫 MIME 工具 |
| 遠程調用 | RMI/RMI-IIOP | Java 遠程方法調用 | gRPC, Dubbo, Spring Cloud OpenFeign, REST |
| 事務服務 | JTS | JTA 的 CORBA 事務實現 | Narayana, 很少直接使用 |
// 資源配置 (Tomcat context.xml)
<Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="root" password="secret" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"/>
// 代碼查找
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MyDB");
// Spring 注入: @Resource(name="jdbc/MyDB") DataSource dataSource;
現代替代:Spring `@Value`/`@ConfigurationProperties` 讀取配置,構建 `DataSource` Bean,容器無關。
| 類型 | 用途 | 現代對應 |
|---|---|---|
| Session Bean (Stateless/Stateful) | 業務邏輯封裝 | Spring Service + @Transactional |
| Message Driven Bean (MDB) | 異步消息消費 | @JmsListener / @KafkaListener |
| Entity Bean (CMP/BMP) | 持久化實體 | JPA Entity (已廢除) |