J2EE體系結(jié)構(gòu)

          與.NET平臺(tái)相比,Sun公司的標(biāo)準(zhǔn)定義的J2EE體系結(jié)構(gòu)有很少可以討論的空間,因?yàn)榫蜎](méi)有什么可討論的。如果一個(gè)人注意某個(gè)具體開(kāi)發(fā)商的產(chǎn)品,如IBM公司的WebSphere,那么就會(huì)看到其技術(shù)的最大的一部分是WebSphere專(zhuān)用的。比較所有開(kāi)發(fā)商對(duì)J2EE的具體改進(jìn),已經(jīng)超出了本文的范圍,在我的經(jīng)驗(yàn)中,大多數(shù)對(duì)J2EE作為一個(gè)平臺(tái)感興趣的公司對(duì)該標(biāo)準(zhǔn)的可移值性感興趣。任何對(duì)可移值性感興趣的人都會(huì)需要將他們自己局限于Sun公司所定義的標(biāo)準(zhǔn)。
          J2EE體系結(jié)構(gòu)可以被分為5部分:

          Java語(yǔ)言系統(tǒng)

          客戶(hù)端程序設(shè)計(jì)模型

          中間層基礎(chǔ)結(jié)構(gòu)

          程序員企業(yè)級(jí)API

          非程序員可見(jiàn)API

          最后一部分,非程序員可見(jiàn)API,包括定義了如何將其他產(chǎn)品插入到J2EE中的API,如連接器API,以及J2EE模型中被最近的改進(jìn)有效替代的API,如JTA(Java Transaction API)。由于從比較微軟和Sun公司計(jì)劃的角度來(lái)說(shuō),非程序員可見(jiàn)API并不重要,因此在筆者的概述中將不涉及這些方面 (就如同筆者在.NET平臺(tái)概述中并沒(méi)有涉及功能相當(dāng)?shù)腁PI一樣)。

          Java語(yǔ)言系統(tǒng)

          在高層次上,Java語(yǔ)言系統(tǒng)看起來(lái)與.NET Framework類(lèi)似。在這兩種情況中,源代碼都是被翻譯成一種中間語(yǔ)言。但是,在.NET平臺(tái)中,這種中間語(yǔ)言是MSIL,而在Java系統(tǒng)中,是Java Byte Code。在這兩種情況中,中間語(yǔ)言被帶入到運(yùn)行環(huán)境中。在Framework中,運(yùn)行環(huán)境是Common Language Runtime。對(duì)于Java,運(yùn)行環(huán)境是Java虛擬機(jī)(Java Virtual Machine)。總體而言,Common Language Runtime和Java虛擬機(jī)有類(lèi)似的功能,并且在技術(shù)進(jìn)步方面,都無(wú)可置疑地在發(fā)展和彼此交互躍進(jìn)。

          這兩種系統(tǒng)之間最重要的區(qū)別與源代碼到中間語(yǔ)言的翻譯有關(guān)。在.NET平臺(tái)中,中間語(yǔ)言設(shè)計(jì)用來(lái)適應(yīng)各種語(yǔ)言的需求。在Java中,中間語(yǔ)言設(shè)計(jì)用來(lái)滿(mǎn)足Java的需求。雖然從理論上,從除Java外的語(yǔ)言生成Java Byte Code是可能的,但是實(shí)際上這還沒(méi)有在任何一種商業(yè)產(chǎn)品中證明。

          客戶(hù)端程序設(shè)計(jì)模型

          J2EE客戶(hù)端程序設(shè)計(jì)模型重點(diǎn)集中在與瀏覽器的交互上。客戶(hù)端程序設(shè)計(jì)模型有3部分:Java Applets,Java Servlets和Java Server Pages。

          Java Applets用來(lái)對(duì)在瀏覽器內(nèi)運(yùn)行的Java代碼進(jìn)行打包。在.NET平臺(tái)空間中,這在功能上與ActiveX相當(dāng)。在筆者的經(jīng)驗(yàn)中,applets或ActiveX組件使用的相對(duì)較少。電子商務(wù)體系結(jié)構(gòu)一般都是以向表示層發(fā)出請(qǐng)求的瀏覽器為基礎(chǔ),然后表示層使用HTML頁(yè)面進(jìn)行響應(yīng)。這種系統(tǒng)并沒(méi)有使用ActiveX或Java Applets,因此筆者在本白皮書(shū)中并沒(méi)有討論這些技術(shù)的任何一種。

          處理HTTP請(qǐng)求和HTML響應(yīng)的重要技術(shù)是Java Servlets 和Java Server Pages 。這兩種技術(shù)與微軟空間中的ASP.NET(Active Server Pages)類(lèi)似。

          .NET平臺(tái)與Java表示層中間的主要區(qū)別在于處理不同的客戶(hù)端功能的方式。Java表示層沿用了以前的Microsoft ASP (pre .NET)模型,它使得表示層程序員的責(zé)任是決定最終的目的瀏覽器(或其他瘦客戶(hù)端系統(tǒng)),瘦客戶(hù)端系統(tǒng)的功能,以及如何生成HTML來(lái)充分發(fā)揮瘦客戶(hù)端系統(tǒng)的優(yōu)勢(shì)。

          中間層基礎(chǔ)結(jié)構(gòu)

          對(duì)于J2EE,中間層基礎(chǔ)結(jié)構(gòu)是Enterprise Java Beans (EJB)。該規(guī)范的當(dāng)前版本是2.0,可以從網(wǎng)上獲得 。與J2EE相當(dāng)?shù)?NET平臺(tái)是COM+。

          在EJB和COM+之間,體系結(jié)構(gòu)的差別非常少。這兩種體系結(jié)構(gòu)本質(zhì)上是從MTS(Microsoft Transaction Server)派生出來(lái)的,是由微軟公司在1996年引入的最初的面向組件的中間層基礎(chǔ)結(jié)構(gòu)。由MTS最先引入,然后合并到EJB和COM+中的重要想法包括:

          通過(guò)組件示例的共享所實(shí)現(xiàn)的高可伸縮性

          以中間層為中心的安全性

          自動(dòng)事務(wù)處理邊界管理

          EJB加入了一種新的體系結(jié)構(gòu)想法,一項(xiàng)自動(dòng)管理組件狀態(tài)的技術(shù)。這項(xiàng)技術(shù)被稱(chēng)為entity beans(實(shí)體豆)。雖然這種想法具有吸引力,但是當(dāng)前的實(shí)施卻依賴(lài)于獨(dú)立于數(shù)據(jù)庫(kù)緩存的中間層數(shù)據(jù)緩存。很不幸的是,在這兩種緩存之間沒(méi)有保持一致性的機(jī)制。這意味著對(duì)實(shí)體豆的任何使用都會(huì)帶來(lái)數(shù)據(jù)庫(kù)損壞的高風(fēng)險(xiǎn)。在緩存一致性問(wèn)題解決之前,在最佳試驗(yàn)技術(shù)方面,必須得不斷考慮實(shí)體豆技術(shù)。

          要連接EJB和COM+的深入比較,請(qǐng)參閱筆者最近的著作 。

          程序員企業(yè)級(jí)API

          我們調(diào)用Java Enterprise API 時(shí)的最重要部分如下:

          Java Database Connection (JDBC,Java數(shù)據(jù)庫(kù)連接) 2.0 ?C 是用于從Java中訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)的API 。這與.NET平臺(tái)空間中的ADO.NET相當(dāng)。

          Java Naming and Directory Interface (JNDI,Java命名與目錄接口) ?C 是用于從Java中訪問(wèn)企業(yè)名稱(chēng)與目錄服務(wù)的信息的API 。這與.NET平臺(tái)空間中的Active Directory Services Interface (ADSI,活動(dòng)目錄服務(wù)接口)有點(diǎn)類(lèi)似。

          Java Message Service (JMS,Java消息服務(wù)) 1.0 ?C 是用于異步工作流的Java API 。這在功能上與Microsoft Message Queue API相當(dāng),這個(gè)API已經(jīng)被排隊(duì)組件所替代。

          posted on 2008-09-09 10:29 KennyQiu 閱讀(45) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 卢湾区| 双柏县| 仙居县| 若尔盖县| 驻马店市| 桓仁| 阳泉市| 德昌县| 阿拉善盟| 湖北省| 邢台市| 新绛县| 仁寿县| 札达县| 龙门县| 那坡县| 桂阳县| 溧水县| 玛沁县| 桑日县| 莒南县| 浠水县| 宁国市| 黔东| 自治县| 奎屯市| 文登市| 常熟市| 攀枝花市| 商丘市| 华亭县| 临湘市| 治多县| 郑州市| 雅江县| 哈巴河县| 彰武县| 新昌县| 岳阳市| 宜章县| 项城市|