當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA快博
異中有同同中有異
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
AMTeam.org異中有同同中有異
作為彼此競(jìng)爭(zhēng)的應(yīng)用平臺(tái),J2EE和.NET開發(fā)平臺(tái)在目標(biāo)和體系結(jié)構(gòu)上極其相似,但在實(shí)現(xiàn)上又完全不同。平臺(tái)的體系架構(gòu)是支撐平臺(tái)的基礎(chǔ),平臺(tái)各方面的性能也會(huì)因平臺(tái)架構(gòu)實(shí)現(xiàn)的不同而有差異。對(duì)兩個(gè)平臺(tái)產(chǎn)生至關(guān)重要影響的三個(gè)方面是:系統(tǒng)平臺(tái)基礎(chǔ)構(gòu)造、三層/多層體系結(jié)構(gòu)和移植/性能/擴(kuò)展。J2EE是一個(gè)平臺(tái)規(guī)范而非產(chǎn)品,對(duì)等而論,在這里述及的.NET也專注于該平臺(tái)的架構(gòu)規(guī)范,而較少地涉及到具體產(chǎn)品,盡管對(duì).NET而言有時(shí)候這方面并不能被區(qū)分得很清楚。
類似的平臺(tái)基礎(chǔ)構(gòu)造
一個(gè)平臺(tái)在語言編譯、代碼執(zhí)行、編程支持等基礎(chǔ)構(gòu)造方面往往會(huì)對(duì)平臺(tái)的可用性、生產(chǎn)性、移植性等產(chǎn)生重要的影響,也是我們?cè)u(píng)判一個(gè)平臺(tái)是否適合特定應(yīng)用的重要依據(jù)。J2EE和.NET兩個(gè)平臺(tái)在底層的執(zhí)行引擎都源于托管的虛擬機(jī)概念,但.NET的CLR沿著Java虛擬機(jī)(JVM)走得更遠(yuǎn)。CLR在借鑒了JVM的自動(dòng)垃圾收集、異常處理等機(jī)制的同時(shí),又為.NET平臺(tái)添加了多語言支持、組件自描述等新的特性。
在.NET和 J2EE平臺(tái)上,程序的編譯都經(jīng)過兩個(gè)類似的過程。首先特定高級(jí)語言編譯器將C#(及其他.NET語言)和Java源代碼分別翻譯成中間語言(IL)和字節(jié)代碼(ByteCode)。.NET在中間語言設(shè)計(jì)時(shí)通盤考慮了多個(gè)主流高級(jí)語言,在這一層面實(shí)現(xiàn)了.NET平臺(tái)的跨語言承諾。J2EE的基石是Java語言,它最典型的特征是:一次編寫,多次運(yùn)行??缙脚_(tái)是J2EE一直引以為豪的關(guān)鍵,這是通過JVM來實(shí)現(xiàn)的。
其次,在執(zhí)行時(shí),中間語言被即時(shí)編譯器(JIT)編譯成特定平臺(tái)的二進(jìn)制代碼,字節(jié)代碼則通過JVM解釋執(zhí)行,完成各自語言的指令功能。鑒于微軟在“Wintel平臺(tái)”上的代碼優(yōu)化功底,.NET代碼的執(zhí)行速度較之于Java有明顯的優(yōu)勢(shì)是不爭(zhēng)的事實(shí)。但在Unix/Linux平臺(tái)上,由于.NET遲遲未能實(shí)現(xiàn)其跨平臺(tái)的承諾,J2EE幾乎成了惟一的選擇,執(zhí)行效率的比較也就無所謂。在代碼執(zhí)行的同時(shí),通用語言運(yùn)行時(shí)和Java虛擬機(jī)也都提出了異常捕捉、類型安全、內(nèi)存分配、垃圾收集等自動(dòng)化內(nèi)存管理工作,大大減輕了現(xiàn)代軟件的內(nèi)存泄漏問題和程序員繁重的負(fù)擔(dān)。
面向?qū)ο蟪绦蛟O(shè)計(jì)在J2EE和.NET平臺(tái)中都獲得了直接的支持,單根繼承加多接口實(shí)現(xiàn)是它們共有的特征。但在面向?qū)ο笾猓?NET對(duì)現(xiàn)代組件編程提供了直接支持。當(dāng)然,當(dāng)下的很多企業(yè)中間件都是基于J2EE平臺(tái)的,只是.NET從設(shè)計(jì)、編碼、配置到運(yùn)行給予了組件編程更多、更直接的支持。
一個(gè)能夠?yàn)榫幊烫峁V泛服務(wù)的、可復(fù)用的API類庫(kù)對(duì)于現(xiàn)代軟件平臺(tái)非常重要。從基礎(chǔ)的集合、字符串操作到企業(yè)級(jí)的API接口,如JMS、JDBC、JAX、JNDI等,可以看到J2EE在這方面有著非常堅(jiān)實(shí)的結(jié)構(gòu)。微軟.NET框架類庫(kù)也不示弱,提供了從圖畫、網(wǎng)絡(luò)、線程到ADO.NET、ADSI、Windows表單、ASP.NET等一系列的API。在這些基礎(chǔ)的和企業(yè)級(jí)的服務(wù)上兩個(gè)平臺(tái)很難一決高下,而且對(duì)功能集合的支持很多時(shí)候是一個(gè)時(shí)間問題,往往是一個(gè)平臺(tái)推出了某一子功能集,另一個(gè)平臺(tái)馬上推出類似的功能集。
除去API類庫(kù)的無縫的功能復(fù)用外,對(duì)本地平臺(tái)的調(diào)用操作也是值得關(guān)注的一點(diǎn)。CLR和Java虛擬機(jī)都支持本地方法的調(diào)用。在異構(gòu)平臺(tái)方面,J2EE更鐘情于IIOP(Internet InterORB Protocol),而.NET則使用SOAP。
相同的三層/多層體系
基于三層/多層分布式計(jì)算結(jié)構(gòu)已毋庸置疑地成為當(dāng)今企業(yè)應(yīng)用的主流模式,也是兩個(gè)平臺(tái)較量的著力點(diǎn)。
在客戶端,表示層負(fù)責(zé)用戶與系統(tǒng)的交互。對(duì)于不同的處理要求,.NET和J2EE都提出了基于桌面的應(yīng)用程序和基于瀏覽器的Web應(yīng)用的開發(fā)組件:Java Application與Windows表單、Java Servlet/JSP與ASP.NET雙雙形成犄角之勢(shì)。但Windows表單依賴微軟桌面系統(tǒng)的天然優(yōu)勢(shì),不管在交互速度還是在界面的表現(xiàn)性能上都較Java Application稍勝一籌。Servlet/JSP與ASP.NET是目前企業(yè)在“瘦客戶端”應(yīng)用的重點(diǎn),兩者都基于HTTP請(qǐng)求/響應(yīng)模型,通過HTML瀏覽器頁(yè)面完成用戶交互。雖然ASP.NET聲稱在底層通過編譯執(zhí)行獲得了相當(dāng)高的處理速度,以及服務(wù)器方控件的瀏覽器自適應(yīng)能力,但目前并沒有這方面的硬性數(shù)據(jù),很難據(jù)此而論高下。在緩存、狀態(tài)優(yōu)化等方面兩者可謂旗鼓相當(dāng)。另一個(gè)和客戶端應(yīng)用相關(guān)的技術(shù)是ActiveX與Applet,但從目前的趨勢(shì)來看,它們?cè)趦蓚€(gè)平臺(tái)上的地位逐漸邊緣化,也不為大多數(shù)企業(yè)所接受。
在中間層,分布式業(yè)務(wù)組件負(fù)責(zé)企業(yè)應(yīng)用的商業(yè)邏輯部署。由于這些業(yè)務(wù)組件經(jīng)常負(fù)責(zé)處理數(shù)據(jù)庫(kù)連接、網(wǎng)絡(luò)資源、線程等高昂的資源,所以一直是三層/多層架構(gòu)的關(guān)鍵和企業(yè)應(yīng)用的核心。J2EE的EJB是一個(gè)成熟的、得到業(yè)界廣泛支持的大型企業(yè)級(jí)組件框架,而.NET組件則是建立在新型的COM+服務(wù)之上,兩者在組件與操作系統(tǒng)的交互、客戶端資源共享等方面都有很好的支持。EJB的核心是容器,容器是一個(gè)為組件提供服務(wù)的運(yùn)行時(shí)環(huán)境,負(fù)責(zé)為組件提供諸如事務(wù)處理、持久性、安全性、組建狀態(tài)自動(dòng)化管理等服務(wù),它分離了商業(yè)邏輯和系統(tǒng)底層邏輯,使開發(fā)人員的工作大為簡(jiǎn)化。.NET則通過元數(shù)據(jù)支持自描述性的組件開發(fā)、XCOPY部署以及多版本共存,而無需注冊(cè)表和描述文件,對(duì)企業(yè)客戶有一定的吸引力。
在后端數(shù)據(jù)層,兩個(gè)平臺(tái)都為數(shù)據(jù)庫(kù)連接量身定做了一套數(shù)據(jù)存取模型:J2EE的JDBC和.NET的ADO.NET。它們?cè)谥С謧鹘y(tǒng)SQL數(shù)據(jù)源的同時(shí),也都支持新型的XML數(shù)據(jù)源。這方面由于更多地涉及到具體的數(shù)據(jù)庫(kù)產(chǎn)品,很難說那種數(shù)據(jù)模型更有優(yōu)勢(shì)。
值得指出的是,在打造三層/多層體系結(jié)構(gòu)的同時(shí),Web服務(wù)作為新一代企業(yè)計(jì)算模型也得到了J2EE和.NET平臺(tái)相當(dāng)?shù)年P(guān)注,在后面的文章會(huì)有這方面的詳細(xì)評(píng)述。
不同的移植、性能和擴(kuò)展
在移植性方面,微軟通過.NET 通用語言運(yùn)行時(shí)來消除編程語言的差別,而J2EE則通過Java虛擬機(jī)來消除平臺(tái)差別。“選擇.NET平臺(tái)就意味著選擇Windows”,這句話至少在可預(yù)見的一段時(shí)間里仍然是一個(gè)基本事實(shí)??缙脚_(tái)是J2EE的一大賣點(diǎn),也是在選擇企業(yè)應(yīng)用開發(fā)平臺(tái)時(shí)的一個(gè)重要參考因素,幾乎所有的主流操作系統(tǒng)都提供了對(duì)J2EE的支持。實(shí)際上如果要搭建跨Unix、Windows等多個(gè)操作系統(tǒng)平臺(tái),J2EE平臺(tái)幾乎是惟一的選擇。J2EE更關(guān)注跨平臺(tái)而不是跨語言。但微軟認(rèn)為,如果企業(yè)的應(yīng)用都能通過標(biāo)準(zhǔn)協(xié)議以Web服務(wù)的方式發(fā)布,那么平臺(tái)都是中立的??缙脚_(tái)甚至是微軟所不想的。為了吸引更多的開發(fā)者和鼓勵(lì)廣大企業(yè)廠商轉(zhuǎn)到.NET平臺(tái),微軟提出了多語言支持,希望用跨語言的交互性來平衡跨平臺(tái)的互操作。
性能是J2EE和.NET喋喋不休的話題。二者之間著名的論戰(zhàn)是一個(gè)關(guān)于寵物店的范例應(yīng)用。寵物店是Sun一度以來作為J2EE典型應(yīng)用的展示范例,但.NET“自告奮勇”地在自己的平臺(tái)上實(shí)現(xiàn)了該寵物店應(yīng)用,且聲稱代碼行是J2EE的1/3,效率卻是J2EE的30倍。但Sun的理由是這個(gè)范例根本不適合用來做性能比較,該范例實(shí)現(xiàn)也沒有做針對(duì)性能的優(yōu)化,而且指責(zé)微軟通過后端數(shù)據(jù)庫(kù)優(yōu)化和緩存虛抬了.NET平臺(tái)的效率。這樣的爭(zhēng)吵當(dāng)然不能作為我們判斷的依據(jù),目前也沒有見到更客觀的第三方評(píng)測(cè)報(bào)告。在“Wintel平臺(tái)”上我們也許沒有理由懷疑.NET的性能,而至于非Windows平臺(tái),.NET和J2EE也不再具有可比性。
在平臺(tái)的成熟度方面,兩者也有一拼。J2EE在1999年形成了其成熟的架構(gòu),并且到今天已經(jīng)有相當(dāng)成熟的經(jīng)過檢驗(yàn)的企業(yè)應(yīng)用系統(tǒng)。而.NET究其淵源是源自微軟以前開發(fā)企業(yè)應(yīng)用程序的平臺(tái)DNA(Distributed Network Architecture),其中包括了許多已經(jīng)被證實(shí)的技術(shù),并且這些技術(shù)已經(jīng)在產(chǎn)品中得到實(shí)現(xiàn),包括微軟的事務(wù)服務(wù)器、COM+、消息隊(duì)列、SQL Server數(shù)據(jù)庫(kù)等。而對(duì)于擴(kuò)展性,廣為業(yè)界接受的事實(shí)是.NET平臺(tái)的擴(kuò)展思想是基于軟件的橫向擴(kuò)展,而J2EE平臺(tái)的擴(kuò)展思想則是基于硬件的縱向擴(kuò)展。這也符合微軟和Sun各自的產(chǎn)品利益。
J2EE另一個(gè)重要特征就是它的架構(gòu)開放性,它本身是一系列規(guī)范,而不是產(chǎn)品,任何符合這一規(guī)范的產(chǎn)品都是J2EE兼容的。這使得J2EE從制訂之初就得到了廣泛的支持。BEA、IBM、Oracle等都相繼開發(fā)了符合J2EE的應(yīng)用服務(wù)器,它們的產(chǎn)品相互之間甚至可以兼容。而.NET在設(shè)計(jì)之初就緊緊地把平臺(tái)規(guī)范與產(chǎn)品膠合在一起,雖然.NET架構(gòu)的一小部分具有開放性(如C#語言、通用語言基礎(chǔ)構(gòu)造CLI 和Web服務(wù)標(biāo)準(zhǔn)),但至少目前很難想像會(huì)有一個(gè)非微軟的.NET實(shí)現(xiàn)。
- 1Sun四處游說 要加入WS-I組織董事會(huì)
- 2Web服務(wù)之路越走越亮
- 3Web Service管理的集大成者
- 4內(nèi)容體現(xiàn)價(jià)值
- 5如何識(shí)別上海OA“陷阱”
- 6WEB服務(wù)“不是”什么
- 7評(píng)論:企業(yè)的“網(wǎng)絡(luò)服務(wù)”時(shí)代到來了?
- 8WS-I:網(wǎng)絡(luò)服務(wù)需要一個(gè)聲音說話
- 9中國(guó)企業(yè)距離知識(shí)經(jīng)濟(jì)有多遠(yuǎn)?(by 胡克)
- 10“平衡”上海OA實(shí)施的七個(gè)支柱分析(BY AMT夏敬華)
- 11深入考察兩種Web服務(wù)架構(gòu)
- 12《解構(gòu)Web services系列之一》運(yùn)算技術(shù)新潮流:Web services
- 13上海oa軟件哪家比較好?
- 14微軟.Net VS Java兩軍對(duì)壘 Web服務(wù)步履艱難
- 15.Net框架全力支撐XML和Web服務(wù)
- 16《電子內(nèi)容》雜志信息科技100強(qiáng)(Econtent 100)(陳贛峰)
- 17知識(shí)與創(chuàng)新互動(dòng)
- 18IBM全球“大腦”:藍(lán)色大象翩翩起舞的知識(shí)動(dòng)力
- 192002年Web Services技術(shù)論壇上海開幕
- 20上海OA管出企業(yè)"錢途"
- 21與IBM微軟分庭抗禮 Sun欲當(dāng)WS-I新董事
- 22Sun推出免費(fèi)軟件 欲與微軟爭(zhēng)網(wǎng)絡(luò)天下
- 23中國(guó)企業(yè)知識(shí)倉(cāng)庫(kù) 企業(yè)的福音
- 24企業(yè)進(jìn)行上海OA項(xiàng)目如何作好從知到行(by AMT 夏敬華 徐家?。?
- 25技術(shù)刨析:傳統(tǒng)應(yīng)用與Web服務(wù)的接口
- 26未來之路——Web服務(wù)應(yīng)用方案掃描
- 27Web服務(wù)的標(biāo)準(zhǔn)之爭(zhēng)和商機(jī)之爭(zhēng)
- 28通往供應(yīng)鏈整合的道路:上海OA初步(by AMT 姚磊)
- 29IBM絕地大反攻(II):加強(qiáng)與微軟的合作
- 30Web服務(wù)給我們帶來了什么?
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號(hào)-2 渝公網(wǎng)安備50011202501700號(hào) 咨詢電話:400-8352-114