現在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,它們都是基于組件的,重用性比較好。(當然開發者也要要設計得好)
本文作者:javaread.com