對(duì)于JSF的一些思考
用過一段時(shí)間的Woodstock,當(dāng)時(shí)感覺有點(diǎn)爽,但后來對(duì)于組件的控制方面的不是很好,沒有在畢業(yè)設(shè)計(jì)上使用. 對(duì)于JSF想到了一些缺點(diǎn),在這里分析一下。只是淺薄見解
1.有狀態(tài)編程模型
JSF把Web編程搞的非常像JAVA SE GUI編程模型。維護(hù)組件樹、組件狀態(tài)。這讓我感覺非常不舒服。Web開發(fā)就是Web開發(fā),本身就是無狀態(tài)的。所有行為都是基于 request,session,application等范圍。JSF硬要往GUI模型上套,結(jié)果就是非常不自然,有點(diǎn)四不像了。而且JSF維持的僅僅是視圖狀態(tài),而不是數(shù)據(jù)狀態(tài),這種編程模型有點(diǎn)混亂。我認(rèn)為Web就是Web!
2。面向組件開發(fā),更加OO
這是在討論去里看到有人這樣為JSF宣傳。我承認(rèn)這句話的陳述是正確的。因?yàn)镴SF把Web編程基本上變成了JAVA SE的GUI編程。確實(shí)是面向組件的。但是通過使用,我覺得這種做法的優(yōu)勢(shì)是否真的有那么大,值得考慮。相比JSF,PHP、Rails、 JSP(JSTL)都沒有刻意提供所謂的組件。這種做法方便了操縱HTML控件,直接、簡(jiǎn)單。而使用JSF控件時(shí),則對(duì)于他的控制能力變得比較模糊并且不夠靈活。我們需要在Backingbean里對(duì)組件進(jìn)行控制。我感覺--太作做了。而且這種面向組件的方式所代來的好處遠(yuǎn)不能抵消它所代來的麻煩。
至于所謂的OO論,表示層的東西有必要刻意強(qiáng)調(diào)像JSF這種面向組件,OO嗎?對(duì)于Widget那種ajax的HTML面向組件我是可以理解的。 PHP/RoR沒有面向組件但也非常好用。表示層只需要提供一些頁(yè)面的重用和插入功能就足以了。這讓我想起了人們對(duì)JAVA EE過度分層的抱怨。于Rails形成了鮮明的對(duì)比。所謂的OO在服務(wù)器端、業(yè)務(wù)處理的代碼中有很大用處。但是Web是瘦客戶端(不像Swing)!在 Web的表示層中如此大張旗鼓的宣揚(yáng)JSF式的OO我認(rèn)為是一種誤區(qū)。我們可以看看PHP\Rails這些語(yǔ)言框架,做到MVC,足夠了。Web的表示層需要的最重要的特性就是容易使用、容易控制、容易重用(也面片段)。
JSF那種把HTML和后端弄到一起,模仿Swing,搞OO的做法有點(diǎn)費(fèi)力不討好的感覺。
【編輯推薦】























