自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

比較JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket

開(kāi)發(fā) 后端
本文介紹Java Web層框架——JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket他們各自的優(yōu)點(diǎn)和缺點(diǎn)

Java Web層框架——JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket他們各自的優(yōu)點(diǎn)和缺點(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
優(yōu)點(diǎn):
◆不需要書(shū)寫(xiě)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ū)嵱?BR>◆學(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搞定

接著,Matt通過(guò)采訪這些框架的作者,與他們討論各種開(kāi)源的Java Web框架,并且突出各個(gè)框架的長(zhǎng)處、聽(tīng)取框架作者對(duì)其他框架的看法,希望借此了解這些框架的未來(lái)發(fā)展方向。

下列是一些被采訪者:
JSF:Jacob Hookom
RIFE:Geert Bevin
Seam:Gavin King
Spring MVC:Rob Harrop
Spring Web Flow:Rob Harrop and Keith Donald
Stripes:Tim Fennell
Struts 1:Don Brown
Tapestry:Howard Lewis Ship
Trails:Chris Nelson
Struts 2:Patrick Lightbody
Wicket:Eelco Hillenius

Matt對(duì)采訪做了如下總結(jié):
JSF:
如果你想讓web應(yīng)用具有類(lèi)似桌面程序的功能性,那么JSF的標(biāo)準(zhǔn)規(guī)范和大量第三方組件庫(kù)的支持值得你 信賴(lài)。
Spring MVC:
綜合了許多不同的技術(shù),這使得它可以被廣泛地應(yīng)用到不同類(lèi)型的項(xiàng)目中去;它可以被當(dāng)作web應(yīng)用開(kāi)發(fā)的一個(gè)基礎(chǔ)平臺(tái)。
Stripes:
可以被應(yīng)用到存在大量復(fù)雜數(shù)據(jù)交互的程序中;有強(qiáng)大的類(lèi)型轉(zhuǎn)換、綁定和驗(yàn)證功能;可以使管理大的復(fù)雜表單以及直接映射它們到域?qū)ο笞兊煤?jiǎn)單……
Tapestry:
在中到大型項(xiàng)目中,表現(xiàn)突出(當(dāng)然,你也可以只把它應(yīng)用到單個(gè)頁(yè)面上),在這些項(xiàng)目中,你可以通過(guò)簡(jiǎn)單地創(chuàng)建新的組件起到杠桿作用。
Struts 2:
通常更適合于那些希望可以真正開(kāi)始做事并且愿意花費(fèi)大量時(shí)間來(lái)學(xué)習(xí)他們使用的開(kāi)源工具的小項(xiàng)目組。Struts 2的目標(biāo)不是那些更喜歡拖放式開(kāi)發(fā)的“扶手椅程序員”。
Wicket:
非常適合于這樣的內(nèi)/外部網(wǎng)應(yīng)用:UI很復(fù)雜并且你希望可以充分利用你的開(kāi)發(fā)者資源。

上面的總結(jié),基本是突出了各個(gè)框架的長(zhǎng)處。然而,哪些又是他們不好的地方呢?
Matt提出了評(píng)價(jià)一個(gè)框架好壞與否的標(biāo)準(zhǔn):
◆Ajax支持
是不是內(nèi)置了?是否便于使用?
◆書(shū)簽?zāi)芰?/EM>
用戶(hù)能否將某個(gè)頁(yè)面收藏起來(lái)并且可以方便地返回到該頁(yè)面?
驗(yàn)證
使用是否簡(jiǎn)單?是否支持客戶(hù)端(JavaScript)驗(yàn)證?
◆可測(cè)試性
脫離容器測(cè)試控制器,是否足夠簡(jiǎn)單?
◆提交和重定向
框架如何處理重復(fù)提交問(wèn)題?
◆國(guó)際化
如何支持國(guó)際化?控制器利用國(guó)際化信息,是否容易?
◆頁(yè)面修飾
框架支持哪種類(lèi)型的頁(yè)面修飾/組成機(jī)制?
◆社區(qū)和技術(shù)支持
提出問(wèn)題,能否被快速地、恭敬地回答?
◆開(kāi)發(fā)工具
是否有支持這個(gè)框架的好的工具,尤其是IDE?
◆市場(chǎng)需求
學(xué)習(xí)了這個(gè)框架,它能否幫你找到份工作?
◆崗位數(shù)量
在dice.com和indeed.com上,對(duì)這個(gè)框架技能的需求如何?

筆者認(rèn)為這個(gè)評(píng)價(jià)標(biāo)準(zhǔn),值得大家借鑒。

然后,Matt按照這些評(píng)價(jià)標(biāo)準(zhǔn),對(duì)各個(gè)框架做了以下闡述:
Ajax支持
◆JSF:沒(méi)有內(nèi)置的Ajax支持,需要使用ICEfaces和Ajax4JSF
◆Stripes:沒(méi)有對(duì)應(yīng)的類(lèi)庫(kù),支持流輸出
◆Struts 2:內(nèi)置Dojo,有用于GWT和JSON的插件
◆Spring MVC:沒(méi)有對(duì)應(yīng)的類(lèi)庫(kù),需要使用DWR和Spring MVC擴(kuò)展
◆Tapestry:Tapestry 4.1中,有內(nèi)置的Dojo
◆Wicket:有Dojo和Script.aculo.us支持

