學習 J2EE 必須以扎實的 J2SE 為基礎,切勿本末倒置。
javac/java 體會編譯執行機制、CLASSPATH、包結構。| 模組 | 必會重點 |
|---|---|
| 語言基礎 | 泛型、註解、Lambda、Stream API、模組系統 (JPMS) |
| 集合框架 | ArrayList/LinkedList/HashMap/ConcurrentHashMap 源碼、擴容機制、線程安全 |
| 多線程併發 | JUC 包:AQS、鎖、線程池、CompletableFuture、並發集合 |
| IO/NIO/AIO | 零拷貝、選擇器、Netty 核心原理 |
| JVM 內存模型 | 類加載、垃圾回收 (G1/ZGC)、調優參數、故障診斷 (arthas/jstack) |
| 網路程式設計 | TCP/UDP、HTTP/2、序列化、RPC 原理 |
| 類型 | 推薦 | 定位 |
|---|---|---|
| Web 容器 | Tomcat 9/10 | 學習 Servlet/JSP/JSTL/EL 首選,輕量、文檔豐富 |
| 應用伺服器 | WildFly (JBoss) / OpenLiberty | 完整 J2EE/Jakarta EE 實作,開源、社群活躍、生產可用 |
| 商業選項 | WebLogic / WebSphere | 大型傳統企業標配,學習成本高,按需了解 |
建議:優先掌握 Tomcat + WildFly 組合。遇到配置問題先請教資深同事,一句話可省一天摸索;將時間投入原理學習而非工具折騰。
採用「學一點 API → 配置伺服器驗證 → 寫 Demo → 遇到問題查規格 → 研讀源碼」的迭代循環。
| API 領域 | 核心規格 | 推薦教材/實作 |
|---|---|---|
| Servlet/JSP | Servlet 4.0/5.0, JSP 2.3, JSTL 1.2 | O'Reilly《Java Servlet Programming》、《Head First Servlets & JSP》 |
| JDBC/JTA | JDBC 4.3, JTA 1.2 | 連線池原理、分散式交易、MyBatis 源碼 |
| JNDI | JNDI 1.2.1 | 命名服務、資源查找、LDAP 整合 |
| EJB/JPA | EJB 3.2, JPA 2.2 | 《Mastering EJB》(免費)、Hibernate 源碼、Spring Data JPA |
| JMS | JMS 2.0 | PTP/PubSub、可靠傳遞、ActiveMQ/RocketMQ 實戰 |
| Web Services | JAX-RS 2.1 (REST), JAX-WS 2.3 (SOAP) | RESTful 設計、OpenAPI/Swagger、gRPC |
| Security | JAAS, JACC, Jakarta Security | 認證授權、OAuth2/OpenID Connect、Spring Security |
| 其他 | JCA, JAF, JavaMail, JAXP, JAXB | 按專案需求點對點學習 |
「不懂設計模式寫 EJB,產出的只是一堆有 Bug 的垃圾代碼,不如不用 EJB。」
| 領域 | 主流方案 | 學習策略 |
|---|---|---|
| IoC/AOP 容器 | Spring Framework 5/6, Spring Boot 2/3 | 核心原理(Bean 生命週期、AOP 代理、事務管理)必讀源碼 |
| ORM/持久層 | Hibernate, MyBatis, JPA | 理解一級/二級快取、延遲載入、N+1 問題、SQL 優化 |
| Web MVC | Spring MVC, Spring WebFlux (Reactive) | 掌握同步阻塞 vs 非阻塞模型選型 |
| 微服務治理 | Spring Cloud Alibaba (Nacos/Sentinel/Seata), Dubbo 3, gRPC | 服務發現、配置中心、熔斷限流、分散式交易 (Saga/TCC) |
| 觀測運維 | Prometheus+Grafana, SkyWalking, ELK, Docker/K8s | 三大支柱:指標、日誌、鏈路追蹤 |
Jakarta Servlet 5.0 Jakarta Server Pages 3.0 Jakarta RESTful WS 2.1 Jakarta WebSocket 2.0 Jakarta JSON Binding 1.0 Jakarta JSON Processing 1.1 Jakarta Persistence 3.0 Jakarta Transactions 2.0 Jakarta Security 2.0 Jakarta Authentication 2.0 Jakarta Authorization 2.0 Jakarta Connectors 2.0 Jakarta Messaging 3.0 Jakarta Batch 2.0 Jakarta Concurrency 2.0 Jakarta Contexts/Dependency Injection 3.0 Jakarta Annotations 2.0 Jakarta Bean Validation 3.0
Java 語言本身不難,難在「技術廣度與深度的平衡」。初學者常問:「怎麼知道哪個方法在哪個包?」答案只有兩字——手熟。沿著上述路徑,腳踏實地、精讀源碼、實戰重構,J2EE 的大門自然為你敞開。祝你在企業級開發之路上行穩致遠。