


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java企業(yè)應(yīng)用系統(tǒng)框架的比較與選擇內(nèi)部編號(hào):(YUUT-TBBYMMITI RRUY-UOOYDBUYI0128)Java 企業(yè)應(yīng)用系統(tǒng)框架的比較與選擇作者:來源:不詳2006年10月22曰引言EJB的體系結(jié)構(gòu)是的基礎(chǔ)和核心,J2EE定義了整個(gè)的應(yīng)用開發(fā)體系結(jié)構(gòu)和一 個(gè)部署環(huán)境,基于EJB的框架一度成為人們開發(fā)企業(yè)應(yīng)用的首選。隨著Java開源 項(xiàng)目陣營的發(fā)展壯大,一些基于POJOs (Plan Old Java Objects)的開源框架被越 來越廣泛地引入到Java企業(yè)應(yīng)用的開發(fā)中來。根據(jù)復(fù)雜程度人們習(xí)慣把前者稱為 重量級(jí)框架,把后者稱為輕量級(jí)框架。Java企業(yè)應(yīng)用框架一般被劃分為三個(gè)層
2、次:表現(xiàn)層、業(yè)務(wù)邏輯組件層和持久層。本文主要對(duì)目前企業(yè)應(yīng)用對(duì)應(yīng)于這三個(gè) 層次的兩種類型的流行框架進(jìn)行了細(xì)節(jié)比較,最后針對(duì)Java企業(yè)應(yīng)用的系統(tǒng)框架 選擇提出作者的觀點(diǎn)。兩種類型框架概述1、基于EJB的重量級(jí)框架由于EJB容器能夠很好的處理系統(tǒng)性能、事務(wù)機(jī)制、訪問權(quán)限以及運(yùn)算等問 題,基于EJB框架進(jìn)行開發(fā)能保證企業(yè)應(yīng)用平滑發(fā)展,而不是發(fā)展到一種規(guī)模就 重新更換一套軟件系統(tǒng),且可以保證開發(fā)人員將大部份精力集中在業(yè)務(wù)邏輯的開 發(fā)上。采用EJB框架開發(fā)的企業(yè)應(yīng)用具有必須繼承或依賴EJB容器的待點(diǎn)。EJB充 分考慮到了頂級(jí)大型項(xiàng)目的需求,使用它兒乎能解決企業(yè)級(jí)應(yīng)用涉及到的所有問 題,相應(yīng)的基于EJB框
3、架也是一個(gè)功能復(fù)雜的重量級(jí)框架。標(biāo)準(zhǔn)規(guī)定的EJB框架缺少設(shè)計(jì)且實(shí)現(xiàn)起來有些過于復(fù)雜。當(dāng)前的新規(guī)范提出 的EJB的目標(biāo)就是簡化開發(fā)1,借鑒了一些基于POJO的思想,它相對(duì)于中兩個(gè) 重要的變化分別是:一是使用了 Java5中的程序注釋工具,注釋取代了過多的XML 配置文件并且消除了嚴(yán)格組件模型需求;二是采用了基于Hibernate和TopLink 思想的0/R Mapping模型。的新規(guī)范中定義企業(yè)應(yīng)用三個(gè)層次的標(biāo)準(zhǔn)實(shí)現(xiàn)為:表現(xiàn)層釆用JSF (Java Server Face) , JSF的開發(fā)流程的核心是事件驅(qū)動(dòng),組件和標(biāo)簽的封裝程度非常 高,很多典型應(yīng)用已經(jīng)不需要開發(fā)者去處理httpo整個(gè)過程
4、是通過IoC(依賴注 入)2來實(shí)現(xiàn)的;業(yè)務(wù)組件層采用的Session Bean。允許開發(fā)者使用藕合松散的 組件來開發(fā)應(yīng)用。這些組件通過白己發(fā)布的商業(yè)接口來耦合,不必像EJB規(guī)范定 義的那樣一個(gè)Bean必須遵守的嚴(yán)格的組件模型,每一個(gè)EJB類必須從某一種抽象 類中繼承,并為容器提供了回調(diào)的鉤子;持久層采用實(shí)體Bean持久化模型,吸收 了 Hibernate的一些思想采用0/R Mapping模式,EJBQL也有許多重要的改變。2、基于POJOs的輕量級(jí)框架在基于POJOs輕量級(jí)框架上開發(fā)的應(yīng)用程序無需依賴于EJB容器可獨(dú)立運(yùn) 行,對(duì)應(yīng)于Java企業(yè)應(yīng)用三個(gè)層次的輕量級(jí)框架技術(shù)分別都得到了一定的發(fā)
5、展, 這三個(gè)層次流行的框架如下:目前比較流彳亍的開源表現(xiàn)層框架主要有Struts和Tapestryo Tapestry與 Struts應(yīng)用框架不同的是,它是基于組件,而不是面向腳本語言(比如和 Velocity)的,組件是由一個(gè)定義文件(以XML的格式)、一個(gè)模板、一個(gè)JAVA類構(gòu)成的;業(yè)務(wù)組件層輕量級(jí)解決方案也不少,包括Springs Hivemind等。但是目 前使用最為廣泛的還是Spring框架,Spring框架是一個(gè)基于IoC和A0P (面向方 面編程)3的構(gòu)架。采用IoC使得它可以很容易的實(shí)現(xiàn)bean的裝配,提供了簡 潔的A0P并據(jù)此實(shí)現(xiàn)事務(wù)管理等,但是它不具備處理應(yīng)用分布式的能力。
6、Spring 的核心要點(diǎn)是:支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對(duì)象。這 樣的對(duì)象可以在不同J2EE環(huán)境(或EJB)、獨(dú)立應(yīng)用程序、測試環(huán)境之間重 用;持久層框主要有Hibernate和各種JD0產(chǎn)品,以及iBATISo Hibernate是一* 個(gè)開源的0/R Mapping框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,可以應(yīng)用 在任何使用JDBC的場合,可以在應(yīng)用EJB的J2EE框架中取代CMP,完成數(shù)據(jù)持久 化的重任。iBATIS是一個(gè)簡易的SQL Map工具,它是將手工編寫的在xml配置文 件中的SQL語句映射成Java對(duì)象。對(duì)應(yīng)于三個(gè)層次的框架比較1、表現(xiàn)層框架比較MV
7、C設(shè)計(jì)模式不再是某一種表現(xiàn)層框架的特點(diǎn)而是這兒種框架的共性。Struts 框架由于出現(xiàn)時(shí)間早,所以使用相對(duì)廣泛,它的非?;钴S,很容易找到很多現(xiàn)成 的開源功能標(biāo)簽以供使用以及樣例程序可供參考。但是它的組件在頁面中顯示的 粗粒度,以及框架類的限制在很多情況下會(huì)表現(xiàn)得過于死板,給表示層的開發(fā)會(huì) 帶來一些額外的代碼開銷。JSF在很大程度上類似Struts,只是JSF的組件概念 沒有象Struts那樣必須繼承ActionForm的限制,JSF在事件粒度上要比Struts 細(xì)膩。JSF有的另外一個(gè)優(yōu)勢就是其身后有Sun公司和其他的一些大公司的支持。 Tapestry是一個(gè)完全組件的框架,Tapestry的
8、組件可以被套嵌并包裹其它組件,因此可以組合形成一個(gè)更大的組件或邏輯頁面。組件的行為模式為Web頁面編程 提供了很大的方便,事件處理也方便很多。所以,如果做一個(gè)對(duì)頁面要求靈活度 相當(dāng)高的系統(tǒng)就可以考慮選用Tapestry。表1三種框架的表現(xiàn)層功能技術(shù)細(xì)節(jié)比較2、業(yè)務(wù)組件層框架比較EJB框架有些過于復(fù)雜了,有如下缺點(diǎn): EJB模型需要建立許多組件接口和實(shí)現(xiàn)許多不必要的回滾方法; EJB的部署描述復(fù)雜而容易出錯(cuò); 開發(fā)人員不能脫離EJB容器測試。對(duì)于以上缺點(diǎn)JCP ( CommunityProcess)制訂的框架做了相應(yīng)的改進(jìn),該框架為所有主要的廠商支持。和Spring 兩個(gè)框架結(jié)構(gòu)都有一個(gè)共同核心
9、設(shè)計(jì)理念:將中間件服務(wù)傳遞給耦合松散的 POJOso框架與應(yīng)用服務(wù)器高度整合,服務(wù)整合代碼也包裝在一個(gè)標(biāo)準(zhǔn)接口后面。EJB框架一方面有成熟的EJB容器支持,基于EJB框架的企業(yè)應(yīng)用性能優(yōu)良;另一方 面EJB容器設(shè)計(jì)因?yàn)榭紤]了多方面的功能,所以在其內(nèi)核上總是會(huì)顯得臃腫,這 也是一種重量表現(xiàn)。不需要的東西存在肯定會(huì)影響效率,EJB不能根據(jù)項(xiàng)目需求對(duì) EJB整體包括EJB容器進(jìn)行可配置式的切割。Spring框架處于應(yīng)用服務(wù)器和服務(wù)庫的上方,服務(wù)整合的代碼屬于框架,并 暴露于應(yīng)用開發(fā)者。它與應(yīng)用服務(wù)器整合的能力相對(duì)要弱。但是Spring框架模塊 的可分離配置體現(xiàn)了它優(yōu)于的靈活性。表2 EJB和Spri
10、ng框架的具體細(xì)節(jié)比較3、持久層框架比較容器管理持久性(CMP)是對(duì)EJB中Entity Bean進(jìn)行持久性管理的方式。 持久性模型過于復(fù)雜并且存在基礎(chǔ)缺陷3。持久層針對(duì)的缺陷做了相應(yīng)改進(jìn),采 用與Hibernate類似的機(jī)制。Hibernate相對(duì)而言其基本優(yōu)勢如下:©Hibernate使用Java反射機(jī)制而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性; Hibernate的使用簡單; 映射的靈活性很出色,它支持各種關(guān)系數(shù)據(jù)庫,從一對(duì)一到多對(duì)多的各種 復(fù)雜關(guān)系。Hibernate也有一些缺點(diǎn),它限制所使用的對(duì)象模型(例如,一個(gè)持 久性類不能映射到多個(gè)表)。使用i BAT IS提供的0/R Map
11、ping機(jī)制,對(duì)業(yè)務(wù)邏輯實(shí)現(xiàn)人員而言,面對(duì)的是 純粹的Java對(duì)象,這一層與通過Hibernate實(shí)現(xiàn)0/R Mapping而言基本一致, 而對(duì)于具體的數(shù)據(jù)操作,Hibernate會(huì)自動(dòng)生成SQL語句,而iBATIS則要求開發(fā) 者編寫具體的SQL語句。相對(duì)Hibernate等“全自動(dòng)” 0/R Mapping機(jī)制而言, iBATIS以SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計(jì)提供了更大的 白由空間。作為“全自動(dòng)” ORM實(shí)現(xiàn)的一種有益補(bǔ)充,iBATIS的出現(xiàn)顯得別具意 義。企業(yè)框架選擇設(shè)計(jì)和性能是實(shí)際框架選擇的兩個(gè)基本點(diǎn),善于平衡才是框架選擇的主要宗 旨。輕量級(jí)框架和重量級(jí)框架解決問
12、題的側(cè)重點(diǎn)是不同的。輕量級(jí)框架側(cè)重于減小開發(fā)的復(fù)雜度,相應(yīng)的它的處理能力便有所減弱(如 事務(wù)功能弱、不具備處理能力),比較適用于開發(fā)中小型企業(yè)應(yīng)用。采用輕量框 架一方面因?yàn)楸M可能的采用基于POJOs的方法進(jìn)行開發(fā),使應(yīng)用不依賴于任何容 器,這可以提高開發(fā)調(diào)試效率;另一方面輕量級(jí)框架多數(shù)是開源項(xiàng)目,開源提供 了良好的設(shè)計(jì)和許多快速構(gòu)建工具以及大量現(xiàn)成可供參考的開源代碼,這有利于 項(xiàng)目的快速開發(fā)。例如目前Tomcat+Spring+Hibernate已經(jīng)成為許多開發(fā)者開發(fā) 中小型企業(yè)應(yīng)用偏愛的一種架構(gòu)選擇。隨著可供選擇的框架層出不窮,開發(fā)者可 以根據(jù)需要對(duì)應(yīng)于企業(yè)應(yīng)用三個(gè)層次的輕量級(jí)框架選擇,本文
13、第2節(jié)的內(nèi)容可供 選擇參考。而作為重量級(jí)框架EJB框架則強(qiáng)調(diào)高可伸縮性,適合與開發(fā)大型企業(yè)應(yīng)用。 在EJB體系結(jié)構(gòu)中,一切與基礎(chǔ)結(jié)構(gòu)服務(wù)相關(guān)的問題和底層分配問題都由應(yīng)用程 序容器或服務(wù)器來處理,且EJB容器通過減少數(shù)據(jù)庫訪問次數(shù)以及分布式處理等 方式提供了專門的系統(tǒng)性能解決方案,能夠充分解決系統(tǒng)性能問題。輕量級(jí)框架的產(chǎn)生并非是對(duì)重量級(jí)框架的否定,找至在某種程度上可以說二 者是互補(bǔ)的。輕量級(jí)框架在努力發(fā)展以開發(fā)具有更強(qiáng)大,功能更完備的企業(yè)應(yīng) 用;而新的EJB規(guī)范則在努力簡化J2EE的使用以使得EJB不僅僅是擅長處理大型 企業(yè)系統(tǒng),也利用開發(fā)中小型系統(tǒng),這也是EJB輕量化的一種努力。對(duì)于大型企 業(yè)應(yīng)用以及將來可能涉及到能力擴(kuò)展的中小型應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州理工學(xué)院《數(shù)控技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 安徽涉外經(jīng)濟(jì)職業(yè)學(xué)院《網(wǎng)店運(yùn)營與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年中國通信服務(wù)湖南省通信產(chǎn)業(yè)服務(wù)有限公司招聘筆試參考題庫含答案解析
- 2025年浙江溫州瑞安市甌飛建設(shè)投資開發(fā)有限公司招聘筆試參考題庫含答案解析
- 圓形小豬創(chuàng)意美術(shù)課件
- 揮手懷念我的父親
- 點(diǎn)亮創(chuàng)業(yè)之星-掌握市場策略遵循法律規(guī)定
- 迎接未來-固體飲料制造年終總結(jié)-固體飲料發(fā)布會(huì)
- 家裝設(shè)計(jì)方案講解要點(diǎn)
- 房產(chǎn)領(lǐng)域年度峰會(huì)
- NB-T+10110-2018風(fēng)力發(fā)電場技術(shù)監(jiān)督導(dǎo)則
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗(yàn)方法標(biāo)準(zhǔn)
- 2024高考有機(jī)專題真題
- 2024旋轉(zhuǎn)電機(jī)繞組絕緣第2部分:定子繞組絕緣在線局部放電測量
- TD/T 1068-2022 國土空間生態(tài)保護(hù)修復(fù)工程實(shí)施方案編制規(guī)程(正式版)
- DZ∕T 0382-2021 固體礦產(chǎn)勘查地質(zhì)填圖規(guī)范(正式版)
- 《研學(xué)旅行課程設(shè)計(jì)》課件-研學(xué)課程方案設(shè)計(jì)
- 小兒補(bǔ)液的基礎(chǔ)與臨床課件
- GB/T 9442-2024鑄造用硅砂
- 戲劇之美(山東聯(lián)盟)智慧樹知到期末考試答案2024年
- MOOC 商務(wù)英語-北京交通大學(xué) 中國大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論