Java Web框架的統一努力

by http://www.javaeye.com/pages/viewpage.action?pageId=434

Java Web框架種類繁多,花樣迭出,主流一點的就有Struts,Webwork,SpringMVC,JSF,Tapestry,至於非主流的就更加不計其數了。還有很多基於這些框架的衍生框架,例如基於Struts的beehive,基於JSF的JBoss Seam,基於JSF的MyFaces,Shale等等。對於開發人員來說,過多的選擇是一種沉重的負擔,不但需要花更多的時間去學習,也需要更多的時間去維護基於不同框架的代碼。

由於面臨着dotnet統一的web框架webforms以及異軍突起的rails的強勢挑戰,Java業界也感受到競爭的絲絲寒意,這不,衆多Java Web框架的核心開發人員終於可以坐到一起,商量着Web框架的統一和互操作的問題了。

http://opensource2.atlassian.com/confluence/oss/display/WAG/Home

由衆多Java Web框架的開發人員組成的一個團隊......Java Web Alignment Group,這其中包括了Struts,Webwork,JSF,Beehive,JBoss Seam,Spring MVC等衆多框架核心開發人員組成,目標則是加強交流和合作,促進各個Web框架之間的協作,給Java開發人員提供儘量方便的解決方案。

他們討論的內容在Yahoo Group:http://groups.yahoo.com/group/java_web_alignment/
加入這個mailist需要批准。

目前這個Group的討論已經得到了一個顯著的進步:struts,webwork和beehive的合併!

我們知道Web框架主流上分爲兩類:MVC框架和事件響應機制框架。MVC框架有Struts,Webwork,Spring MVC,以及一些基於這些框架的框架,如Spring Webflow, Beehive等等;事件框架有JSF,Tapestry,Echo等。除此之外,還有一些連接兩者的框架,如Struts Shale等等。

經過一段時間的討論,Struts,Webwork和beehive三方宣佈合併,共同發展下一代MVC模式的MVC框架......Struts Ti。它將主要以Webwork爲核心,集成Beehive的annotataion和pageflow功能,推向Struts用戶羣體,並且加強和 JSF的集成能力。

這次合併的前景是值得期待的,在MVC領域,主流的選擇將在Struts Ti和Spring MVC之間。不過從目前的情況來看,Struts Ti不會進一步和Spring MVC進行合併。Spring MVC的開發人員希望保護現有的Spring MVC合作伙伴和客戶,以及在Spring webflow上面的巨大投入。

我認爲合併對於webwork和struts來說這都是一個重大利好的消息。從整個事件來看,並不是單純的 webwork開發團隊合併struts團隊這麼簡單,事實上struts1.3和webwork2.2仍然按照原定roadmap繼續發展,而兩個團隊核心開發人員發起一個新的項目Struts Ti,它的roadmap是:

  • Ti phase 1 = WebWork 2.2 + Struts 1.x compatibility library and migration tools
  • Ti phase 2 = phase 1 + Commons Chain integration + Beehive's Page Flow + simplified annotations + quick development mode

從這個roadmap可以看出來,新項目Struts Ti是以webwork的整體架構爲基礎,輔以Struts的一些庫,並且該項目的四個發起人聯名的聲明中這樣說:

As some of you know, the underlying idea behind Ti was to use WebWork as the core of Struts Action Framework 2.x. Conceptually, WebWork and Struts 1.x are very similar. We've often said, without embarrassment, that WebWork does many things better than Struts 1.x. Meanwhile, WebWork has the ability to provide a layer of almost full backwards-compatibility for Struts 1.x, and we have already demonstrated we can integrate Beehive's (very cool) Page Flow with WebWork.

這段話明白無誤的指明新框架是以webwork爲core的,並且webwork可以提供一個抽象層,以完全向後兼容Struts1.x,並且struts還可以集成Apache Beehive的Page Flow。

因此,我想那些擔心webwork從此消失的人可以打消顧慮了,消失的只是webwork這個名字,和com.opensymphony的package前綴,而webwork的程序架構卻不會消失。

對於Struts的使用者來說,Struts雖然擁有一個龐大的使用羣體,但是Struts在技術上已經非常落伍,再不進行重大的架構革新,勢必要被淘汰。因此,這個事情是Struts開發團隊的一次自救的革命,從Struts1.3到Struts Ti的改變如同EJB2到EJB3的改變,舊的Struts1.3的架構被完全拋棄,吸收了更加先進的開源軟件和架構之後,推出的新東西。

對於Webwork的使用者來說,獲得了更加廣泛的用戶羣體和接受度。並且核心開發團隊也得到了壯大,相信未來的新版本推出速度可以更快了,而不是現在這樣,對webwork2.2都望穿秋水了。

另外非常值得注意的是,Struts Ti的目標可不止集成Webwork這麼簡單,看看它的phase 2,集成Beehive的Page Flow,JDK1.5的annotations,目標是Ruby on Rails般的快速開發模式,多麼誘人的前景!

有興趣的可以看一看Struts Ti的項目介紹和進展狀況:

http://wiki.apache.org/struts/StrutsTi
http://wiki.apache.org/struts/StrutsTi/StatusMatrix

從這裏一項一項看下來,Struts Ti基本上就是在webwork2.2上面整合了Beehive的annotation和page flow,好像沒有struts1.x的什麼技術繼承下來。恐怕唯一繼承自struts的只有struts的用戶羣了。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章