国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
我blog故我在--Java框架的老大們們談框架...沒有一人能忽視Ruby on Rails...


Java框架的老大們們談框架...沒有一人能忽視Ruby on Rails...

看到這篇文章, 是一群Java 框架的設(shè)計(jì)師們談框架的優(yōu)劣, 有趣的是,大家眾口一辭對(duì)Rails持不同程度的褒揚(yáng)。

Jave Web Framework Sweet Spots

 

Jave Web Framework Sweet Spots
Java Web 框架的“甜點(diǎn)”

這是一篇很有趣的文檔,所以摘要一下,其實(shí)類似閱讀筆記,好像是3/25發(fā)布的:

不知怎么翻譯Sweet Spots,難道翻譯為甜處、甜頭、蜜點(diǎn)、蜜穴?

這時(shí)基于對(duì)以下人的采訪:
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 Action 1 Don Brown
Tapestry Howard Lewis Ship
Trails  Chris Nelson
WebWork  Patrick Lightbody
Wicket  Eelco Hillenius

原文在此:http://www.virtuas.com/articles/webframework-sweetspots.html

JSF(Jacob Hookom)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
當(dāng)你希望瀏覽器程序像桌面程序一樣工作的時(shí)候,你可以遵循標(biāo)準(zhǔn)并獲得大量第三方支持。它致力于降低復(fù)雜度。它允許你不與view和特定的action、參數(shù)傳遞、狀態(tài)傳遞、渲染打交道就可以進(jìn)行高質(zhì)量的開發(fā),不管是否使用工具。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
它不適合大規(guī)模的、只讀(其實(shí)指讀為主)的網(wǎng)站。在這種情況推薦Struts,因?yàn)橹R(shí)庫豐富(應(yīng)該指文檔和用戶群)。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
Seam:
優(yōu)點(diǎn):非常簡單直接
缺點(diǎn):對(duì)于大項(xiàng)目過于簡單;沒有模塊化開發(fā)的好例子
Struts:
優(yōu)點(diǎn):巨大的文檔和用戶群;跟著它沒錯(cuò)
缺點(diǎn):狀態(tài)/行為的分離過于教條化
WebWork:
優(yōu)點(diǎn):比Struts易于使用
缺點(diǎn):復(fù)雜的UI難于維護(hù),UI代碼過于復(fù)雜(JSF作者對(duì)action Framework都攻擊這一點(diǎn))
Tapestry:
優(yōu)點(diǎn):概念新穎;可以應(yīng)付復(fù)雜的UI
缺點(diǎn):對(duì)于一個(gè)組件化(JSF主要競爭對(duì)手),它依然依附于page/action的概念
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
他認(rèn)為JSF這個(gè)標(biāo)準(zhǔn)下這些應(yīng)該有第三方提供。JSF(2.0)會(huì)提供“Partial Faces Request”,它是Ajax實(shí)現(xiàn)。JSF也會(huì)增強(qiáng)annotation組建編程。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
很多JSF書都拿Struts作為對(duì)比。他認(rèn)為這不能體現(xiàn)JSF的特點(diǎn)。他認(rèn)為Struts和WebWork能做到的JSF也能做到。
6、你對(duì)Ruby on Rails的看法如何?
它與WebWork一樣好用,它的CoC(Convention over Configration)和腳手架非常好用。他認(rèn)為CoC可以被應(yīng)用在任何framework,他認(rèn)為這是RoR最大的優(yōu)點(diǎn)。他還認(rèn)為RoR會(huì)走上其它 framework的路(復(fù)雜性等),因?yàn)槿藗冃枰约旱臄U(kuò)展。

