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

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

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

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

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

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

  1. 共同點(diǎn)

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

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

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

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

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

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


  Eclipse平臺(tái)已成為一個(gè)很流行的開(kāi)發(fā)工具,部分因?yàn)樗腔诓寮,部分因(yàn)樗鼘?duì)于Web框架的支持。現(xiàn)在,出現(xiàn)了眾多的Eclipse插件,甚至完整的基于Eclipse的IDE。許多插件被設(shè)計(jì)適合于Struts框架開(kāi)發(fā),例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)。


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

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


  MyEclipse提供類(lèi)似的特征,并帶有更多吸引人的代價(jià)標(biāo)簽。


  3. Apache Struts框架

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

  4. Spring框架

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

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

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

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

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

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

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

  5. Hibernate框架

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

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

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

  6. 結(jié)論

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