<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無(wú)為

    無(wú)為則可為,無(wú)為則至深!

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    1. 備受爭(zhēng)議的EJB

      EJB也許是Java領(lǐng)域里中最受爭(zhēng)議的技術(shù)了。有人說(shuō)EJB是最偉大的發(fā)明,也有人說(shuō)EJB完全是多此一舉;當(dāng)一些人陶醉于EJB的深?yuàn)W理論時(shí),另外一些人卻正被EJB的繁瑣復(fù)雜所折磨;嘗到EJB甜頭的人,在EJB的每個(gè)新版本中,都能發(fā)現(xiàn)盼望已久的驚喜,而被EJB拒之門外的人,則隨著EJB的升級(jí),愈發(fā)對(duì)EJB敬而遠(yuǎn)之了。

      EJB的全稱是Enterprise JavaBeans,JavaBeans很普通,不過(guò)Enterprise就不那么簡(jiǎn)單了。什么技術(shù),一旦被冠以Enterprise的名頭,就像男人走入婚姻殿堂一樣,身上的責(zé)任與單身漢不可同日而語(yǔ)了。從定義上看,JavaBeans只是J2SE平臺(tái)上的一個(gè)組件架構(gòu),包含一些業(yè)務(wù)邏輯,并且可以被重用。

      EJB不同,作為企業(yè)級(jí)的JavaBeans,Sun對(duì)EJB的定位要遠(yuǎn)遠(yuǎn)高于JavaBeans,所以EJB的目標(biāo)也比JavaBeans要遠(yuǎn)大得多,除了作為一個(gè)包含業(yè)務(wù)邏輯的可重用組件外,EJB更被賦予了諸如“可移植”、“安全”、“可伸縮”、“交易性”等特征。

      所有這些EJB必須具備的特征,其實(shí)正是企業(yè)應(yīng)用所要求的。這也是Enterprise一詞所代表的技術(shù)上的含義。企業(yè)應(yīng)用不同于普通應(yīng)用,企業(yè)應(yīng)用是大規(guī)模的、高復(fù)雜度的和關(guān)鍵的,它所面臨的挑戰(zhàn),要比普通應(yīng)用艱巨得多。比如,企業(yè)應(yīng)用對(duì)可移植性的要求非常高,這是因?yàn)椋髽I(yè)都不愿意將自己的未來(lái)綁定到某個(gè)供應(yīng)商的身上,除非是不得已而為之;又比如,安全性對(duì)企業(yè)應(yīng)用至關(guān)重要,誰(shuí)能使用什么功能、哪些數(shù)據(jù)哪些人可以看到,都有嚴(yán)格的限制;更不用說(shuō)的是企業(yè)應(yīng)用的可伸縮性了,當(dāng)業(yè)務(wù)規(guī)模變大時(shí),你希望全盤推翻舊系統(tǒng),采購(gòu)一批嶄新的軟件和硬件,對(duì)IT系統(tǒng)來(lái)個(gè)徹底的革命嗎?增加一臺(tái)服務(wù)器就能應(yīng)付更多的客戶,我想這是頭腦正常的企業(yè)家都希望的。

      企業(yè)應(yīng)用的需求,就是EJB的目標(biāo)。用EJB開發(fā)的應(yīng)用,完全符合企業(yè)應(yīng)用的特征。EJB是一個(gè)規(guī)范,只要符合這個(gè)規(guī)范,EJB可以在不同的操作系統(tǒng)、不同的應(yīng)用服務(wù)器中無(wú)縫地移植;EJB允許開發(fā)者在EJB部署描述文件中進(jìn)行方法級(jí)的、基于角色的安全性配置,以統(tǒng)一的方式保護(hù)企業(yè)應(yīng)用和數(shù)據(jù)的安全性;只要你愿意,EJB應(yīng)用可以全部部署在一臺(tái)單獨(dú)的服務(wù)器上,也可以任何組合方式分布在一組服務(wù)器群中,滿足你擴(kuò)大規(guī)模和均衡負(fù)載的要求;如果你想保持事務(wù)的完整性,那么,EJB的事務(wù)管理是一個(gè)可靠的、穩(wěn)健的解決方案。

      這就是EJB,一個(gè)企業(yè)應(yīng)用的集大成者,多種技術(shù)的濃縮精華,全能的框架和基礎(chǔ)結(jié)構(gòu)。可就是這樣一個(gè)將企業(yè)應(yīng)用的開發(fā)簡(jiǎn)化到了前所未有之程度的技術(shù),卻成為許多人口誅筆伐的對(duì)象。復(fù)雜、難以使用、性能低下、繁瑣等等,從1998年EJB誕生之日起,各種各樣的惡名就伴隨左右,直到八年后的今天,當(dāng)EJB迎來(lái)它的第三次大變臉時(shí),質(zhì)疑之聲依然不絕于耳。EJB真的那么糟糕嗎?

      2. EJB是企業(yè)應(yīng)用的先驅(qū)

      筆者接觸第一個(gè)企業(yè)應(yīng)用,是在1997年。那時(shí)PowerBuilder風(fēng)頭正勁,不過(guò),多數(shù)人使用PowerBuilder,是因?yàn)樗臄?shù)據(jù)窗口。當(dāng)時(shí)筆者在一個(gè)項(xiàng)目中遇到一個(gè)難題,那就是如何把一臺(tái)服務(wù)器上的應(yīng)用一分為二,跑在兩臺(tái)服務(wù)器上,以提高性能。這是典型的分布式應(yīng)用,雖然不是一個(gè)完整意義上的企業(yè)應(yīng)用,不過(guò),因?yàn)閼?yīng)用中需要用到分布式的概念,多少也算和企業(yè)應(yīng)用沾上邊了。

      PowerBuilder其實(shí)是個(gè)非常不錯(cuò)的開發(fā)工具,在1997年的時(shí)候,已經(jīng)提出了分布式應(yīng)用的概念,并且付諸實(shí)施了。在PowerBuilder中,一個(gè)組件可以有一個(gè)稱為代理的對(duì)象,這個(gè)對(duì)象可以運(yùn)行在與組件不同的機(jī)器上,其他組件通過(guò)代理可以訪問(wèn)該組件的功能。

      這是一個(gè)很初級(jí)的分布式應(yīng)用框架,不過(guò),那時(shí)已經(jīng)給了筆者很大的震動(dòng)。我試著編了一個(gè)實(shí)驗(yàn)性質(zhì)的程序,當(dāng)我在一臺(tái)機(jī)器上按下一個(gè)按鈕時(shí),另外一臺(tái)機(jī)器上赫然彈出一個(gè)預(yù)期中的對(duì)話框,著實(shí)讓我大吃一驚。沒(méi)有任何Socket編程,也不需要關(guān)心實(shí)際的應(yīng)用跑在哪臺(tái)機(jī)器上,PowerBuilder讓我首次見識(shí)了分布式應(yīng)用框架的巨大威力。

      PowerBuilder解決了分布的問(wèn)題,但安全性和事務(wù)控制,仍然需要程序員自己想辦法。十個(gè)程序員可以有十種解決方案,每種都不同,而每種都可能含有未經(jīng)發(fā)現(xiàn)的缺陷。在EJB之前,企業(yè)應(yīng)用的開發(fā)沒(méi)有規(guī)范可循,每個(gè)公司都有自己的一套方案,盡管每個(gè)公司都對(duì)自己的方案充滿信心,但其實(shí)這些未經(jīng)大量應(yīng)用考驗(yàn)的方案,都有著這樣那樣的不足或局限。
    J2EE是第一個(gè)為業(yè)界所廣為接受的完整的企業(yè)應(yīng)用框架,而EJB在其中扮演重要角色。在J2EE框架的支持下,運(yùn)行在EJB容器中的EJB,完全符合企業(yè)應(yīng)用關(guān)于分布、移植、安全和交易的要求。這對(duì)于企業(yè)應(yīng)用的開發(fā)者來(lái)說(shuō),意義非同尋常。首先,現(xiàn)在大家可以在一個(gè)公共的平臺(tái)技術(shù)上構(gòu)建自己的企業(yè)應(yīng)用,不必絞盡腦汁“發(fā)明”自己的“輪子”,從而節(jié)省大量無(wú)謂的、重復(fù)性的技術(shù)和時(shí)間投入;其次,一個(gè)公開的平臺(tái),讓大量的企業(yè)應(yīng)用開發(fā)者有了共同語(yǔ)言,可以相互交流平臺(tái)的使用經(jīng)驗(yàn)和教訓(xùn),這樣,隨著平臺(tái)之上企業(yè)應(yīng)用的不斷增加,平臺(tái)的優(yōu)劣得失一覽無(wú)遺,有利于平臺(tái)的改進(jìn)和發(fā)展。

      這就是EJB為企業(yè)應(yīng)用作出的貢獻(xiàn)。在EJB之前,多數(shù)人不知企業(yè)應(yīng)用為何物,或者雖然有企業(yè)應(yīng)用的模糊概念,但要編寫一個(gè)企業(yè)應(yīng)用,談何容易。不同的操作系統(tǒng)、不同的開發(fā)語(yǔ)言、不同的網(wǎng)絡(luò)環(huán)境、不同的應(yīng)用終端,開發(fā)一個(gè)企業(yè)應(yīng)用,程序員面臨著兩難的抉擇:要么限定應(yīng)用的軟硬件平臺(tái),或者犧牲應(yīng)用的安全性、分布性或交易性,開發(fā)一個(gè)“偽”企業(yè)應(yīng)用;要么下決心開發(fā)一個(gè)真正的企業(yè)應(yīng)用,然后累死自己。

      3. EJB是一種思想

      EJB讓程序員編寫真正意義上的企業(yè)應(yīng)用而不必累死,應(yīng)該說(shuō),EJB已經(jīng)是企業(yè)應(yīng)用開發(fā)領(lǐng)域的一大進(jìn)步,讓企業(yè)應(yīng)用和普通應(yīng)用的開發(fā)差距縮短到了前所未有的程度,可是,為什么還有很多人抱怨EJB過(guò)于復(fù)雜呢?EJB的復(fù)雜性其實(shí)是個(gè)偽命題。所謂復(fù)雜,一定是相對(duì)的。如果和普通應(yīng)用相比,EJB當(dāng)然要復(fù)雜很多,因?yàn)槿藗儗?duì)于普通應(yīng)用沒(méi)有企業(yè)應(yīng)用那么苛刻的要求。但是,如果將EJB之前和EJB之后的企業(yè)應(yīng)用開發(fā)的難度相比,相信人們就會(huì)對(duì)EJB贊譽(yù)有加了。舉個(gè)不準(zhǔn)確的例子,假如EJB之前,企業(yè)應(yīng)用的難度是普通應(yīng)用的10倍,那么,EJB之后,這個(gè)比例縮小到了5倍,批評(píng)EJB復(fù)雜者,只看到了還剩下的5倍復(fù)雜度,卻沒(méi)有看到EJB所減去的5倍復(fù)雜度。

      關(guān)于EJB過(guò)于復(fù)雜的論斷,還來(lái)自于與其競(jìng)爭(zhēng)技術(shù)的比較。例如,Spring就是一個(gè)聲稱比EJB更簡(jiǎn)單的、輕量級(jí)的企業(yè)應(yīng)用框架。Spring確實(shí)簡(jiǎn)單,很多人喜歡Spring,也正是因?yàn)镾pring簡(jiǎn)單。可是,Spring的支持者們,忽略了一個(gè)基本的事實(shí),那就是Spring的功能要比EJB弱,也就是說(shuō),Spring是通過(guò)放棄某些不常用的功能來(lái)達(dá)到簡(jiǎn)化目的的。Spring好比一輛沒(méi)有安全氣囊的車,盡管依然可以拉客跑運(yùn)輸,但一旦發(fā)生碰撞事故,也許司機(jī)會(huì)陪上性命。沒(méi)有安全氣囊的Spring,在制造上當(dāng)然要比有安全氣囊的EJB簡(jiǎn)單,而且輕便,跑得快,不過(guò),Spring始終不適合投入正式營(yíng)運(yùn)。這就是為什么不推薦在大型企業(yè)應(yīng)用上采用Spring的原因。沒(méi)有完善的事務(wù)處理,不能提供7X24小時(shí)的服務(wù),Spring邁不過(guò)關(guān)鍵企業(yè)應(yīng)用的門檻。

      與Spring形影不離的是Java對(duì)象持久化的“紅人”Hibernate。Hibernate的矛頭直指EJB的Entity Bean。Entity Bean,尤其是它的持久化技術(shù),是最為程序員所詬病的,成為EJB揮之不去的陰影,并最終促成了Hibernate的輝煌。Hibernate其實(shí)并不精深,在技術(shù)上也沒(méi)有太多值得稱道的創(chuàng)新,但它的文檔非常優(yōu)秀。我知道很多程序員就是被Hibernate的文檔所吸引的,他們只學(xué)過(guò)一些SQL初步,沒(méi)有系統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)理論知識(shí),Hibernate關(guān)于數(shù)據(jù)庫(kù)表間關(guān)系的論述,深入淺出,十分精彩,讓他們?cè)趯?duì)關(guān)系數(shù)據(jù)庫(kù)的理解上有了迅猛突破的同時(shí),Hibernate輕易的俘虜了他們的心。

      Hibernate的成功,反襯了EJB在持久化方面的失敗,但在我看來(lái),這并不影響EJB的偉大。與其說(shuō)EJB是一種技術(shù),不如說(shuō)EJB的是一種思想更恰當(dāng),而不論Hibernate還是Spring,只不過(guò)是一種工具,他們只是跟在EJB后面,發(fā)現(xiàn)了EJB的某些不足,然后有針對(duì)性地加以改進(jìn),以迎合普通程序員對(duì)于“技術(shù)快餐”的需求。

      他們既沒(méi)有從形形色色的企業(yè)應(yīng)用中,抽象出隱藏在不同表現(xiàn)后面的本質(zhì)特征,也沒(méi)有創(chuàng)造性地用Stateless Session Bean和Stateful Session Bean來(lái)描述千變?nèi)f化的現(xiàn)實(shí)世界。工具只是工具,不出兩年就會(huì)有新的后起之秀,取而代之,但思想的光輝將長(zhǎng)久地照亮技術(shù)的未來(lái)。EJB是一種思想,更是一種理想,盡管理想和現(xiàn)實(shí)總是存在差距,但這不能成為我們放棄EJB的理由。一種滿足企業(yè)應(yīng)用分布性、擴(kuò)展性、安全性和交易性要求的、方便使用的框架技術(shù),既是EJB的理想,也是廣大程序員的理想。



    凡是有該標(biāo)志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
    、轉(zhuǎn)載請(qǐng)注明來(lái)處和原文作者。非常感謝。

    posted on 2007-01-12 09:30 草兒 閱讀(231) 評(píng)論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 国产精品无码一二区免费| 亚洲精品福利在线观看| 国产精品免费大片| 亚洲欧洲日产国产最新| 精品国产免费观看| 精品亚洲永久免费精品| 亚洲中文字幕无码av| 自拍偷自拍亚洲精品情侣| 日韩亚洲国产高清免费视频| 免费大片黄在线观看| 亚洲精品高清国产麻豆专区| 免费一级毛片清高播放| 95老司机免费福利| aa午夜免费剧场| 亚洲色成人网站WWW永久四虎| 亚洲自偷自偷在线制服| 成人黄动漫画免费网站视频| 好吊色永久免费视频大全| 亚洲kkk4444在线观看| 国产亚洲精AA在线观看SEE| 午夜成人免费视频| 久久精品国产这里是免费| 羞羞网站在线免费观看| 综合自拍亚洲综合图不卡区| 亚洲精品专区在线观看| 成人激情免费视频| 99视频在线精品免费| 国产福利在线观看永久免费| 亚洲av片在线观看| 亚洲啪啪免费视频| 久久亚洲国产精品| 亚洲最大激情中文字幕| 免费看一级做a爰片久久| aa级一级天堂片免费观看| 久久久久成人精品免费播放动漫| 真人无码作爱免费视频| 亚洲AV成人影视在线观看| 亚洲自偷自偷精品| 亚洲AV综合色一区二区三区| 国产亚洲人成网站在线观看| 国产一级淫片视频免费看|