下一代網(wǎng)絡開發(fā)框架Stripes
軟件的展示層(presentation layer)是最麻煩的。以網(wǎng)絡應用為例,軟件的最終輸出,須以符合HTML的要求。此外,尚需對HTML元素進行修飾和定位,這就用到了CSS技術。如果進一步,可能還需要用到DHTML和Ajax。也就是說,還需要應用JavaScript技術。
而網(wǎng)絡框架的功能主要有兩個:
1.把程序數(shù)據(jù)以后臺軟件組件(如ActionBean等)的形式注入到展示層,同時把展示層傳入的用戶動作導入到后臺組件,激活業(yè)務處理等;
2.提供頁面瀏覽定義功能。簡單的說,就是把展示層與后臺組件合理有效地組合到一起。
這就出現(xiàn)了一個問題,由于展示層用到了較多的技術,網(wǎng)絡框架應該盡可能保持透明,不要扭曲甚至掩蓋了這些基本技術。然而Struts、JSF等顯然沒有滿足這一要求,它們提供了太多的標簽(tag lib),它們不知道Tags就是API。大家學習HTML Tags是心甘情愿的,因為HTML是標準和通用的;但學習個別框架的tags就很抵觸。如果打開一個JSP源代碼,里面到處都是框架的tag,這就太讓人頭痛了??梢韵胂螅@個公司用Struts,那個公司用JSF,對于開發(fā)人員來說將是多么痛苦的一件事,這是兩套API啊!
另一個突出的問題便是配置文件。自從XML興起,配置文件就成了第一頭痛的問題??梢哉f,XML不論是對人還是對機器,都是不友好的。但Java社區(qū)過去片面追求靈活性(flexbility),低耦合(loose coupling)及其它諸多不切實際的華麗詞藻,XML配置文件滿天飛。以Struts為例,你可能要配置Form數(shù)據(jù),navigation數(shù)據(jù),validation數(shù)據(jù)等等。你可以想象,一個中等規(guī)模的網(wǎng)絡應用的相關配置文件將會是如何龐大。這還沒有記入后臺其它組件的配置文件。這就會給你一種感受:寫代碼容易,讓J2EE程序轉起來難,弄好配置文件更難。有人感嘆過:我們是用Java寫程序還是用XML來寫程序?!
如果留心觀察,Spring的興起,無非是借了EJB2的東風。因為后者太繁瑣了,尤其是配置問題和資源注入方式。而EJB3的興起,則是實事求是,總結了EJB2的經(jīng)驗,吸取了Spring的優(yōu)點。EJB3最顯著的改進便是將XML配置文件去除!而用annotation取而帶之,并提供合理的缺省值。
很明顯,下一個成功的網(wǎng)絡開發(fā)框架,必然要在透明度、配置、后臺資源注入等方面有一個質的飛躍。這當然需要廣泛采用annotation技術。另一個最重要的要求,就是力求“簡單”。
好了,說了半天,似乎沒有涉及Stripes,其實不然。Stripes在配置(不需要自己的配置文件)、資源注入、validation、透明度等諸多方面均令人滿意,而且很容易與EJB3或Spring等結合。Stripes的tag及annotation的數(shù)量很少,也很容易上手。
Stripes:是一個視圖框架用于利用最新的Java技術來構建Web應用程序.它具有以下特點:不需要對每一page/action進行映射配置(ActionBeans將自動被發(fā)現(xiàn),它利用注釋進行配置),強大的綁定引擎用于構建復雜并脫離請求參數(shù)(request parameter)的web對象,易于使用并可本地化的驗證與類型轉換系統(tǒng).可重復使用ActionBean作為視圖幫助類.支持一個form對應多個事件.透明的文件上傳能力.支持持續(xù)開發(fā)(比如在構思你的ActionBean之前可以先構建與測試JSP)等.
【編輯推薦】