RIFE(Geert Bevin)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
你可以付出10%的工作量,得到其它framework的90%的……,它是一個(gè)full-stack framework(如RoR)。它吸收了成熟的分層框架的架構(gòu),并將共同的優(yōu)點(diǎn)匯集在一起。提供了web continuation,POJO驅(qū)動(dòng)的CRUD生成,可擴(kuò)展的基于組建的架構(gòu),無session的狀態(tài)控制,關(guān)注REST作為API,雙向無邏輯模版引擎,集成了內(nèi)容控制框架(CMS?)。每個(gè)層次的組建提供了可復(fù)用性(AOP,site,sub-site,page,widget,portlet 等)。適合于團(tuán)隊(duì)快速開發(fā)公共Web項(xiàng)目,適合喜歡開發(fā)可復(fù)用組件的人。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
團(tuán)隊(duì)中的每個(gè)人都有其它framework的知識(shí),難于培訓(xùn)他們。開發(fā)狀態(tài)相關(guān)的服務(wù)器端Web組件,而不是用RIA或Ajax去實(shí)現(xiàn)。第三方支持很重要的情況下(可憐RIFE用戶群還不大)。他推薦這種情況下使用JSF?;蛘咴赬ML為主要發(fā)布形式的情況下,推薦Cocoon。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
他試驗(yàn)過WebWork,JSF,Wicket。他喜歡WebWork的簡單,但是不喜歡它的模版方式(tag的template,應(yīng)該),它也不提供組件封裝。他認(rèn)為JSF的工具支持非常吸引人。Wicket的純Java實(shí)現(xiàn)很不錯(cuò),可惜XML配置很不爽。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
關(guān)于Ajax,RIFE剛剛集成了DWR,而且選定以后也使用這個(gè)。集成Dojo,Scriptaculous,Prototype都很容易集成進(jìn)來。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
這些錯(cuò)誤理念:1、RIFE的XML配置繁瑣 2、RIFE是continuations server 3、RIFE重新造輪子沒有提供新鮮東西 4、RIFE的模版語法很蹩腳過于簡單和業(yè)余 5、RIFE是基于request的framework 6、RIFE的功能太多,學(xué)習(xí)曲線陡峭
6、你對(duì)Ruby on Rails的看法如何?
RoR對(duì)Java社區(qū)的沖擊非常棒,元編成也得到了信任。RoR沒什么特殊之處,也沒有從Ruby語言獲益很多。
我討厭:它的模版。Partials(RoR中的組件)。URL的分散處理。Active Record提供了從數(shù)據(jù)庫schema而來的DSL,但是卻不是從domain model而來。沒有l(wèi)10n和i18n支持。手動(dòng)狀態(tài)轉(zhuǎn)換。不能在JVM運(yùn)行(……)。實(shí)際上腳手架生成了實(shí)際代碼。Ruby缺少工具和IDE。

Seam(Gavin King)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?

擁有豐富用戶交互體驗(yàn)的應(yīng)用。方便實(shí)現(xiàn)多窗口的操作,回退的支持,單窗口多工作區(qū),無狀態(tài)瀏覽。對(duì)商務(wù)流程(BPM)的集成是獨(dú)一無二的。Seam方便使用數(shù)據(jù)驅(qū)動(dòng)的ORM。遵循JSF和EJB3,多任務(wù)支持(多窗口/多工作區(qū)),BPM的領(lǐng)先解決方案。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
不適合只是將數(shù)據(jù)從數(shù)據(jù)庫顯示到網(wǎng)頁的應(yīng)用,這時(shí)應(yīng)該使用PHP或RoR。不適合需要設(shè)計(jì)特別的HTML組件的情況,此時(shí)應(yīng)該選用Tapestry或Wicket。還在使用JDK1.4的人們。還有那些喜歡Struts的人(嘿嘿,夠狠)。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
JSF:喜歡他的事件/交互模型。喜歡他的EL和模型綁定。不喜歡那么多XML(為什么沒有annotation)。創(chuàng)建自己的controls太難了。
Tapestry:非常好。form驗(yàn)證是它的殺手锏!模版方式很有創(chuàng)意。不過非基于POJO的組件模型則讓我對(duì)它失去興趣。
RIFE:這個(gè)東西很怪,但是有創(chuàng)業(yè)也有趣。我想進(jìn)一步學(xué)習(xí)。如果學(xué)習(xí)先要自費(fèi)武功:D
Struts:這個(gè)東西的模型view綁定太復(fù)雜了。東西已經(jīng)過時(shí)了。
WebWork:比Struts好一點(diǎn),不過也過時(shí)了。XWork曾經(jīng)是個(gè)很好的實(shí)現(xiàn),不過現(xiàn)在也過時(shí)了。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
Portal支持。遠(yuǎn)程框架Seam Remoting Framework(Ajax)。模版消息的工具支持。以后還要集成ESB,計(jì)劃引擎和異步支持。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
這些都不是真的:JSF不能處理GET requests。JSF post后無法redirect。JSF不能與REST共存。
6、你對(duì)Ruby on Rails的看法如何?
它是PHP的很好替代品。如果它有一個(gè)正經(jīng)一點(diǎn)的持久化層它就可以和Java競爭了。

