面對龐雜的 J2EE 生態,初學者易迷失於術語叢林。本文從概念釐清、架構演進、框架選型三個維度,勾勒出通往高品質系統的清晰路徑。
核心概念釐清
- Java ≠ J2EE:Java 指語言與技術體系(對抗 .NET);J2EE 專指 Java 在 B/S 結構資訊系統上的標準實作。
- J2EE = 框架 + 標準:超越單純 API/函式庫,規範元件間協作契約。深入理解建議從設計模式切入。
- 三大子規範:Web 技術、EJB 技術、JMS。落地開發最終皆歸於此。
- 容器與應用分離:Web 容器、EJB 容器分別管理元件生命週期與服務(事務、安全等)。
JavaBeans 演進與 POJO/EJB 雙軌
JavaBeans 為元件基礎;EJB 強化企業級需求(可擴展、事務、安全);POJO(Plain Old Java Object)指不依賴特定框架的普通 JavaBeans。現代架構傾向輕量級容器管理 POJO(Spring 等)而非重量級 EJB,但 EJB 3.0 亦採 POJO 風格,雙軌長期共存。
三層架構落地:表現層、服務層、持久層
| 層次 | 職責 | 主流技術/框架 |
| 表現層 | 頁面渲染、請求分發、輸入驗證 | Struts, JSF, Spring MVC |
| 服務層 | 業務邏輯、事務邊界、安全 | Spring (IoC/AOP), EJB |
| 持久層 | 資料存取、ORM、快取 | Hibernate, iBatis/MyBatis, JPA |
關鍵在於解耦:層與層間透過介面依賴,而非具體實作。框架提供約束與膠水,降低耦合成本。
框架選型建議
- 表現層:Struts 成熟穩定;JSF 元件化但學習曲線陡峭。
- 服務層:Spring IoC/AOP 為事實標準,輕量靈活。
- 持久層:Hibernate 全功能 ORM;iBatis/MyBatis 保留 SQL 控制權;視專案特性抉擇。
避開陷阱,直達高品質
- 拒絕綁定特定資料庫:透過 JNDI/DataSource 取得連線,保持可移植性。
- 領域建模:用 UML/領域驅動設計精準理解業務,而非急著寫代碼。
- 設計模式內化:若想自研框架,必須精通模式實現元件級與模組級解耦。
J2EE 開發三件寶:Domain Model(領域建模)、Patterns(設計模式)、Framework(框架)。