現在Java web框架非常多,林林總總,讓很多人不知道選擇那個好:JSF、Spring MVC、Stripes、Struts
2、Tapestry和Wicket,他們都是各有千秋,面對各種問題,八仙過海,各顯神通。
這裡就小話一下他們的優缺點。
JSF
優點:
Java EE標准,這意味著有很大的市場需求和更多的工作機會
上手快速並且相對容易
有大量可用的組件庫
缺點:
大量的JSP標簽
對REST和安全支持不好
沒有一個統一的實現。既有SUN的實現,又有apache的實現——MyFaces。
國內的OperaMasks還支持AJax,以及有開發工具支持
Spring MVC
優點:
對覆蓋綁定(overriding binding)、驗證(validation)等提供生命周期管理
與許多表示層技術/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等
便於測試——歸功於IoC
缺點:
大量的XML配置文件
太過靈活——沒有公共的父控制器
沒有內置的AJax支持
Stripes (現已發布1.5版本)
優點:
不需要書寫XML配置文件
良好的學習文檔
社區成員很熱心
缺點:
社區比較小
不如其他的項目活躍
ActionBean裡面的URL是硬編碼的
Struts 2
優點:
架構簡單——易於擴展
標記庫很容易利用FreeMarker或者Velocity來定制
基於控制器或者基於頁面的導航
缺點:
文檔組織得很差
對新特征過分關注
通過Google搜索到的大多是Struts 1.x的文檔
Tapestry
優點:
一旦學會它,將極大地提高生產率
Html模板——對頁面設計師非常有利
每出一個新版本,都會有大量的創新
缺點:
文檔過於概念性,不夠實用
學習曲線陡峭
發行周期長——每年都有較大的升級
Wicket
優點:
對Java開發者有利(不是web開發者)
頁面和顯示綁定緊密
社區活躍——有來自創建者的支持
缺點:
Html模板和Java代碼緊挨著
需要對OO有較好的理解
Wicket邏輯——什麼都用Java搞定
就項目使用選擇而言,
如果是穩健起見,structs是不錯的選擇;
如果小項目,我更請傾向於Stripes,夠簡單、簡潔。
如果想用概念比較新的框架,可以選擇JSF、tapestry,它們都是基於組件的,重用性比較好。(當然開發者也要要設計得好)