書(shū)簽?zāi)芰?BR>◆JSF:可以任意提交——URL甚至不被考慮
◆Stripes:使用約定,但是你可以不加理會(huì)
◆Struts 2:有命名空間的概念,這使得收藏某個(gè)頁(yè)面并返回變得容易
◆Spring MVC:允許完全的URL控制
◆Tapestry:依然存在一些丑陋的URL
◆Wicket:允許裝配(mount)頁(yè)面/URL

驗(yàn)證
◆JSF:默認(rèn)的國(guó)際化信息丑陋,但是配置簡(jiǎn)單
◆Stripes和Wicket:用Java類(lèi)進(jìn)行驗(yàn)證——不支持客戶(hù)端驗(yàn)證
◆Struts 2:使用OGNL完成強(qiáng)大的表達(dá)式驗(yàn)證功能;只有在Action上指定了規(guī)則,才支持客戶(hù)端驗(yàn)證。
◆Spring MVC:允許你使用公共驗(yàn)證器——這是一種成熟的解決方案
◆Tapestry:有健壯的驗(yàn)證功能——不需自定義就有漂亮的國(guó)際化信息

可測(cè)試性
◆Spring MVC和Struts 2:允許利用mocks(例如EasyMock、jMock和Spring Mocks)簡(jiǎn)單地進(jìn)行測(cè)試
◆Tapestry:測(cè)試?yán)щy,因?yàn)轫?yè)面類(lèi)被抽象、具體類(lèi)被簡(jiǎn)化
◆JSF:頁(yè)面類(lèi)可以方便地被測(cè)試,實(shí)際上很像Struts 2 中的actions
◆Wicket:有WicketTester——一個(gè)強(qiáng)大的解決方案
◆Stripes:有Servlet API Mocks和MockRoundtrip

提交和重定向
解決重復(fù)提交問(wèn)題的最簡(jiǎn)單方法是:在提交后重定向
◆Spring MVC:允許你將參數(shù)加到重定向URL上
◆Stripes、Tapestry和Wicket:有“flash式”的支持
◆Struts 2:需要一個(gè)自定義的解決方案
◆JSF:需要一個(gè)自定義的解決方案,國(guó)際化信息很難加入到頁(yè)面bean中

國(guó)際化
◆JSTL的標(biāo)簽使國(guó)際化變得簡(jiǎn)單;如何將國(guó)際化信息放到控制器類(lèi)中,還沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。
◆Stripes、Spring MVC和JSF:每個(gè)地區(qū)使用一個(gè)資源綁定文件
◆Struts 2、Tapestry和Wicket:提倡把每個(gè)頁(yè)面/action用到的資源文件分開(kāi)
◆JSF:需要在每個(gè)頁(yè)面上定義資源綁定信息
◆Tapestry:標(biāo)簽比較可怕

頁(yè)面修飾
◆Tiles能夠用于Struts 2、Spring MVC和JSF中;需要對(duì)每個(gè)頁(yè)面進(jìn)行配置。
◆SiteMesh能夠用于所有的這些框架中(不推薦在JSF、Tapestry或者Wicket中使用);在設(shè)置完成后, 只需要很少的維護(hù)。

開(kāi)發(fā)工具
◆Spring MVC:Spring IDE,但是只做XML校驗(yàn),不是一個(gè)UI/web工具
◆Struts 2:Eclipse
◆Tapestry:Spindle,對(duì)編碼者非常有利
◆JSF:眾多IDE支持,并且做得越來(lái)越好
◆Stripes和Wicket:沒(méi)有任何官方工具
◆NetBeans目前支持Struts *、JSF(+Facelets)、Tapestry和Wicket,尚不支持Stripes和Spring MVC


市場(chǎng)需求
◆Struts 1:需求依然很大并且被廣泛使用
◆Spring MVC:越來(lái)越受關(guān)注,但大部分是因?yàn)镾pring框架的一些其他特征
◆JSF:很快地變得流行起來(lái)
◆Struts 2:正在獲得地盤(pán),但是相關(guān)的工作機(jī)會(huì)很少
◆Tapestry:在過(guò)去的數(shù)年里,受歡迎程度不斷增加
◆Wicket和Stripes:還是未知數(shù)

【編輯推薦】

  1. JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路(一)
  2. JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路(二)
  3. 在JSF應(yīng)用中捕捉managed-bean構(gòu)造方法
  4. 表現(xiàn)層框架Struts/Tapestry/JSF比較
  5. 簡(jiǎn)單介紹JSF標(biāo)簽
責(zé)任編輯:佚名 來(lái)源: JavaEye
相關(guān)推薦

2009-06-23 14:01:27

StrutsTapestryJSF

2009-06-24 16:16:30

JSF和Tapestr

2009-06-22 14:22:41

JSF和Tapestr

2009-09-03 16:52:44

Java Web開(kāi)發(fā)框

2009-06-19 17:05:08

MVC框架Struts和Spri

2009-07-03 14:46:42

JSP開(kāi)發(fā)框架JSFTapestry

2009-06-24 17:43:24

Struts和JSF

2009-07-29 09:54:34

struts2和str

2009-06-23 15:51:00

JSF框架

2011-06-30 10:20:38

JSFMVC

2009-06-24 13:50:29

JSF和MVC

2009-06-22 15:35:31

JSF和Struts

2009-06-04 09:20:19

struts2 if標(biāo)使用

2009-09-23 17:56:45

JSF入門(mén)

2011-07-08 17:26:38

JSFStruts

2011-09-08 13:11:14

框架

2009-07-14 14:16:03

Tapestry 5.Tapestry教程Tapestry頁(yè)面

2009-06-23 13:21:26

JSF和Spring

2009-06-17 15:18:38

JSF與Spring

2009-06-01 15:44:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)