Spring MVC(Rob Harrop)和Spring Web Flow(Rob Harrop and Keith Donald)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
Spring MVC:
穩(wěn)定可擴(kuò)展,支持了i18n、文件上傳、異常處理,這些穩(wěn)定的支持給開發(fā)者堅(jiān)實(shí)的工作基礎(chǔ)。是最佳實(shí)踐,告訴你怎么做是最好的。與Spring集成,領(lǐng)先的 IoC遠(yuǎn)生支持。支持,Spring社區(qū)活躍和龐大。Struts開發(fā)者可以平滑過渡。適合多種項(xiàng)目,可選的多種result類型。
Spring Web Flow:
內(nèi)置任務(wù)處理引擎,支持線性處理過程中的持續(xù)狀態(tài)。抽象,減少開發(fā)的關(guān)注點(diǎn)。適合多種項(xiàng)目類型,插件支持Spring MVC、Struts、JSF等。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
Spring MVC:不適合需要組件化開發(fā)的場景。它是一個(gè)request驅(qū)動(dòng)的MVC。那些場景推薦JSF或Tapestry。
Spring Web Flow:處理線性頁面流,不適合一般的“自由瀏覽”。當(dāng)然Spring Web Flow可以與request驅(qū)動(dòng)或者組件驅(qū)動(dòng)共存。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
Spring框架支持Struts和JSF集成。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
Spring MVC:簡化JSP標(biāo)簽。更多的MVC配置schema。CoC風(fēng)格的默認(rèn)控制器、URL影射、view,學(xué)習(xí)Rails和Stripes的優(yōu)點(diǎn)。增強(qiáng)數(shù)據(jù)綁定和驗(yàn)證(支持范型綁定)。Portlet支持。Spring也要接受Ajax,使用DWR庫。
Spring Web Flow:一大堆,關(guān)心的可以自己看……
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
Spring MVC難于配置。在Spring 2.0,將會(huì)改善,可以使用自己定義的基于schema的配置。
6、你對(duì)Ruby on Rails的看法如何?
Spring MVC:RoR非常有趣。不過現(xiàn)在就拿出來用還有點(diǎn)幼稚。這里舉了個(gè)例子,關(guān)于變量的復(fù)數(shù)形式的處理,RoR會(huì)使用這樣的CoC風(fēng)格來處理變量list,而Spring MVC也實(shí)驗(yàn)了種種風(fēng)格,但是受到的結(jié)果卻很差。人們認(rèn)為英語的復(fù)數(shù)很古怪,沒有一定的規(guī)則,所以會(huì)帶來混亂,如(person -> people)。所以Spring MVC設(shè)計(jì)了變量+List的命名,personList更加明確,雖然這樣不酷,但更好用。就是說Spring MVC要取其精華去其糟粕。

