明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

現(xiàn)代Java Web開發(fā)架構(gòu)區(qū)分

[摘要]當主流計算機應(yīng)用軟件開始遷移到客戶/服務(wù)器體系結(jié)構(gòu)時,程序員們開始尋找方法以簡化使用類似技術(shù)并且在結(jié)構(gòu)也類似的工程的開發(fā)。這就為現(xiàn)代軟件開發(fā)框架打好了基礎(chǔ)。  隨著基于萬維網(wǎng)的應(yīng)用程序服務(wù)器的發(fā)展及其相關(guān)的應(yīng)用軟件的膨脹,支持這些技術(shù)的開發(fā)框架也隨著蓬勃發(fā)展。當前,在企業(yè)開發(fā)領(lǐng)域中出現(xiàn)了許多特別適...
當主流計算機應(yīng)用軟件開始遷移到客戶/服務(wù)器體系結(jié)構(gòu)時,程序員們開始尋找方法以簡化使用類似技術(shù)并且在結(jié)構(gòu)也類似的工程的開發(fā)。這就為現(xiàn)代軟件開發(fā)框架打好了基礎(chǔ)。

  隨著基于萬維網(wǎng)的應(yīng)用程序服務(wù)器的發(fā)展及其相關(guān)的應(yīng)用軟件的膨脹,支持這些技術(shù)的開發(fā)框架也隨著蓬勃發(fā)展。當前,在企業(yè)開發(fā)領(lǐng)域中出現(xiàn)了許多特別適合于Java J2EE平臺的軟件開發(fā)框架。

  在本文中,我將集中討論現(xiàn)代的Java開發(fā)框架,分析它們的特征和各自的使用優(yōu)點。另外,我還想比較目前流行的生產(chǎn)質(zhì)量框架,例如Struts,Spring和Hibernate,并詳細討論其基本相似性及有關(guān)基本概念。

  我將簡短分析被用于支持這些框架的企業(yè)開發(fā)環(huán)境或工具箱,例如Borland JBuilder,Eclipse以及BEA Workbench。請記住,市場上有許多有關(guān)這些開發(fā)框架的圖書;然而,在任何一篇文章中,要對它們進行深入描述是不可能的。不過,我將盡力討論最廣泛地使用的概念。

  1. 共同點

  幾乎所有現(xiàn)代的網(wǎng)絡(luò)開發(fā)框架都遵循了模型-視圖-控制(MVC)設(shè)計模式--商業(yè)邏輯和描述被分開,由一個邏輯流控制器來協(xié)調(diào)來自客戶端的請求和服務(wù)器上將采取的行動。這條途徑成為了網(wǎng)絡(luò)開發(fā)的事實上的標準。每個框架的內(nèi)在的機制當然是不同的,但是開發(fā)者們使用來設(shè)計和實現(xiàn)他們的Web應(yīng)用軟件的API是很類似的。差別還存在于每個框架提供的擴展方面,例如標簽庫,JavaServer Faces或JavaBean包裝器等。

  所有的框架使用不同的技術(shù)來協(xié)調(diào)在Web應(yīng)用程序之內(nèi)的導(dǎo)航,例如XML配制文件,java屬性文件或定制屬性。所有的框架在控制器模塊實現(xiàn)的方法方面也存在明顯的不同。例如,EJB可能實例化在每個請求中需要的類或使用Java反射動態(tài)地調(diào)用一個適當?shù)男袆樱ˋction)類。另外,不同框架在各自引入的概念上也有所不同。例如,一個框架可能定義用戶請求和反應(yīng)(以及錯誤)場所,而另外一個框架可能僅僅定義一個完整的流--從一個請求到多個響答和隨后的再請求……

  各種Java框架在它們組織數(shù)據(jù)流的方法方面是很類似的。在請求發(fā)出后,在應(yīng)用程序服務(wù)器上產(chǎn)生一些行動;而作為響應(yīng),一些可能包含對象集的數(shù)據(jù)總是被發(fā)送到JSP層。然后,從那些對象--可能是有setter和getter方法的簡單類,javabeans,值對象,或者一些集合對象--中提取數(shù)據(jù),F(xiàn)代的Java框架還想方設(shè)法簡化開發(fā)者的開發(fā)任務(wù),如通過使用簡易的API,數(shù)據(jù)庫連接池,甚至數(shù)據(jù)庫調(diào)用包等提供自動化的追蹤方式來實現(xiàn)。一些框架或者能夠鉤進(hooked into)另外的J2EE技術(shù)中,例如JMS(Java消息服務(wù))或JMX,或把這些技術(shù)集成到一起。服務(wù)器數(shù)據(jù)持續(xù)性和日志也有可能成為框架的一部分。

  2. 企業(yè)開發(fā)環(huán)境

  一些框架在Web開發(fā)者社區(qū)和企業(yè)發(fā)展領(lǐng)域變得相當流行。隨著這些框架的日漸成熟并開始發(fā)行穩(wěn)定的版本,商業(yè)的IDE(集成發(fā)展環(huán)境)開始為這些框架提供支持并把他們納入到自己的產(chǎn)品中。一些IDE甚至基于框架的概念開發(fā)出整個的產(chǎn)品,例如,BEA WebLogic Workshop就是基于Struts框架建立起來的。

  Borland Jbuilder為Struts提供了內(nèi)建的支持,也支持JSF和JSTL。


  Eclipse平臺已成為一個很流行的開發(fā)工具,部分因為它是基于插件的,部分因為它對于Web框架的支持。現(xiàn)在,出現(xiàn)了眾多的Eclipse插件,甚至完整的基于Eclipse的IDE。許多插件被設(shè)計適合于Struts框架開發(fā),例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)。


  大多數(shù)IDE都具有圖形化的流程和可視化對象(類代理)。例如,下面是一個JBuilder的行動(Action)設(shè)計器,用于規(guī)劃Web應(yīng)用程序的頁面順序。

  WebLogic Workshop引入Java頁面流程技術(shù),它擴展了Struts框架而提供了一個簡化的開發(fā)模型并增加了另外一些特性。Workshop使用頁面流(Page Flows),實現(xiàn)輕易地把用戶接口與導(dǎo)航和商業(yè)邏輯分離開來。頁面流由JSP頁組成,這些頁面包含用戶接口元素和一個控制器文件(JPF)--它包含由用戶提供的數(shù)據(jù)將怎樣被處理的指令以及下一步什么頁面將被返回到用戶的信息。頁面流動提供給開發(fā)者一個可視化的Web應(yīng)用程序總體輪廓,它讓開發(fā)者能夠看到直觀地分析不同的JSP頁彼此相關(guān)聯(lián),并實現(xiàn)Web應(yīng)用程序整體結(jié)構(gòu)的快速建立。


  MyEclipse提供類似的特征,并帶有更多吸引人的代價標簽。


  3. Apache Struts框架

  Struts框架是一開源產(chǎn)品,基于模型-視圖-控制器(MVC)設(shè)計范例來開發(fā)Web應(yīng)用軟件。它使用并且擴展了Java Servlet API,最初由Craig McClanahan創(chuàng)建。在2000年5月,它被捐贈到Apache Foundation。Struts框架展示了一個強有力的定制標簽庫,平鋪顯示,表單檢驗和I18N(國際化)。另外,Struts支持許多描述層,包括JSP,XML/XSLT,JavaServerFaces(JSF)和Velocity;還支持一些模型層,包括JavaBeans和EJB。

  4. Spring框架

  Spring框架是一個分層的Java/J2EE應(yīng)用程序框架,基于Expert One-on-One J2EE設(shè)計和發(fā)行的代碼。Spring框架提供一種簡單的開發(fā)技術(shù),用于自動化處理工程中大量的屬性文件和助理類。

  Spring框架包括的主要特色有:

  ·強有力的基于JavaBeans的配置管理,使用Inversion-of-Control(IoC)原則。

  ·一個核心bean工廠,可用在任何環(huán)境,從applets到J2EE容器程序。

  ·通用的抽象層適合于數(shù)據(jù)庫事務(wù)管理,允許可插入的事務(wù)管理器,并且不需要處理低層次的問題就可容易地劃分各事務(wù)的界限。

  ·一個很有意義的異常處理的JDBC抽象層。

  ·與Hibernate集成到一起,DAO實現(xiàn)支持以及事務(wù)策略。

  5. Hibernate框架

  Hibernate是一適合于Java語言的對象-關(guān)系映射(ORM)解決方案。它也是開源軟件,類似Struts,并且在LGPL保護下發(fā)布。Hibernate被一群來自世界各地的Java軟件開發(fā)者所共同開發(fā)。它提供一個易用的框架來實現(xiàn)把一個面向?qū)ο蟮挠蚰P陀成涞揭粋鹘y(tǒng)的關(guān)系數(shù)據(jù)庫。它不僅負責從Java類到數(shù)據(jù)庫表格(以及來自Java數(shù)據(jù)類型的SQL數(shù)據(jù)類型)的映射,而且還提供數(shù)據(jù)查詢和檢索能力,并能大大減少花在SQL和JDBC手工數(shù)據(jù)處理上的開發(fā)時間。

  Hibernate的目標是減輕開發(fā)者的與大量普通的數(shù)據(jù)持續(xù)性相聯(lián)系的編程任務(wù)。Hibernate還能夠適應(yīng)開發(fā)進程,無論它是剛開始設(shè)計還是來自一現(xiàn)成的數(shù)據(jù)庫。Hibernate可以自動生成SQL,使開發(fā)者擺脫了手工處理結(jié)果集和進行對象轉(zhuǎn)化的繁瑣任務(wù),并能使應(yīng)用程序移植到所有的SQL數(shù)據(jù)庫。它還能提供透明的持續(xù)性,對持續(xù)性類的唯一的要求的是實現(xiàn)一個無參數(shù)的構(gòu)造器。

  這個框架典型地使用在JavaSwing應(yīng)用軟件、基于Servlet的Java應(yīng)用軟件和使用EJBsession beans的J2EE應(yīng)用軟件中。

  6. 結(jié)論

  本文概述了現(xiàn)代最流行的Java Web開發(fā)框架。當然,還有更多框架尚未描述,開源和商業(yè)化的都有,例如WebWork(http://www.opensymphony.com/webwork/)或Tapestry(http://jakarta.apache.org/tapestry/);而許多框架通過擴展另外的MVC框架在內(nèi)部被成功開發(fā)。當前,最流行的框架是Apache Struts。當Web開發(fā)競技場繼續(xù)演變它的工具和編程方法時,Java應(yīng)用程序框架也將繼續(xù)成長下去。Java Web開發(fā)框架的未來一片明亮!