六年前,提到 Java Web 框架幾乎等同於 Struts 1.x——經典、統治級、無人質疑。時移世易,框架生態爆發式增長,選型反而讓人「心寒」。本文梳理主流框架演進脈絡,提供決策參考。
| 階段 | 代表框架 | 核心特徵 | 現狀 |
|---|---|---|---|
| 第一代 (Action 型) |
Struts 1.x | 單例 Action、表單 Bean、JSP 標籤庫、XML 大量配置 | EOL,僅存於舊系統維護 |
| 第二代 (組件/事件驅動) |
JSF、Tapestry、Wicket | 狀態化組件、事件模型、視圖狀態管理複雜 | JSF 仍用於企業級,Tapestry/Wicket 邊緣化 |
| 第三代 (MVC + IoC/AOP) |
Spring MVC、Struts 2、WebWork | POJO Controller、攔截器鏈、REST 支援、與 Spring 生態整合 | Spring MVC 為事實標準 |
| 第四代 (微服務/雲原生) |
Spring Boot、Micronaut、Quarkus、Vert.x | 自動配置、內嵌容器、GraalVM 原生編譯、反應式編程 | 新專案首選 |
| 替代賽道 | Play、Ninja、Ratpack、SparkJava | 函數式路由、非阻塞、輕量、Scala/Kotlin 優先 | 特定場景(高併發、響應式)採用 |
| 專案類型 | 推薦棧 | 核心理由 |
|---|---|---|
| 傳統企業級單體應用 (SSM 遷移、團隊熟悉 Spring) |
Spring Boot 3 + Spring MVC + Thymeleaf/JSP + MyBatis/JPA | 生態成熟、人才易招、長期支援、遷移平滑 |
| 微服務/雲原生新專案 | Spring Boot 3 + Spring Cloud / Spring Cloud Alibaba | 服務發現、配置中心、熔斷、追蹤一站式 |
| 高併發/即時/反應式系統 | Spring WebFlux / Vert.x / Micronaut / Quarkus | 非阻塞 I/O、低記憶體、GraalVM 原生映像 |
| 前後端分離(SPA/移動端) | Spring Boot (REST API) + React/Vue/Angular | 職責分離、獨立部署、多端複用 |
| 快速原型/內部工具/低代碼 | JHipster / CUBA Platform / Jeecg-Boot | 代碼生成、CRUD 自動化、開箱即用 |
| 極致輕量/Serverless/Function | SparkJava / Ratpack / Micronaut | 啟動快、記憶體小、適合 FaaS |
「最好的框架是團隊最熟悉、能按時交付、滿足非功能需求、且有長期社區支援的那一個。」
Java Web 框架歷經「百花齊放」到「Spring 一統」的演進,本質是生態系統競爭的結果。選型不再是技術比較,而是業務場景、團隊能力、長期演進的綜合博弈。願每位架構師都能在「魚與熊掌」間,找到屬於自己的「青菜蘿卜」——踏實、好用、能陪伴系統走過下一個五年。