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