文檔教你「怎麼用」,原始碼教你「為什麼這樣設計」。J2EE 規範龐雜,單靠 API 文檔無法建立系統性認知。研讀成熟開源專案,能同時學到:架構模式、併發控制、資源管理、擴展機制、效能調優——這些是面試與架構師進階的核心競爭力。
| 專案 | 代碼規模 | 學習重點 | 推薦指數 |
|---|---|---|---|
| Jetty | ~1K 檔案 | NIO 非阻塞、Handler 鏈、JMX 管理、OSGi 整合 | ⭐⭐⭐⭐⭐ (入門首選) |
| Jigsaw (W3C) | ~1K 檔案 | HTTP/1.1 完整實作、資源框架、未來 Web 標準前瞻 | ⭐⭐⭐⭐ |
| Jo! | 小型 | Servlet 2.2/JSP 1.1 精簡實作、熱部署、Swing 控制台 | ⭐⭐⭐ (Tomcat 前哨) |
| Tomcat | ~4K 檔案 | 連接器架構、類載入器隔離、Session 複製、Cluster、JASPIC | ⭐⭐⭐⭐ (必讀,但需先有基礎) |
策略:先啃 Jetty/Jigsaw 建立 HTTP 容器心智模型,再攻 Tomcat 核心模組 (Coyote、Catalina、Jasper)。
| 專案 | 特色 | 代碼規模 | 建議順序 |
|---|---|---|---|
| HSQLDB (HyperSQL) | 純 Java、ANSI SQL-92、嵌入式/Server 模式、~160KB | ~1.6K 檔案 | 第 1 個資料庫專案 |
| H2 Database | 現代化、MVCC、相容 PostgreSQL、控制台豐富 | ~2K 檔案 | 第 2 個 |
| Apache Derby | IBM 捐贈、JDK 6 內建、企業級品質 | ~15K 檔案 (含註解) | 挑戰極限者 |
閱讀 Derby 全部原始碼約需 1 年,兩種結局:成為資料庫頂尖專家,或瘋掉。建議先精通 HSQLDB/H2 核心模組 (解析器、優化器、儲存引擎、鎖管理)。
| 專案 | 特色 | 代碼規模 | 學習價值 |
|---|---|---|---|
| MOM4J | JMS 1.1 完整、檔案系統儲存、命名服務、~250 檔案 | 極小 | 極高 (核心架構一目了然) |
| OpenJMS | PTP/Pub-Sub、JDBC 持久化、管理主控台、多協定 | ~1.6K 檔案 | 高 (含 JNDI、網路通訊細節) |
| ActiveMQ | Apache 頂級、JMS 1.1、與 Camel/Karaf/Geronimo 整合 | 大型 | 生產級參考 |
推薦路徑:MOM4J → OpenJMS → ActiveMQ 核心模組。
| 專案 | 定位 | 核心學習點 |
|---|---|---|
| EasyBeans (ObjectWeb) | 輕量 EJB 3 容器 | 網路編程、RMI、容器狀態管理、~600 檔案 |
| OpenEJB | 可嵌入 EJB 容器 | Apple WebObjects 採用、插入式架構 |
| JBoss (WildFly) | 全功能 J2EE/EE 伺服器 | JMX 微核心、SOA、統一類載入、熱部署、AOP、叢集 |
| JOnAS (ObjectWeb) | J2EE 實作 | 整合 Tomcat/Jetty、完整 API 堆疊 |
| Apache Geronimo | 整合型伺服器 | 統一部署模型、預整合開源組件、Apache 授權 |
JBoss 代碼龐大,建議從 JMX 微核心、MC (Microcontainer)、部署掃描器、類載入器隔離 切入。
無論走到哪層,以下基礎功夫決定上限:
HashMap 擴容、ThreadPoolExecutor 執行流程、ClassLoader 雙親委派,談何 J2EE。記住:我們是 IT 後進國的外包從業者,更要先站在巨人肩膀上,消化吸收再創新。閉門造車只會造出方輪子。