前言
J2EE 技術棧龐雜,初學者易迷失於概念海洋。本文從易懂角度梳理核心概念,並闡述開發高品質 J2EE 系統的三大支柱:領域建模、設計模式、框架應用。
核心概念釐清
- Java vs J2EE:Java 是語言與生態系;J2EE 是針對企業級資料庫資訊系統 (B/S 架構) 的規範與框架集合。
- 三大子技術:Web (JSP/Servlet)、EJB、JMS。各技術包含「容器」與「應用」兩部分。
- JavaBeans 角色:POJO (Plain Old Java Object) 不依賴特定框架;EJB 是受容器管理、具備事務/安全的進階組件。兩者長期並存。
- 容器與伺服器:Tomcat/Resin 是 Web 容器;JBoss/WebLogic/WebSphere 提供 Web+EJB 完整容器。
- 資料來源解耦:透過 JNDI 從容器取得 DataSource,避免硬編碼 JDBC 驅動,提升可移植性。
架構分層:解耦的關鍵
衡量設計水準的標準是解耦程度。將系統抽象為三層:
- 表現層:Web 技術 (JSP/Servlet/Struts/JSF) 處理 UI 與請求分派。
- 服務層 (業務邏輯層):EJB 或 POJO 框架 (Spring, JdonFramework) 實作核心業務規則與事務管理。
- 持久層:Hibernate/iBatis/JDO/EJB CMP 負責物件關聯映射與資料庫操作。
分層目的:各層職責單一、介面穩定、可獨立替換實作。
框架選型觀念
- 服務層:EJB (標準、重量) vs Spring (POJO、輕量、IoC/AOP)。EJB 3.0 已吸收 IoC 概念,兩者界線模糊但會長期共存。
- 表現層:Struts 2 (Action 2) 廣泛使用;JSF 代表元件化新方向但學習曲線陡峭。
- 持久層:iBatis (SQL 掌控度高) vs Hibernate/JDO (全自動 ORM) vs EJB 3 JPA (標準化)。百花齊放,無單一標準。
誤區:「輕量級」非絕對優勢;EJB 3.0 同樣易用。選型應依團隊熟悉度、專案需求、長期維護性決定。
開發三寶:Domain Model + Patterns + Framework
- 領域建模:用 UML 理解業務需求,建立豐富領域模型 (而非貧血模型),是正確系統的基石。
- 設計模式:解決類別/模組間耦合的參考實作 (工廠、代理、策略、模板方法等)。
- 框架:將模式固化為可重用骨架,處理横切關注點 (事務、安全、記錄)。
進階建議
- 擺脫「Sun 認證思維」,擁抱開源生態 (Spring, Hibernate, Struts 等)。
- 若要自研行業框架,先精通設計模式與類別解耑技巧。
- 正確的業務需求理解是前提,領域驅動設計 (DDD) 提供方法論支撐。
掌握核心概念、分層架構、框架本質,並以領域建模為核心,即能在不深究所有細節的情況下開發出高品質、可維護、可擴展的 J2EE 系統。