當主流計算機應用軟件開始遷移到客戶/服務器體系結構時,程序員們開始尋找方法以簡化使用類似技術並且在結構也類似的工程的開發。這就為現代軟件開發框架打好了基礎。
隨著基於萬維網的應用程序服務器的發展及其相關的應用軟件的膨脹,支持這些技術的開發框架也隨著蓬勃發展。當前,在企業開發領域中出現了許多特別適合於Java J2EE平台的軟件開發框架。
在本文中,我將集中討論現代的Java開發框架,分析它們的特征和各自的使用優點。另外,我還想比較目前流行的生產質量框架,例如Struts,Spring和Hibernate,並詳細討論其基本相似性及有關基本概念。
我將簡短分析被用於支持這些框架的企業開發環境或工具箱,例如Borland JBuilder,Eclipse以及BEA Workbench。請記住,市場上有許多有關這些開發框架的圖書;然而,在任何一篇文章中,要對它們進行深入描述是不可能的。不過,我將盡力討論最廣泛地使用的概念。
1. 共同點幾乎所有現代的網絡開發框架都遵循了模型-視圖-控制(MVC)設計模式--商業邏輯和描述被分開,由一個邏輯流控制器來協調來自客戶端的請求和服務器上將采取的行動。這條途徑成為了網絡開發的事實上的標准。每個框架的內在的機制當然是不同的,但是開發者們使用來設計和實現他們的Web應用軟件的API是很類似的。差別還存在於每個框架提供的擴展方面,例如標簽庫,JavaServer Faces或JavaBean包裝器等。
所有的框架使用不同的技術來協調在Web應用程序之內的導航,例如XML配制文件,java屬性文件或定制屬性。所有的框架在控制器模塊實現的方法方面也存在明顯的不同。例如,EJB可能實例化在每個請求中需要的類或使用Java反射動態地調用一個適當的行動(Action)類。另外,不同框架在各自引入的概念上也有所不同。例如,一個框架可能定義用戶請求和反應(以及錯誤)場所,而另外一個框架可能僅僅定義一個完整的流--從一個請求到多個響答和隨後的再請求……
各種Java框架在它們組織數據流的方法方面是很類似的。在請求發出後,在應用程序服務器上產生一些行動;而作為響應,一些可能包含對象集的數據總是被發送到JSP層。然後,從那些對象--可能是有setter和getter方法的簡單類,javabeans,值對象,或者一些集合對象--中提取數據。現代的Java框架還想方設法簡化開發者的開發任務,如通過使用簡易的API,數據庫連接池,甚至數據庫調用包等提供自動化的追蹤方式來實現。一些框架或者能夠鉤進(hooked into)另外的J2EE技術中,例如JMS(Java消息服務)或JMX,或把這些技術集成到一起。服務器數據持續性和日志也有可能成為框架的一部分。
2. 企業開發環境一些框架在Web開發者社區和企業發展領域變得相當流行。隨著這些框架的日漸成熟並開始發行穩定的版本,商業的IDE(集成發展環境)開始為這些框架提供支持並把他們納入到自己的產品中。一些IDE甚至基於框架的概念開發出整個的產品,例如,BEA WebLogic Workshop就是基於Struts框架建立起來的。
Borland Jbuilder為Struts提供了內建的支持,也支持JSF和JSTL。
Eclipse平台已成為一個很流行的開發工具,部分因為它是基於插件的,部分因為它對於Web框架的支持。現在,出現了眾多的Eclipse插件,甚至完整的基於Eclipse的IDE。許多插件被設計適合於Struts框架開發,例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)。
大多數IDE都具有圖形化的流程和可視化對象(類代理)。例如,下面是一個JBuilder的行動(Action)設計器,用於規劃Web應用程序的頁面順序。
WebLogic Workshop引入Java頁面流程技術,它擴展了Struts框架而提供了一個簡化的開發模型並增加了另外一些特性。Workshop使用頁面流(Page Flows),實現輕易地把用戶接口與導航和商業邏輯分離開來。頁面流由JSP頁組成,這些頁面包含用戶接口元素和一個控制器文件(JPF)--它包含由用戶提供的數據將怎樣被處理的指令以及下一步什麼頁面將被返回到用戶的信息。頁面流動提供給開發者一個可視化的Web應用程序總體輪廓,它讓開發者能夠看到直觀地分析不同的JSP頁彼此相關聯,並實現Web應用程序整體結構的快速建立。
MyEclipse提供類似的特征,並帶有更多吸引人的代價標簽。
3. Apache Struts框架Struts框架是一開源產品,基於模型-視圖-控制器(MVC)設計范例來開發Web應用軟件。它使用並且擴展了Java Servlet API,最初由Craig McClanahan創建。在2000年5月,它被捐贈到Apache Foundation。Struts框架展示了一個強有力的定制標簽庫,平鋪顯示,表單檢驗和I18N(國際化)。另外,Struts支持許多描述層,包括JSP,XML/XSLT,JavaServerFaces(JSF)和Velocity;還支持一些模型層,包括JavaBeans和EJB。
4. Spring框架Spring框架是一個分層的Java/J2EE應用程序框架,基於Expert One-on-One J2EE設計和發行的代碼。Spring框架提供一種簡單的開發技術,用於自動化處理工程中大量的屬性文件和助理類。
Spring框架包括的主要特色有:
·強有力的基於JavaBeans的配置管理,使用Inversion-of-Control(IoC)原則。
·一個核心bean工廠,可用在任何環境,從applets到J2EE容器程序。
·通用的抽象層適合於數據庫事務管理,允許可插入的事務管理器,並且不需要處理低層次的問題就可容易地劃分各事務的界限。
·一個很有意義的異常處理的JDBC抽象層。
·與Hibernate集成到一起,DAO實現支持以及事務策略。
5. Hibernate框架Hibernate是一適合於Java語言的對象-關系映射(ORM)解決方案。它也是開源軟件,類似Struts,並且在LGPL保護下發布。Hibernate被一群來自世界各地的Java軟件開發者所共同開發。它提供一個易用的框架來實現把一個面向對象的域模型映射到一傳統的關系數據庫。它不僅負責從Java類到數據庫表格(以及來自Java數據類型的SQL數據類型)的映射,而且還提供數據查詢和檢索能力,並能大大減少花在SQL和JDBC手工數據處理上的開發時間。
Hibernate的目標是減輕開發者的與大量普通的數據持續性相聯系的編程任務。Hibernate還能夠適應開發進程,無論它是剛開始設計還是來自一現成的數據庫。Hibernate可以自動生成SQL,使開發者擺脫了手工處理結果集和進行對象轉化的繁瑣任務,並能使應用程序移植到所有的SQL數據庫。它還能提供透明的持續性,對持續性類的唯一的要求的是實現一個無參數的構造器。
這個框架典型地使用在JavaSwing應用軟件、基於Servlet的Java應用軟件和使用EJBsession beans的J2EE應用軟件中。
6. 結論本文概述了現代最流行的Java Web開發框架。當然,還有更多框架尚未描述,開源和商業化的都有,例如WebWork(http://www.opensymphony.com/webwork/)或Tapestry(http://jakarta.apache.org/tapestry/);而許多框架通過擴展另外的MVC框架在內部被成功開發。當前,最流行的框架是Apache Struts。當Web開發競技場繼續演變它的工具和編程方法時,Java應用程序框架也將繼續成長下去。Java Web開發框架的未來一片明亮!