Java 企業級開發長期以「複雜」著稱。隨著 Java EE 5/6 的發布,Sun 試圖通過 JSF (JavaServer Faces) 這一強制規範,對抗 .NET 2.0 帶來的衝擊,企圖在桌面開發佔據一席之地,並鞏固企業級 Web 應用市場。2007 年,Sun 寄望 JSF 打一場翻身仗。然而,歷史的車輪並非單一技術所能扭轉。
1997 年 Servlet API 讓純 Java 編寫企業 Web 應用成為可能,但嵌入 HTML 極其痛苦。1999 年 JSP 1.0 面世,配合 JSTL 2.0 簡化表達式,JSP 憑藉成熟、穩定、跨平台佔據 80% 以上企業應用市場,成為當之無愧的王者。
早期 JSP 混雜業務邏輯導致維護噩夢。Model 2 (MVC) 引入 Servlet 控制器分離關注點,但 Servlet 類爆炸、流程硬編碼、配置繁瑣。前端控制器模式應運而生,Struts 1.x 憑藉豐富標籤庫、頁面流程配置、自動數據綁定與驗證、國際化支援,迅速成為最流行、壽命最長的 Java 開源 Web 框架。
Struts 依賴繼承擴展難、測試難、綁定僅支持 String、標籤庫與 JSTL 重疊且處理 Null 差、僅支援 JSP 視圖、異常處理弱。WebWork 雖架構優雅 (Command 模式、攔截器、IOC、多視圖),但文檔匱乏、客戶端驗證弱、Velocity 模板複雜、強制 Command 模式。Spring MVC 作為「黑馬」,天生整合 IOC/AOP,支援多視圖、原生 POJO 綁定、靈活擴展、優雅異常處理,但因起步晚、配置複雜、文檔相對較少、學習曲線陡峭,未能大規模普及。
ASP.NET 以組件化、事件驅動模型、豐富伺服器控件 (DataGrid 等)、強大 IDE (VS 2003/2005) 大幅降低開發門檻,迅速蠶食中小企業市場。啟示極其深刻:廠商提供豐富實用組件 + 優秀 IDE 工具鏈 = 開發效率質變。基於請求驅動的 JSP/ASP 模式將退出歷史舞台,面向組件、事件驅動是 Web 發展必然方向。
Web 開發必將走向組件化、事件驅動時代,JSF 作為 Java 陣營標準擁有先進基因。但能否「拯救 Web 江湖」,取決於生態能否爆發、工具鏈能否趕上、商業推廣能否發力。讓我們共同拭目以待。