Stripes(Tim Fennell)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
與Spring MVC、WebWork等相同。它提供高質(zhì)量action驅(qū)動(dòng)的框架的同時(shí),盡量簡化配置,增進(jìn)開發(fā)效率。Stripes適合復(fù)雜的數(shù)據(jù)交互的場合。這種情況下綁定驗(yàn)證的強(qiáng)項(xiàng)就完全體現(xiàn)出來了,能夠很好的處理form和map轉(zhuǎn)換等。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
所有的action驅(qū)動(dòng)的framework都適合用戶在非Ajax驅(qū)動(dòng)的情況下在一個(gè)頁面進(jìn)行松關(guān)聯(lián)(loosely related)和無狀態(tài)交互的情況。適合每次都刷新的頁面。管理多窗口間持續(xù)狀態(tài)的應(yīng)用會(huì)比較麻煩,此時(shí)應(yīng)該選擇JSF。不過我認(rèn)為90%以上的Web 程序都是前者,JSF只適合剩下的那9%,AJAX對(duì)于管理無狀態(tài)UI更加適合??蛻舳瞬恍枰狝JAX,則可以看看Wicket,它更加簡單。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
用過Struts、WebWork、Spring MVC。其中Struts做過商業(yè)項(xiàng)目,不過這個(gè)東西帶來的麻煩遠(yuǎn)比帶來的效率提升要多。它認(rèn)為這些MVC都有三個(gè)缺點(diǎn):暴露了過多的復(fù)雜性給可發(fā)者。沒有提供足夠的開發(fā)便利性,沒有提供足夠多的錯(cuò)誤和提示信息,也沒有date格式化等小的便利(其實(shí)有)。穩(wěn)當(dāng)太差。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
1.3要加入Inteceptor,實(shí)現(xiàn)AOP功能。驗(yàn)證系統(tǒng)要加強(qiáng)。支持Ajax。我還在尋找一個(gè)好的Ajax/javascript庫。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
這些觀點(diǎn):1、Stripes使用了annotation代替XML,只是換湯不換藥:由于元數(shù)據(jù)更接近代碼,所以修改默認(rèn)的配置非常方便,不像XML那樣復(fù)雜,這是實(shí)質(zhì)的變化。2、Annotation意味著你只能有一套配置:我認(rèn)為90%的action都有自己的一套配置!Stripes會(huì)根據(jù)繼承關(guān)系尋找Annotations,子類的annotation會(huì)覆蓋父類的,因?yàn)橄駐alidation都是可以繼承的,如果特別需要還可以覆蓋。這樣很合理。在1.3中允許validations基于UI事件進(jìn)行。它向后兼容,不需要可以不用。
6、你對(duì)Ruby on Rails的看法如何?
我認(rèn)為Java社區(qū)有很多可以從RoR學(xué)習(xí)的地方。Stripes學(xué)習(xí)了RoR的前端部分,開發(fā)者可以減少配置量。但是RoR的RHTML讓我想到了以前的 JSP中混亂的scriptlet。而后面的ActiveRecord是一個(gè)很好的理念,實(shí)現(xiàn)的也很好。ActiveRecord比Hibernate等復(fù)雜的ORM工具要容易理解,因?yàn)檫@樣的特點(diǎn)RoR才引起了這么大的波瀾。

Struts Action 1(Don Brown)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
文檔和用戶基礎(chǔ),書籍和背后的支持。容易雇到人(也容易找工作)。雖然其他項(xiàng)目的理念比這個(gè)要先進(jìn),但是這些不算什么。實(shí)際上,Web層是很容易也很直接的。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
如果你需要portlets或者復(fù)雜的頁面(顯示很多東西),那么Struts要么無法工作要么太枯燥。這種情況你需要一個(gè)基于組件的framework,如JSF、Tapestry/Wicket。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
這些我基本都試驗(yàn)過,他們每個(gè)都工作的很不錯(cuò)。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
Struts Action 2基于WebWork2,很快會(huì)開始?,F(xiàn)在已經(jīng)支持Ajax了,我們在尋找更加容易的開發(fā)方式,JSF支持(Struts Shale),continuation支持,還有支持更多的腳本語言(BSF擴(kuò)展腳本撰寫Action)。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
Struts太過時(shí)了,而且也不酷,難于使用。但是你可以自己修改或者擴(kuò)展它。我認(rèn)為團(tuán)隊(duì)對(duì)于你的限制遠(yuǎn)大于framework對(duì)你的限制。
6、你對(duì)Ruby on Rails的看法如何?
不需要D&D工具,旨在幫助開發(fā)人員提高開發(fā)效率的好例子。我們在Action 2中將學(xué)習(xí)它的先進(jìn)理念。

