| 概念 | 核心問題 | 驗證方式 |
| 繼承 vs 組合 | 為何 GoF 呼籲「優先組合」?Liskov 替換原則 (LSP) 如何指導? | 重構「繼承濫用」代碼為組合/策略模式 |
| 多態 | 靜態綁定 vs 動態綁定、虛方法表、方法覆寫 vs 多載 | 畫出雙親委派與方法調用的時序圖 |
| 抽象類 vs 介面 | Java 8+ default/static 方法後,介面能否完全取代抽象類? | 設計一個「插件系統」同時使用兩者 |
| 異常處理 | 受檢 vs 非受檢異常、try-with-resources、異常鏈、錯誤碼 vs 異常 | 實作統一異常處理框架 (ControllerAdvice) |
推薦:《Thinking in Java》第 6-10 章、《Effective Java》第 2、3、4 章。反覆閱讀、修改範例、預測輸出、驗證假設。
第四步:建立核心類庫「心智地圖」 (持續進行)
JDK 核心類庫 (rt.jar / jmods) 有數千個類,**切勿逐個記憶方法**。要建立「包級地圖」:知道每個包解決什麼問題、核心類是哪幾個、它們如何協作。
四大核心包 (必須畫出心智地圖)
java.lang -> Object, String, StringBuilder, Math, System, Thread, Class, Enum, Record, Throwable, StackWalker
java.util -> Collections Framework (List/Set/Map/Queue 實作), Stream, Optional, Date/Time (java.time), Concurrency (Executor, Future, CompletableFuture, Lock, AQS), SPI (ServiceLoader)
java.io/nio -> Stream/Reader/Writer, File, NIO.2 (Path, Files, Channel, Selector, AsynchronousChannel), 序列化
java.sql -> JDBC API (Connection, Statement, PreparedStatement, ResultSet, DataSource), 事務隔離級別
學習法:
- 瀏覽包摘要,列出核心類/介面/異常。
- 針對核心類:閱讀類級 Javadoc、建構子、關鍵方法、執行緒安全性說明。
- 寫微型驗證程式 (JUnit 測試) 驗證行為 (如
HashMap 擴容機制、ConcurrentHashMap 分段鎖/ CAS)。
- 遇到問題 → 查文檔/原始碼 → 更新心智地圖。
第五步:掃清實用邊緣包 (1-2 週)
按需掌握:java.text (格式化)、java.net (URL, HttpClient), javax.net.ssl (TLS), java.nio.channels (NIO 網路), javax.naming (JNDI), java.util.logging / log4j2/slf4j, java.security/crypto (加密), java.lang.instrument (Agent), jdk.jfr (Flight Recorder)。
第六步:Java Web 開發實戰 (2-4 週)
核心前提:精通 HTTP/1.1、HTTP/2、HTTPS、Cookie/Session、CORS、JWT/OAuth2、RESTful API 設計規範、OpenAPI/Swagger。
- Servlet API 核心類 (Servlet, Filter, Listener, Request/Response, Session, ServletContext) — 直接閱讀
javax.servlet / jakarta.servlet 文檔。
- Spring MVC / Spring Boot 實戰:Controller、ViewResolver、Interceptor、ExceptionHandler、Validator、OpenFeign、WebClient。
- **架構重點**:分層架構 (Controller-Service-Repository)、DTO/VO/Entity 轉換 (MapStruct)、事務邊界 (@Transactional)、冪等性設計、分頁/排序/過濾通用化。
第七步:J2EE/Jakarta EE 進階領域 (長期精進)
難度陡增,因為涉及多技術整合:
- JNDI:資源查找關鍵 (DataSource, JMS ConnectionFactory, EJB)。掌握
InitialContext、環境屬性、java:comp/env 命名空間。
- JTA (Jakarta Transactions):分布式事務 (XA)。理解
UserTransaction、TransactionManager、兩階段提交 (2PC)、@Transactional 傳播行為 (REQUIRED, REQUIRES_NEW, NESTED)。
- RMI / 序列化:EJB 遠程調用基礎。掌握
Remote 介面、Stub/Skeleton、序列化版本控制 (serialVersionUID)、安全風險 (反序列化漏洞)。
- JMS (Jakarta Messaging):P2P (Queue) vs Pub/Sub (Topic)、訊息確認模式、持久化訂閱、事務性訊息、Spring JmsTemplate 整合。
- EJB (Jakarta Enterprise Beans):Session Bean (Stateful/Stateless/Singleton)、Message-Driven Bean、CMP/BMP (歷史)、EJB 3.x 註解式開發、攔截器、Timer Service、Asynchronous 呼叫。
並行學習:UML (類圖、序列圖、部署圖)、設計模式 (GoF、J2EE Core Patterns)、架構風格 (六角形/洋蔥/整潔架構)、DDD 戰術建模、DevOps (Docker, K8s, CI/CD, GitOps)、可觀測性 (Metrics/Logs/Traces - Prometheus/Grafana/Jaeger)。
新疆域:Web Services 與雲原生
- SOAP (JAX-WS) vs REST (JAX-RS / Spring MVC) vs gRPC (Protobuf/HTTP2) vs GraphQL。
- WSDL/Schema 定義、契約優先 vs 代碼優先。
- Service Mesh (Istio/Linkerd)、Sidecar 模式、零信任網路。
結語
這條路徑不是線性的,而是螺旋上升的。**每一步都要「動手寫代碼、寫測試、讀原始碼、寫筆記、做分享」**。建立個人知識庫 (GitHub/Gitee/Blog/Obsidian),將碎片知識串聯成體系。下一站:方法篇,我們將揭秘「破壞式學習法」與高效資源獲取。
- 上一篇文章: Java 學習路徑圖譜(二):書籍篇——從入門到架構師的經典書單
- 下一篇文章: Java 學習路徑圖譜(四):方法篇——破壞式學習與資源地圖
Copyright ©
程式碼之家 All Rights Reserved