認知框架:Java 三大版本定位
| 版本 | 全稱 | 核心領域 | 典型應用 |
| J2SE | Java 2 Platform, Standard Edition | 核心語言、基礎類庫、桌面 GUI | 桌面應用、工具開發、嵌入式基礎 |
| J2ME | Java 2 Platform, Micro Edition | 受限設備配置 (CLDC/CDC)、MIDP | 功能機、早期嵌入式、已被 Android 取代 |
| J2EE | Java 2 Platform, Enterprise Edition | 分布式組件模型、中間件服務、Web 服務 | 電商、ERP、CRM、銀行核心、大型門戶 |
鐵律:J2EE 大廈建立在 J2SE 基石之上。J2SE 不扎實,J2EE 學翪必崩塌。
階段零:J2SE 內功修煉 (3-6 個月)
學習原則
- 拒絕 IDE 依賴:前期用 javac/java/javadoc/jar/apt 命令行,理解 CLASSPATH、模塊路徑、包機制、編譯單元
- 精讀經典:《Java 核心技術 卷 I/II》(Cay Horstmann),《Effective Java》(Joshua Bloch),《Java 并发编程实战》(Brian Goetz)
- 源碼級掌握:
java.lang (Object/String/Thread/ClassLoader/反射)、java.util (Collections/Concurrent/Stream/Time)、java.io/nio (流/通道/選擇器/文件鎖)、java.net (Socket/URL/HTTPClient)、java.sql (JDBC SPI/驅動/連接池)
- 動手重造輪子:手寫 ArrayList/HashMap/ThreadPool/簡易 RPC/類加載器/注解處理器
階段一:IDE 與服務器選型 (1-2 週)
| 工具 | 推薦 | 理由 |
| IDE | IntelliJ IDEA Ultimate | 智能提示、重構、調試、框架集成、數據庫工具、Spring/Docker/K8s 插件生態最強 |
| Web 容器 | Tomcat 9/10 | Servlet/JSP 參考實現、輕量、生產廣泛使用、學習 Web 核心必備 |
| 應用服務器 | WildFly (JBoss) / OpenLiberty | Java EE/Jakarta EE 全棧、開源、模塊化、開發者友好、避開 WebLogic/WebSphere 商業授權陷阱 |
核心心法:工具服務於理解原理。配置問題問資深同事/官方文檔/StackOverflow,勿在配置細節耗費大量時間。原理 > 配置。
階段二:Web 基礎與 Servlet/JSP 精通 (1-2 個月)
必修知識點
- HTTP/1.1 協議:請求/響應結構、Header、Cookie、Session、緩存、壓縮、Keep-Alive、Chunked、Upgrade (WebSocket)
- HTML5/CSS3/JavaScript (ES6+):語義化標籤、Flex/Grid 佈局、Fetch/Axios、模塊化、虛擬 DOM 概念
- Servlet 規範:生命周期、Filter 鏈、Listener、AsyncContext、ServletContainerInitializer、
web.xml vs 註解配置
- JSP 引擎:編譯為 Servlet、指令/腳本/動作/EL/JSTL、標簽文件/簡單標簽/標簽庫描述符
- MVC 手工實現:Front Controller → Dispatcher → Controller → Service → DAO → ViewResolver → JSP
推薦教材
Head First Servlets & JSP (入門神書、SCWCD 考試指南)
Java Servlet Programming (O'Reilly, Jason Hunter)
JSP 設計 (Hans Bergsten, O'Reilly)
階段三:數據訪問與持久化 (1-2 個月)
| 層次 | 技術 | 核心掌握點 |
| JDBC 原生 | DriverManager/DataSource, PreparedStatement, ResultSet, Transaction, Batch, Metadata | 連接池原理、SQL 注入防範、事務隔離級別、死鎖分析 |
| 連接池 | HikariCP (默認首選)、Druid (監控強) | 配置調優、洩漏檢測、慢 SQL 統計、熔斷降級 |
| ORM 框架 | Hibernate/JPA、MyBatis | Session/EntityManager 生命周期、三態對象、延遲加載/N+1、一級/二級緩存、樂觀鎖、HQL/JPQL/Criteria、映射策略 |
| 分庫分表 | ShardingSphere、MyCat | 分片算法、分布式事務、讀寫分離、影子表壓測 |
階段四:核心框架生態 (3-6 個月)
Spring 全家桶 (核心中的核心)
- IoC 容器:BeanDefinition、BeanFactory/ApplicationContext、生命周期回調、後置處理器、條件裝配、掃描機制
- AOP:JDK 動態代理/CGLIB、切點表達式、通知類型、@Transactional 實現原理
- 事務管理:PlatformTransactionManager、傳播行為、隔離級別、編程式/聲明式、分布式事務 (JTA/Seata)
- Spring MVC:DispatcherServlet、HandlerMapping/Adapter、參數解析/返回值處理、異常解析、攔截器、異步處理、WebFlux 響應式
- Spring Boot:自動配置、Starter、Actuator、配置屬性綁定、測試切片、Docker 原生構建
- Spring Cloud:服務發現 (Nacos/Eureka)、配置中心、網關、熔斷限流、鏈路追蹤、分布式事務
Web 框架對比
| 框架 | 定位 | 學習建議 |
| Struts 2 | 經典 Action-based MVC | 了解攔截器鏈、值棧、OGNL、結果類型,歷史項目維護必備 |
| Spring MVC | 企業級標準選擇 | 深度掌握,源碼級理解分發鏈 |
| Spring WebFlux | 響應式非阻塞 | Reactor 流式編程、Netty 事件循環、背壓控制 |
| JAX-RS (Jersey/RESTEasy) | 標準 REST API | 微服務接口定義標準 |
階段五:分布式系統核心能力 (長期精進)
| 能力域 | 核心技術/理論 | 實戰項目 |
| 服務治理 | 註冊發現、負載均衡、熔斷限流、超時重試、幂等設計、灰度發布 | 構建微服務骨架、接入 Nacos/Sentinel/SkyWalking |
| 消息驅動 | Kafka/RocketMQ/RabbitMQ、事務消息、順序消息、延遲消息、死信隊列、流處理 (KSQL/Flink) | 異步訂單系統、事件溯源重構、實時數據管道 |
| 分布式事務 | XA/JTA、TCC、Saga、本地消息表、Seata AT/AT 模式 | 跨服務轉賬、庫存扣減、優惠券發放 |
| 緩存體系 | Redis Cluster、多級緩存、一致性協議、熱點探測、緩存穿透/雪崩/擊穿治理 | 商品詳情頁極致優化、排行榜實時計算 |
| 數據庫中間件 | ShardingSphere、分布式 SQL、讀寫分離、影子庫、數據遷移 | 千萬用戶分庫分表上線 |
| 可觀測性 | Metrics (Prometheus)、Logging (ELK/Loki)、Tracing (SkyWalking/Jaeger)、Profiling (Async Profiler) | 全鏈路監控體系建設 |
| 容器化運維 | Docker、Kubernetes、Helm、Operator、Service Mesh (Istio/Linkerd)、GitOps (ArgoCD) | 生產環境 K8s 集群治理 |
階段六:開源項目研讀方法論 (贯穿始終)
- 選項目:核心組件 (Spring Core、HikariCP、Netty、Redis Client、ShardingSphere)
- 畫架構圖:模塊劃分、類圖、時序圖、線程模型
- 跑測試:單元測試即最佳文檔,斷點調試核心流程
- 挖設計模式:工廠、策略、模板方法、觀察者、責任鏈、適配器、裝飾器、代理
- 問三個為什麼:為什麼這樣設計?還有什麼方案?為什麼捨棄它們?
- 寫分析筆記:輸出博客/技術文檔,倒逼深度理解
- 回饋社區:提 Issue、修 Bug、補文檔、翻譯、分享
必讀開源項目清單 (按依賴層級)
- 基礎設施:HikariCP、Commons Pool2、Disruptor、Netty、SnakeYAML、FastJSON/Jackson
- 框架核心:Spring Framework (core/beans/context/aop/tx/web)、MyBatis、Hibernate ORM
- 中間件:RocketMQ/Kafka Client、ShardingSphere、Sentinel、Nacos、SkyWalking
- 服務器:Tomcat (Catalina/Connector/Valve/ClassLoader)、Jetty、Undertow
總結:學習心法十條
- 基礎決定上限:J2SE 源碼級掌握是所有高級能力的前提
- 原理大於 API:知其然更要知其所以然,框架源碼是最好的教材
- 動手大於閱讀:重寫核心組件、構建微型框架、壓測調優
- 體系大於碎片:構建知識圖譜,而非收集孤立技巧
- 業務大於技術:技術服務於業務價值,架構源於業務邊界劃分
- 標準大於實現:JSR 規範 > 具體框架,遷移彈性來自標準依賴
- 演進大於重寫:漸進式重構、綠色部署、向後兼容
- 開源大於閉源:擁抱開源生態,貢獻回饋,站在巨人肩膀上
- 分享大於獨享:寫作倒逼思考,教學相長,構建個人技術品牌
- 堅持大於爆發:每天 1 小時源碼閱讀,十年成專家
「無他,唯手熟爾。」—— 從 API 包名困惑到架構師從容抉擇,中間隔著無數個深夜的源碼閱讀、無數次壓測調優、無數輪重構演進。路在腳下,行則將至。