Tapestry(Howard Lewis Ship)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
我想Tapestry對(duì)于中等規(guī)模或者大規(guī)模的應(yīng)用會(huì)帶來很多好處(甚至你可以在單頁面的應(yīng)用程序中獲得好處)。這里有允許你創(chuàng)建新的組件的良好工具。 Tapestry不關(guān)心數(shù)據(jù)從哪里來,很多“項(xiàng)目類型”都基于切面(aspect)(如CRUD vs. RSS feed vs. etc.)。我認(rèn)為Tapestry非常容易與IoC集成(HiveMind或與Spring),方便進(jìn)行測試。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
我在其它Java framework中沒有找到到強(qiáng)于Tapestry的優(yōu)點(diǎn)。但是對(duì)于RoR,我自己沒有使用過使用,很難說RoR中的項(xiàng)目應(yīng)該是什么樣子。我沒有仔細(xì)對(duì)比過RIFE,它看起來受了RoR影響,尤其是類似ActiveRecord的數(shù)據(jù)訪問層。但是如果你的應(yīng)用需要特定的URL格式,那么在 Tapestry中奮戰(zhàn)勝算不大。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
在這兩年來我沒怎么嘗試過Tapestry以外的東西。我沒怎么學(xué)習(xí)RoR,因?yàn)闀r(shí)間太有限了。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
Tapestry 4.0有很好的Ajax支持,通過Tacos庫。而Tapestry 4.1還要進(jìn)一步強(qiáng)化這方面的支持。
Tapestry 5.0提供了明顯的改進(jìn):沒有abstract類(Tapestry的怪癖:)。沒有強(qiáng)迫的繼承關(guān)系。對(duì)屬性進(jìn)行annotation而不是方法。沒有 XML,只有模版和annotaions。只能類裝載,自動(dòng)尋找類的變化。最小化API,超越annotaion。面向方面(Aspect- oriented)模塊構(gòu)造,使用mix-ins。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
Tapestry 3.0還不容易測試,4.0改善了一些。Tapestry只是個(gè)人秀;實(shí)際上我們有很多活躍的貢獻(xiàn)者。Tapestry的學(xué)習(xí)曲線非場陡峭。它只有漂亮的模版實(shí)現(xiàn);實(shí)際上Tapestry的特點(diǎn)在于狀態(tài)管理(允許對(duì)象存儲(chǔ)狀態(tài),而不是多線程的單例來管理requests之間的游離和持久狀態(tài))
6、你對(duì)Ruby on Rails的看法如何?
很有影響力。但是模版的實(shí)現(xiàn)非常丑陋。我聽到了很多意見,關(guān)于RoR的優(yōu)缺點(diǎn)?;谖业幕纠斫?,這些觀念對(duì)Tapestry 4產(chǎn)生了影響(它對(duì)Tapestry 5影響更深)。
RoR 意味著限制了你的選擇:如果你選擇RoR那么就要尊旬它的實(shí)踐(CoC..),看起來你的錢會(huì)花的恨值。這些類似Microsoft的哲學(xué)。而Java更崇尚給你更寬松的選擇,不限定你使用的工具,但是曖昧的說這需要你對(duì)你的工具理解更深。不僅對(duì)Tapestry,還對(duì)于JEE、Spring這寫 entire stack的框架,需要從RoR學(xué)習(xí),不僅提供工具,還需要提供整套的解決方案。

Trails(Chris Nelson)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
Trails 的應(yīng)用程序只需要Web界面和持久化的domain model就可以了。Trails給你的domain model快速的提供一個(gè)界面,除了POJO自己不需要附加的代碼。Trails允許你修改界面的外觀和行為,包括驗(yàn)證、i18n、安全。這些都不需要 java代碼生成,不喜歡代碼生成的人應(yīng)該感覺很舒適。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
Trails 講究夠用就好。它允許你快速交付,問問你的客戶:“這樣夠好么?”。這會(huì)改變你的工作流程,當(dāng)然這不是可以覆蓋所有需求的解決方案。當(dāng)UI需求很高, Trails沒有優(yōu)勢。我認(rèn)為Trails適合于混合的應(yīng)用,對(duì)于管理員他們只需要夠用就好,那么就可以使用Trails。其它的部分我們可以訂制開發(fā),我們在使用Tapestry、Hibernate、Spring來實(shí)現(xiàn)這些部分,Trails正是基于它們。對(duì)于非交互的應(yīng)用,Trails也不適合,如報(bào)表應(yīng)用,可以考慮Eclipse BIRT。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
我用Struts很多。它曾經(jīng)是偉大的framework。主要的缺陷是它不能自動(dòng)幫定數(shù)據(jù)到domain model。我也研究過JSF,它比Struts強(qiáng),但是自定義組建非常難。Tapestry非常便于自定義組建,尤其對(duì)于建立高階組件(有其它組件組成的)非常方便,Trails正在使用它。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
對(duì)于Trails來說我們站在巨人的肩膀上。Tapestry在ajax功能作了很多努力,所以Trails也不難與其共舞。但是我們需要?jiǎng)?chuàng)建更多的例子來演示這些。我們也致力于讓Trails容易介入到已經(jīng)進(jìn)行的項(xiàng)目中。以后Trails還要加入基于實(shí)例的安全(instance-based security)(目前正在使用基于角色的role-based),還有method invocation。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
Trails是對(duì)RoR的移植。Trails的名字來自Rails。它是基于Rails的理念,但不是對(duì)它的移植。
6、你對(duì)Ruby on Rails的看法如何?
我認(rèn)為我們有很多需要從RoR學(xué)習(xí)的地方,那將幫助我們享受開發(fā)Web程序的愜意。

