我使用過JSP、JSF、Structs、Spring MVC、GWT、Scala Lift、Eclipse RAP、Wicket,除了Eclipse RAP外其他的沒有展開很深入的了解,只是用這些不同的框架做同一件事然后進(jìn)行比較,得出下面的結(jié)論(個(gè)人觀點(diǎn),僅供參考):
首先單純使用JSP來開發(fā)項(xiàng)目需要考慮的東西太多,開發(fā)效率不高。 既然有更圓的免費(fèi)輪子,干嘛不用?
JSF的開發(fā)理念是組件開發(fā),但組件開發(fā)沒有一個(gè)好用的IDE開發(fā)工具怎么行,OperaMasks Studio目前覺得還不是非常的好用,我用OperaMasks框架做了一個(gè)簡(jiǎn)單的頁面(也就是使用了它的TabLayout布局而已,外加一點(diǎn)文字),居然需要下載差不多800kb大小的文件,而且開發(fā)的過程中非常的小心,千萬不要出差錯(cuò),如果對(duì)JSF原理不是很熟悉的話,挑錯(cuò)的過程很痛苦。很難對(duì)JSF組件進(jìn)行個(gè)性化。雖然說JSF的Sun定義的JEE標(biāo)準(zhǔn),但有時(shí)"標(biāo)準(zhǔn)"這東西不是靈丹妙藥,比如中國有這么多的股市專家,在網(wǎng)絡(luò)、電視上指點(diǎn)股市,然而還是有很多聽信了專家的話的股民也沒有賺到多少錢。
Structs 的架構(gòu)設(shè)計(jì)的比較簡(jiǎn)單,使用基于控制器導(dǎo)航和頁面導(dǎo)航,也很容易擴(kuò)展,而且與FreeMarker結(jié)合可以很容易的自定義標(biāo)簽庫,非常的方便,不過Structs 1.X配置的步驟太繁瑣了,需要定義對(duì)HTTP請(qǐng)求和響應(yīng)的映射和所有的ActionForm對(duì)象等。Structs 2.X好像有所改觀,但是目前為止Structs 2.x的參考文檔好像不多,應(yīng)用也不廣.
Spring MVC的架構(gòu)設(shè)計(jì)的非常優(yōu)秀,可以和其他框架比如JSP、JSTl、FreeMarker、Tiles方便的進(jìn)行集成,提供了強(qiáng)大的依賴注入功能,不過要想使用它需要先配置一大堆的XML文件,這我可不喜歡,而且對(duì)AJAX支持不夠,這讓它損失了很多用戶。
GWT全名叫Google Web Toolkit,從名字上可以看出它目前定位為工具集,不是框架,單純使用GWT開發(fā)Web應(yīng)用程序好像不是很順手。
Lift是基于Scala的一種Web開發(fā)框架,它的假想競(jìng)爭(zhēng)對(duì)手是基于Groovy的Grails,不過目前來說還不是很成熟,知名度也不高,不過參考Scala的發(fā)展趨勢(shì),Lift應(yīng)該很有發(fā)展的潛力,值得關(guān)注。
現(xiàn)在輪到Wicket了,Wicket 是 Sun公司的Swing UI小組開發(fā)出的一種構(gòu)建和測(cè)試動(dòng)態(tài) Web 頁面的簡(jiǎn)化框架,是一種開源、輕量、基于組件的框架,只使用Java和HTML代碼,構(gòu)建在Servlet API 之上,Wicket通過基于HTML的模板來界定HTML 頁面設(shè)計(jì)人員和 Java 開發(fā)人員之間的角色界線.模板可使用任何的HTML設(shè)計(jì)工具生成.,也就是說Wicket可以讓你有更多的精力放在應(yīng)用程序的業(yè)務(wù)邏輯的實(shí)現(xiàn)上.如果你有SWT/Swing的開發(fā)經(jīng)驗(yàn),對(duì)其他的Web框架知道的比較少又像向Web開發(fā)這方面發(fā)展的話,那么Wicket一定非常的適合你。而且Wicket的性能還不錯(cuò).提到Wicket就不得不提一下 Tapestry,這兩個(gè)框架很多地方相似,你可以在網(wǎng)上看到Tapestry PK Wicket 的帖子,不過有人說"Wicket是重構(gòu)后的Tapestry".現(xiàn)在你知道該選誰了吧.當(dāng)然Wicket也有缺點(diǎn),要掌握Wicket需要了解Java,有面向?qū)ο缶幊趟枷氲脑捳莆誛icket很容易
好了,我已經(jīng)決定了,要開始研究Wicket了,嗯,還是研究一下它的源代碼先.
歡迎大家一起討論,說出你心中最理想的Web 框架