研究 J2SE/J2EE 近三年,曾遍讀 Swing、RMI、Collections、JDBC、Servlet、JSP、JNDI 等 API 文檔,卻發現自己只是「API 呼叫者」而非「系統建構者」:知其然不知其所以然,寫不出超過幾百行的健壯程式。這段經歷揭示了技術學習的核心悖論——熟悉 API ≠ 掌握技術。
半年停滯於 EJB:介面卻無實作,令人抓狂。直到深入使用 Tomcat、Derby 等開源專案,才豁然開朗——J2EE 定義「契約」,廠商提供「實作」。Sun 制定規範,Apache、JBoss、ObjectWeb 等社群給出具體代碼。這一認知徹底改變學習路徑:從「背誦 API」轉向「研讀原始碼、理解設計意圖」。
研讀 JDK 集合、日誌、IO 源碼,發現 GoF 設計模式無處不在:
BufferedInputStream 包裝 FileInputStreamDriverManager.getConnection() 建立資料庫連線JdbcTemplate 固定 JDBC 流程,子類實作細節模式即思維,模式即哲學。唯有在真實專案中反覆踩坑、重構,才能內化為直覺。
| 專案 | 特色 | 源碼規模 | 推薦理由 |
|---|---|---|---|
| Tomcat | Servlet/JSP 參考實作,Sun 參與開發 | ~4000 頁 | 規範最新特性首發地,生產級品質 |
| Jetty | 嵌入式 HTTP/Servlet 容器 | ~1000 頁 | 架構簡潔,適合研讀容器核心原理 |
| Jigsaw | W3C 開發,HTTP/1.1 參考實作 | ~1000 頁 | 標準制定者視角,前瞻 Web 技術 |
| Jo! | 純 Java Web 伺服器,支援熱部署 | 較小 | 文檔完善,適合 Tomcat 前的入門研讀 |
| 專案 | 特色 | 源碼規模 | 推薦理由 |
|---|---|---|---|
| Hypersonic SQL (HSQLDB) | 純 Java 關聯式資料庫 | ~1600 頁 | 代碼精簡,支援 ANSI-92 SQL,適合初探資料庫內核 |
| Mckoi Database | GPL 純 Java 資料庫 | 相近 | 支援 Transaction、JDBC 3.0,可作替代研讀 |
| Apache Derby | IBM 捐贈,高品質嵌入式引擎 | ~15000 頁 | 企業級品質,研讀難度極高(需 3 年+),建議作終極目標 |
策略建議:先攻克 HSQLDB/Mckoi 建立信心,再挑戰 Derby。切記:不造輪子,先研讀優秀輪子的製造藝術。
無論技術棧如何演變,以下核心能力決定技術天花板:
J2SE 核心源碼 → 設計模式內化 → J2EE 規範與參考實作研讀
↓
Servlet 容器 → JDBC/連線池 → JMS → EJB 容器 → 完整 AS (JBoss/Geronimo)
↓
Spring 生態 → Hibernate/MyBatis → 分散式框架 (Dubbo/gRPC) → 微服務架構
↓
高併發調優 → JVM 內存模型 → 原始碼級除錯 → 架構師思維
技術海洋無涯,貪多嚼不爛。腳踏實地精通 J2SE 核心,研讀優秀開源源碼,理解設計模式在實戰中的權衡,才是從「碼農」進化為「架構師」的唯一捷徑。一切才剛剛開始,願同路人共勉。