WebWork(Patrick Lightbody)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
一般來說,WebWork一般適合小的團(tuán)隊(duì),它們愿意保持一雙臟手,學(xué)習(xí)開元工具如何使用。WebWork不面向“輪椅程序員”,那些人只喜歡拖拽式的開發(fā)。WebWork給花時(shí)間學(xué)習(xí)它的人回報(bào)。例如,直到輸入和輸出的人(閱讀了參考文檔,那樣很好)能夠容易的創(chuàng)建ActionMapper和 Configuration實(shí)現(xiàn)來提供“慣例”代替配置(CoC)的方便。我最近的例子中,URL是這樣 “/project/123/suite/456/test/create”影射到 “com.autoriginate.actions.project.suite.test.CreateAction”,然后自動(dòng)的傳遞參數(shù): projectId=123、suiteId=456。而Result是“[action].jsp”或者“[action]-[result]. jsp”,也可以通過annotation來配置。
也就是說,WebWork是你的應(yīng)用程序framework中的最佳基礎(chǔ)工具。在這種情況以外也很好,但是目前不算最佳的“甜點(diǎn)”。
除去這些一般的,WebWork對(duì)于正在創(chuàng)建需要插件和擴(kuò)展的產(chǎn)品的人是必備的。例如JIRA、Confluence、Jive Forums。因?yàn)閃ebWork支持廣泛的模版語言(Velociy和FreeMarker),完整的tag支持,模塊寫好后非常容易插入。一個(gè)jar 包就可以包括所有的action和view(得益于ftl的classpath支持)。最終的效果很好:在Confluence中你可以通過管理界面上傳一個(gè)jar,這個(gè)plug-in就會(huì)自動(dòng)部署。這是因?yàn)锳tlassian(Confluence、Jira的小組)非常了解這個(gè)framework,并且作了很多的貢獻(xiàn)。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
與其它action framework相同,WebWork在控制狀態(tài)和wizards上比較弱。如果你寫了很多長的wizards,JSF可能是比較好的解決方案。我還想說,文檔還需要改善(參考文檔還不錯(cuò),但是教程、cookbooks和FAQ還比較差),如果沒有一個(gè)WebWork高手作為項(xiàng)目領(lǐng)隊(duì),新手可能會(huì)敬而遠(yuǎn)之。
對(duì)于非常簡單的程序,我推薦使用簡單的JSP或者Spring MVC,如果用戶接受Spring的話。但是總的來說,我認(rèn)為在action framework中WebWork是最好的。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
我試驗(yàn)過RIFE、Spring MVC、Struts、Spring Web Flow,還有一點(diǎn)點(diǎn)Tapestry。我發(fā)現(xiàn)RIFE的概念很優(yōu)秀,但是它的實(shí)現(xiàn)不怎么樣。不難想象Geert還是使用“m_”作為字段的前綴。它看起來不像Java。模版難住了我,所以就沒有繼續(xù)看。
Spring MVC還可以,但是它是一個(gè)非常簡單的framework實(shí)現(xiàn)。WebWork的數(shù)據(jù)綁定(WebWork世界中稱為類型轉(zhuǎn)換)要強(qiáng)多了,而且是自動(dòng)的(而Spring需要自己寫property editors)。在Spring中的view替換支持泰有限了,而WebWork中的UI tags在Spring中壓根沒有提供。Spring中你可以使用JSP 2.0輕松的寫自己的tag,但是不支持其它的語言。
Spring Web Flow:XML讓我抓狂。太過火了,不管Keith的主張,它“不支持任何的Web framework”。這個(gè)web framwork回避掉了WebWork、Spring MVC、Struts或者其它framework中的99%。我倒不是說這是個(gè)壞主意,但是我應(yīng)該誠實(shí)的說它是一個(gè)完整的框架。
Tapestry 很優(yōu)雅,但是HTML屬性(jwcid)惹人厭。我接受這種理念,且實(shí)踐中這會(huì)帶來一些好處(Shale也有相似的地方)。但是實(shí)際上,我發(fā)現(xiàn) “HTML/CSS開發(fā)者”和“app開發(fā)者”一般是同一個(gè)人,Tapestry就架設(shè)如此。實(shí)際上,由于Ajax的推動(dòng),我想越來越多的“程序邏輯”會(huì)被嵌入到UI;這樣的話,Tapestry的模型就不那么適宜了。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
在Struts Action 2.0我們希望:更好的文檔。支持標(biāo)準(zhǔn)(如果可以,我們希望用JSTL代替OGNL,但是首先要保證不會(huì)有功能損失)。增強(qiáng)AJAX支持,提供更多的widgets:如自動(dòng)完成。解除配置地獄;提供更多的選擇,如我們開始所說的CoC。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
他需要很多的配置:我已經(jīng)演示過,通過CoC風(fēng)格,它可以做的比Rails更好(Rails的管理部允許內(nèi)嵌controllers)。
6、你對(duì)Ruby on Rails的看法如何?
非常重要的一點(diǎn)是,我要說RoR不能與大多數(shù)的framework對(duì)比,除了RIFE和Seam。對(duì)比RoR和WebWork就相當(dāng)于對(duì)比Hibernate和JDBC。一個(gè)是full stack,另一個(gè)只是stack中的一部分。
另一個(gè)重要的問題:DHH是個(gè)怪胎,但是聰明的怪胎。它的高效率無可爭辯,它被稱為Rails。
好的,我們不說這個(gè),隨便說說別的:
我使用Rails創(chuàng)建了一個(gè)小的app。我把它扔掉并很快用Java重寫了。我認(rèn)為Rails可以讓你的app中的80%快速完成;而剩下的20%比前面 80%需要花的時(shí)間還多。當(dāng)然程序開發(fā)就是這樣。腳手架非??幔绕涫茿ctiveRecord在運(yùn)行時(shí)改變類。但是后來你需要寫UI、自定義的驗(yàn)證規(guī)則,自定義安全影射等等。一個(gè)基于CRUD的app能夠在30分鐘內(nèi)運(yùn)行并不意味著你能以這個(gè)速度完成它。
Rails的web framework部分相比于WebWork很可怕。實(shí)際上根本無法比較。它的實(shí)現(xiàn)更接近于Spring MVC的簡單功能。
完整的stack非常棒。他們在這方面做得很好,這里Java還有差距需要追趕。WebWork是web stack,但是持久化解決方案并不確定。所以最大的問題在于即使WebWork和SiteMesh提供了如配置動(dòng)態(tài)讀取和動(dòng)態(tài)類reloading, Spring、iBatis和Hibernate并不提供。它們至少需要提供配置重讀取后才可以發(fā)展出類似Rails那樣的功能。類似的, Hibernate和iBatis對(duì)WebWork等的請(qǐng)求提供的支持不夠。對(duì)于一個(gè)類,我可以不需要再xwork.xml中進(jìn)行配置,但是持久化引擎并不允許我們這樣做。當(dāng)這些功能能夠同時(shí)具備,沒準(zhǔn)一個(gè)complete stack的框架就會(huì)推出。
要求快5倍10倍是愚蠢的。可靠的工程師都知道開發(fā)產(chǎn)品的時(shí)候最大的警力都花費(fèi)在構(gòu)思代碼上,而不是書寫代碼。定義需求,獲取反饋,市場定位,定義數(shù)據(jù)庫結(jié)構(gòu),映射用戶接口。不管使用什么語言,你需要思考很長時(shí)間。沒有語言或者框架能夠提升思考的速度。
最后,Rails提供了:用腳本語言良好實(shí)現(xiàn)的stack。Python、Perl尤其是PHP中的其它框架還沒有成熟。我認(rèn)為“PHP猴子”們還有很多事情要做,他們通常不是很有才干的工程師。(可能我翻譯錯(cuò)誤了,希望糾正)。在腳本語言中提供良好的框架,人們能夠?qū)崿F(xiàn)設(shè)計(jì)精良的app并的到回報(bào)(因?yàn)槟_本語言的特點(diǎn))。不只是“管理代替配置CoC”甚至是集成stack,Java需要的是立刻反射出變化的能力。很多Java開源領(lǐng)袖認(rèn)為“修改 web.xml”的重新載入是一種方法。這種智力游戲應(yīng)該結(jié)束了。我們不僅僅需要配置文件和類的重新載入,我們需要社區(qū)給Sun足夠的壓力,使其能夠在下一代的JVM中提供熱插拔(HotSwap)的能力?;蛘?,更加復(fù)雜的程序模型,如OSGi,需要進(jìn)一布被社區(qū)所接受。當(dāng)然我并不希望走那條路線。

