前言
本文整理自 2006 年左右對 12 位主流 Java Web 框架作者/核心貢獻者的訪談,探討各框架的「Sweet Spot」(甜蜜點/最佳適用場景)、不適用場景、對手評價、未來規劃與 Ajax 支援等。雖年代久遠,但框架設計哲學與權衡思維仍具參考價值。
受訪框架與代表
| 框架 | 受訪者 |
| JSF | Jacob Hookom |
| RIFE | Geert Bevin |
| Seam | Gavin King |
| Spring MVC / Web Flow | Rob Harrop, Keith Donald |
| Stripes | Tim Fennell |
| Struts Action 1 | Don Brown |
| Tapestry | Howard Lewis Ship |
| Trails | Chris Nelson |
| WebWork | Patrick Lightbody |
| Wicket | Eelco Hillenius |
核心觀點摘要
JSF (Jacob Hookom)
- 甜蜜點: 瀏覽器端行為需如桌面應用般豐富、標準化、第三方元件生態豐富、降低 View/Action/參數/狀態/渲染複雜度。
- 不適用: 大型唯讀/讀多寫少網站 → 推薦 Struts(文檔/社群成熟)。
- 競品看法: Seam 簡單但大專案缺模組化範例;Struts 文檔豐富但狀態/行為分離教條;WebWork 易用但複雜 UI 維護難;Tapestry 概念新但仍綁定 page/action。
- 未來: JSF 2.0 將提供 Partial Faces Request(Ajax 實作)、增強 Annotation 元件編程。
RIFE (Geert Bevin)
- 甜蜜點: 10% 功力得 90% 效果的全棧框架(類 RoR),整合成熟分層架構優點:Web Continuation、POJO 驅動 CRUD、可擴充元件架構、無 Session 狀態控制、REST 導向、雙向無邏輯模板、內容管理整合、多層次可復用元件(AOP、Site、Widget、Portlet 等)。適合團隊快速開發公開 Web 專案、愛好可復用元件者。
- 不適用: 團隊皆熟其他框架、需開發伺服端狀態元件而非 RIA/Ajax、重視第三方支援 → 推薦 JSF 或 Cocoon(XML 導向)。
- 未來: 整合 DWR 作為 Ajax 方案。
其餘框架重點
- Seam (Gavin King): 強調簡單直接、整合 EJB3/JSF、針對大專案模組化仍在演進。
- Spring MVC/Web Flow (Rob Harrop, Keith Donald): 非侵入式、POJO 導向、Web Flow 處理會話式流程。
- Stripes (Tim Fennell): 約定優於配置、單一 Action 類處理多事件、極簡配置。
- Struts 1 (Don Brown): 成熟穩定、巨大知識庫、但 ActionForm/配置繁瑣。
- Tapestry (Howard Lewis Ship): 元件化、狀態管理獨特、學習曲線陡峭。
- WebWork (Patrick Lightbody): 攔截器鏈、OGNL 表達式、後來併入 Struts 2。
- Wicket (Eelco Hillenius): 純 Java/HTML 分離、元件導向、無 XML 配置(早期版本)。
共同趨勢觀察
- Ajax 整合 成為標配:JSF 2.0 Partial Request、RIFE 整合 DWR、其餘框架皆規劃原生支援。
- Annotation/元件化 取代 XML 配置成為主流方向。
- Convention over Configuration (CoC) 受 RoR 影響廣泛採納。
- 全棧 vs. 專注:RIFE/Seam 走全棧,Spring/Stripes/Wicket 專注特定層次。
給現代開發者的啟示
雖然具體框架版本已迭代多代,但「找準框架甜蜜點、匹配專案屬性、評估團隊熟悉度、考量生態成熟度」的決策框架永不過時。現代 Spring Boot、Quarkus、Micronaut 等框架同樣面臨:啟動速度 vs. 功能完整度、標準化 vs. 靈活性、社群生態 vs. 學習成本 的權衡。