Wicket(Eelco Hillenius)
1、你認(rèn)為你的framework的“甜點(diǎn)”在哪里?他最適合哪種類型的項(xiàng)目?
我認(rèn)為有5點(diǎn):Wicket是以代碼為中心的:可以在view層進(jìn)行OO編程。組件是完全自管理的:容易創(chuàng)建和重用。概念的分離是清晰的也是強(qiáng)迫的。干凈的模版。開發(fā)伸縮性大-就像OO一樣。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個(gè)?
Wicket不適合UI很簡單且只讀的場合。這時(shí)頁面腳本更加適合,比如JSP,或者JSF。如果你需要無限的可伸縮性,你可能需要狀態(tài)無關(guān)的實(shí)現(xiàn)。從1.2版開始,Wicket也有無狀態(tài)頁面的概念,這樣可伸縮性與其它framework差不多了。
3、在下面提到的framework中,你試驗(yàn)過他們么?如果試驗(yàn)過,你比較喜歡哪個(gè)?你不喜歡哪個(gè)?
JSF:
優(yōu)點(diǎn):基于組件。工業(yè)背景。工具支持。一些擴(kuò)展讓他更容易使用。它允許你從傳統(tǒng)JSP升級(jí)到JSF。
缺點(diǎn):它缺少其它API的優(yōu)雅。以JSP為中心。配置很多而且代碼很難看。有很多種實(shí)現(xiàn)。它讓我回憶起EJB1/2,以廠商為中心等等。
RIFE:沒用過,說了一大堆。
Seam:不是一個(gè)真正的Web framework。類似JSF擴(kuò)展。如果使用EJB/JSF/JBoss組合,這個(gè)選擇很好。但是不遵循JSR 227/235。
Tapestry:很好,4.0版本好了很多。我把它推薦給我所工作的公司。Wicket更加以編程為中心。而Tapestry更加pragmatic。
Trails:從來沒用過。
Spring Web Flow:framework本身很好,但是我不喜歡它的stacking。如果用工作流,我希望選擇一個(gè)如jBMP的方案。我也不喜歡以流為中心的解決方案,認(rèn)為這樣很過程化。
WebWork、 Spring MVC、Struts:Model 2的framework糟透了。我用過幾年,也對(duì)Maverick貢獻(xiàn)過代碼,但是我徹底失去興趣了。Model 2 framework太過程化了,這些程序員不知道怎么用OO編程。我寧可雇傭一個(gè)Swing編程的人也不會(huì)去選擇一個(gè)使用Model 2 framework編程的人,因?yàn)镾wing編程的人寫的程序一般更漂亮?!绻屛覐倪@些Model 2 framework中挑一個(gè)出來,我選擇Stripes,它拋棄了model 2中的一些不好的方面。
4、你的framework的未來會(huì)怎樣?對(duì)于用戶開發(fā)會(huì)有什么方便使用的變化?你會(huì)原生支持Ajax么?你們計(jì)劃支持它了么?
我們將會(huì)支持Java5。我們會(huì)增強(qiáng)Spring支持,復(fù)雜的權(quán)限認(rèn)證支持,和基于角色的參考實(shí)現(xiàn),還會(huì)提供原生AJAX支持,URL加載(nice URLs),無狀態(tài)頁等。
我們的市場占有率不高,但是用戶群在提高。我正在寫“Wicket In Action”(Manning出版)正在籌劃中,今年夏天會(huì)出版。
5、有對(duì)你們的framework的傳言需要澄清么?如果有,是哪個(gè)?
關(guān)于伸縮性的問題是第一位的。程序的可伸縮型一般是由數(shù)據(jù)庫性能差或者緩存策略查詢優(yōu)化并發(fā)等問題。服務(wù)器端可伸縮性并不一定不可擴(kuò)展,可以通過集群來繼絕?!?br>6、你對(duì)Ruby on Rails的看法如何?
我喜歡我看到的Ruby,如果我有時(shí)間我還會(huì)仔細(xì)把玩它。如果不是Wicket的問題,我希望更多的實(shí)踐RoR?!?




 


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ROR歷險(xiǎn)記
流行的9個(gè)Java框架介紹:優(yōu)點(diǎn)、缺點(diǎn)等等
ONJava.com: Ruby the Rival
跨越邊界: 在集成框架中進(jìn)行測試,第 1 部分
Rails 與 XML(一)
新手RoR十分鐘初體驗(yàn)Step By Step rails Ruby
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服