隨筆-128  評(píng)論-55  文章-5  trackbacks-0
          三. 異中有同同中有異
          ——J2EE與.NET平臺(tái)體系架構(gòu)的異同
          南京郵電學(xué)院 李建忠
          中南大學(xué) 畢文杰

          作為彼此競(jìng)爭(zhēng)的應(yīng)用平臺(tái),J2EE和.NET開(kāi)發(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)在語(yǔ)言編譯、代碼執(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)添加了多語(yǔ)言支持、組件自描述等新的特性。
          在.NET和 J2EE平臺(tái)上,程序的編譯都經(jīng)過(guò)兩個(gè)類似的過(guò)程。首先特定高級(jí)語(yǔ)言編譯器將C#(及其他.NET語(yǔ)言)和Java源代碼分別翻譯成中間語(yǔ)言(IL)和字節(jié)代碼(ByteCode)。.NET在中間語(yǔ)言設(shè)計(jì)時(shí)通盤考慮了多個(gè)主流高級(jí)語(yǔ)言,在這一層面實(shí)現(xiàn)了.NET平臺(tái)的跨語(yǔ)言承諾。J2EE的基石是Java語(yǔ)言,它最典型的特征是:一次編寫,多次運(yùn)行。跨平臺(tái)是J2EE一直引以為豪的關(guān)鍵,這是通過(guò)JVM來(lái)實(shí)現(xiàn)的。
          其次,在執(zhí)行時(shí),中間語(yǔ)言被即時(shí)編譯器(JIT)編譯成特定平臺(tái)的二進(jìn)制代碼,字節(jié)代碼則通過(guò)JVM解釋執(zhí)行,完成各自語(yǔ)言的指令功能。鑒于微軟在“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í)行效率的比較也就無(wú)所謂。在代碼執(zhí)行的同時(shí),通用語(yǔ)言運(yùn)行時(shí)和Java虛擬機(jī)也都提出了異常捕捉、類型安全、內(nèi)存分配、垃圾收集等自動(dòng)化內(nèi)存管理工作,大大減輕了現(xiàn)代軟件的內(nèi)存泄漏問(wèn)題和程序員繁重的負(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ù)的、可從玫腁PI類庫(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í)間問(wèn)題,往往是一個(gè)平臺(tái)推出了某一子功能集,另一個(gè)平臺(tái)馬上推出類似的功能集。
          除去API類庫(kù)的無(wú)縫的功能復(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)用的開(kāi)發(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)模型,通過(guò)HTML瀏覽器頁(yè)面完成用戶交互。雖然ASP.NET聲稱在底層通過(guò)編譯執(zhí)行獲得了相當(dāng)高的處理速度,以及服務(wù)器方控件的瀏覽器自適應(yīng)能力,但目前并沒(méi)有這方面的硬性數(shù)據(jù),很難據(jù)此而論高下。在緩存、狀態(tài)優(yōu)化等方面兩者可謂旗鼓相當(dāng)。另一個(gè)和客戶端應(yīng)用相關(guān)的技術(shù)是ActiveX與Applet,但從目前的趨勢(shì)來(lái)看,它們?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)底層邏輯,使開(kāi)發(fā)人員的工作大為簡(jiǎn)化。.NET則通過(guò)元數(shù)據(jù)支持自描述性的組件開(kāi)發(fā)、XCOPY部署以及多版本共存,而無(wú)需注冊(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)品,很難說(shuō)那種數(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ò)展
          在移植性方面,微軟通過(guò).NET 通用語(yǔ)言運(yùn)行時(shí)來(lái)消除編程語(yǔ)言的差別,而J2EE則通過(guò)Java虛擬機(jī)來(lái)消除平臺(tái)差別。“選擇.NET平臺(tái)就意味著選擇Windows”,這句話至少在可預(yù)見(jiàn)的一段時(shí)間里仍然是一個(gè)基本事實(shí)。跨平臺(tái)是J2EE的一大賣點(diǎn),也是在選擇企業(yè)應(yīng)用開(kāi)發(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)而不是跨語(yǔ)言。但微軟認(rèn)為,如果企業(yè)的應(yīng)用都能通過(guò)標(biāo)準(zhǔn)協(xié)議以Web服務(wù)的方式發(fā)布,那么平臺(tái)都是中立的。跨平臺(tái)甚至是微軟所不想的。為了吸引更多的開(kāi)發(fā)者和鼓勵(lì)廣大企業(yè)廠商轉(zhuǎn)到.NET平臺(tái),微軟提出了多語(yǔ)言支持,希望用跨語(yǔ)言的交互性來(lái)平衡跨平臺(tái)的互操作。
          性能是J2EE和.NET喋喋不休的話題。二者之間著名的論戰(zhàn)是一個(gè)關(guān)于寵物店的范例應(yīng)用。寵物店是Sun一度以來(lái)作為J2EE典型應(yīng)用的展示范例,但.NET“自告奮勇”地在自己的平臺(tái)上實(shí)現(xiàn)了該寵物店應(yīng)用,且聲稱代碼行是J2EE的1/3,效率卻是J2EE的30倍。但Sun的理由是這個(gè)范例根本不適合用來(lái)做性能比較,該范例實(shí)現(xiàn)也沒(méi)有做針對(duì)性能的優(yōu)化,而且指責(zé)微軟通過(guò)后端數(shù)據(jù)庫(kù)優(yōu)化和緩存虛抬了.NET平臺(tái)的效率。這樣的爭(zhēng)吵當(dāng)然不能作為我們判斷的依據(jù),目前也沒(méi)有見(jiàn)到更客觀的第三方評(píng)測(cè)報(bào)告。在“Wintel平臺(tái)”上我們也許沒(méi)有理由懷疑.NET的性能,而至于非Windows平臺(tái),.NET和J2EE也不再具有可比性。
          在平臺(tái)的成熟度方面,兩者也有一拼。J2EE在1999年形成了其成熟的架構(gòu),并且到今天已經(jīng)有相當(dāng)成熟的經(jīng)過(guò)檢驗(yàn)的企業(yè)應(yīng)用系統(tǒng)。而.NET究其淵源是源自微軟以前開(kāi)發(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)開(kāi)放性,它本身是一系列規(guī)范,而不是產(chǎn)品,任何符合這一規(guī)范的產(chǎn)品都是J2EE兼容的。這使得J2EE從制訂之初就得到了廣泛的支持。BEA、IBM、Oracle等都相繼開(kāi)發(fā)了符合J2EE的應(yīng)用服務(wù)器,它們的產(chǎn)品相互之間甚至可以兼容。而.NET在設(shè)計(jì)之初就緊緊地把平臺(tái)規(guī)范與產(chǎn)品膠合在一起,雖然.NET架構(gòu)的一小部分具有開(kāi)放性(如C#語(yǔ)言、通用語(yǔ)言基礎(chǔ)構(gòu)造CLI 和Web服務(wù)標(biāo)準(zhǔn)),但至少目前很難想像會(huì)有一個(gè)非微軟的.NET實(shí)現(xiàn)。


          四。Web服務(wù)誰(shuí)主沉浮?
          ■ 柴曉路
          現(xiàn)在已經(jīng)是2002年第二季度,Gartner Group對(duì)Web服務(wù)發(fā)展的預(yù)測(cè)似乎被產(chǎn)品提供商稍稍延誤了,最近微軟的.NET Framework及其開(kāi)發(fā)工具VS .NET剛剛正式發(fā)布。而作為Web服務(wù)世界中另一個(gè)重量級(jí)角色Sun,也為它的J2EE Framework增添了開(kāi)發(fā)Web服務(wù)的強(qiáng)有力的工具包Java Web Services Developer Pack(WSDP)。從2002年起到2005年,Gartner Group所預(yù)測(cè)的B2C、B2B以及e-Government領(lǐng)域Web服務(wù)的開(kāi)發(fā)和部署將會(huì)大量依賴J2EE和.NET這兩個(gè)平臺(tái)及其上的開(kāi)發(fā)工具。
          .NET與J2EE 對(duì)Web服務(wù)的支持
          從.NET和J2EE這兩個(gè)平臺(tái)的發(fā)展歷程來(lái)看, .NET從一開(kāi)始就深深打上了Web服務(wù)技術(shù)的烙印,在它的市場(chǎng)推廣活動(dòng)中,無(wú)時(shí)無(wú)刻不凸顯其作為Web服務(wù)的開(kāi)發(fā)和部署平臺(tái)的特征。可以說(shuō),.NET天生就是為Web服務(wù)準(zhǔn)備的開(kāi)發(fā)和部署平臺(tái)。相對(duì).NET而言,J2EE是一個(gè)比較“老”的東西,最初它是為了將Java平臺(tái)拓展到企業(yè)級(jí)應(yīng)用領(lǐng)域而制訂的一個(gè)平臺(tái)框架規(guī)范。隨著Web服務(wù)的興起和發(fā)展,J2EE平臺(tái)作為一個(gè)企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)和部署平臺(tái),無(wú)法回避業(yè)界的重大技術(shù)革命——Web服務(wù)。隨著Web服務(wù)技術(shù)的發(fā)展,J2EE也不斷地引入了對(duì)Web服務(wù)的支持。
          從服務(wù)描述、服務(wù)實(shí)現(xiàn)和服務(wù)的發(fā)布、發(fā)現(xiàn)與綁定,以及服務(wù)的調(diào)用和執(zhí)行這些不同的角度看,J2EE和.NET的支持基本不相上下,惟一的區(qū)別可能是.NET的開(kāi)發(fā)工具更為方便一些,集成度更高一些。.NET是一個(gè)在J2EE之后出現(xiàn)的平臺(tái),所有的重量級(jí)技術(shù)產(chǎn)品無(wú)一例外地都會(huì)吸收先前成功者的優(yōu)點(diǎn),.NET就大量地吸收了J2EE平臺(tái)的優(yōu)點(diǎn)。其中,最重要的一點(diǎn)就是.NET不再完全沿襲微軟先前的技術(shù),從.NET開(kāi)始,其應(yīng)用不再以本地機(jī)器代碼運(yùn)行,而是編譯成中間代碼,由稱為CLR的虛擬機(jī)來(lái)運(yùn)行,這樣,.NET也具備了跨平臺(tái)的可能。不過(guò).NET的跨平臺(tái)特性主要體現(xiàn)在支持多種開(kāi)發(fā)語(yǔ)言上,VB.NET、C#、C++、JScript等都可以被編譯成相同的中間代碼,使用相同的運(yùn)行庫(kù)執(zhí)行。
          第三方廠商的支持
          J2EE作為一種開(kāi)放的規(guī)范,從一開(kāi)始就得到了眾多廠商的支持,IBM、BEA、HP、Oracle等在J2EE的實(shí)施上都有較大的投入。目前市場(chǎng)上最好的J2EE應(yīng)用服務(wù)器并不是Sun與Netscape合資的iPlanet,而是BEA的WebLogic和IBM的Webshpere。一年一度的JavaONE就有成千上萬(wàn)的開(kāi)發(fā)商參加。由于J2EE是開(kāi)放的規(guī)范框架,任意廠商只要有實(shí)力都可以按照規(guī)范來(lái)開(kāi)發(fā)實(shí)現(xiàn),不同廠商的組件也可以在一起協(xié)同使用,當(dāng)然最關(guān)鍵的是這些參與J2EE的廠商都具有很強(qiáng)的實(shí)力。除了微軟以外,基本上所有的軟件業(yè)巨擎都鐘情于J2EE。
          然而,J2EE雖然是開(kāi)放的規(guī)范,但是它的使用卻不是那么開(kāi)放,每家使用J2EE技術(shù)的公司都不得不為此向Sun支付一筆不小的費(fèi)用。同時(shí)也正因?yàn)镾un對(duì)J2EE規(guī)范的獨(dú)家控制,使得J2EE規(guī)范的開(kāi)發(fā)進(jìn)度緩慢,迄今為止,J2EE規(guī)范中并不包含對(duì)Web服務(wù)的支持,Sun推出的WSDP只是一種插件形式的擴(kuò)展支持。有消息表明,在今年年底前,Sun和Java領(lǐng)域的其他支持商,包括IBM、Bea、Silverstream等會(huì)就J2EE如何支持Web服務(wù)達(dá)成一致,然而這一切均存在變數(shù),其中的根結(jié)就在于Sun對(duì)Java技術(shù)的獨(dú)家控制。
          同時(shí),由于J2EE對(duì)Web服務(wù)支持的步履維艱,各大廠商分別自行開(kāi)發(fā)Java平臺(tái)的Web服務(wù)支持,IBM在這個(gè)領(lǐng)域的步伐是飛快的,它的WSAD(Webshpere Studio Application Developer)集成了大量自行開(kāi)發(fā)(部分來(lái)自于Apache.org,不過(guò)這個(gè)項(xiàng)目的前身是IBM發(fā)起,而后移交給Apache.org)的Web服務(wù)組件,業(yè)已成為Java領(lǐng)域開(kāi)發(fā)Web服務(wù)的最佳開(kāi)發(fā)工具,同時(shí)IBM的Websphere也慢慢向Web服務(wù)開(kāi)發(fā)部署應(yīng)用平臺(tái)的角色轉(zhuǎn)化。
          而對(duì)于微軟的.NET而言,雖然從一開(kāi)始,微軟就以獨(dú)占、壟斷、不開(kāi)放的形象出現(xiàn)在平臺(tái)市場(chǎng)上。然而,它的.NET卻表現(xiàn)出了前所未有的開(kāi)放姿態(tài)。
          .NET的主力開(kāi)發(fā)語(yǔ)言C# 已經(jīng)提交給 ECMA,開(kāi)始標(biāo)準(zhǔn)化,ECMA是一個(gè)致力于推動(dòng)行業(yè)范圍內(nèi)采用信息和通信技術(shù)的非特定供應(yīng)商的國(guó)際標(biāo)準(zhǔn)組織。C#的標(biāo)準(zhǔn)化使希望在任何平臺(tái)上都可以實(shí)現(xiàn) C# 編程工具的公司能夠?qū)崿F(xiàn)其愿望。微軟 還向 ECMA 提交了微軟.NET框架的一個(gè)子集,叫做CLR(公共語(yǔ)言架構(gòu),Common Language Infrastructure)。這將使其他供應(yīng)商能夠在各種平臺(tái)上實(shí)現(xiàn) CLI,以便用.NET框架提供的基本體系結(jié)構(gòu)模型編寫的軟件可以在各種平臺(tái)上用各種工具來(lái)創(chuàng)建。美國(guó)Ximian公司已于2001年7月啟動(dòng)了一個(gè)名為Mono 的開(kāi)放源碼版.NET開(kāi)發(fā)項(xiàng)目,計(jì)劃內(nèi)容包括一個(gè)C#編譯器、與微軟的CLI兼容的類庫(kù)和Linux版CLR編譯器。雖然這只是起步,然而誰(shuí)也不能肯定,它不會(huì)像當(dāng)初的Java那樣,從Sun的小玩具,變成了今天如此重要的開(kāi)發(fā)平臺(tái)。
          Web服務(wù)規(guī)范的控制
          由于Web服務(wù)的各種技術(shù)都是先以規(guī)范的形式制訂,然后再交付各大開(kāi)發(fā)商進(jìn)行實(shí)施。所以,某個(gè)開(kāi)發(fā)商如果從一開(kāi)始就參與某種Web服務(wù)規(guī)范的開(kāi)發(fā),那么它的平臺(tái)就能夠以最快的速度支持這一Web服務(wù)規(guī)范。在這一點(diǎn)上,微軟給人以非常積極進(jìn)取的印象。在Web服務(wù)領(lǐng)域,微軟與IBM共同主推了大量的Web服務(wù)規(guī)范,在一段時(shí)間內(nèi),兩家公司W(wǎng)eb服務(wù)技術(shù)的市場(chǎng)推廣活動(dòng)都是聯(lián)合舉行的,不難看出這兩家公司在這個(gè)領(lǐng)域背后的戰(zhàn)略合作關(guān)系。最初的Web服務(wù)核心技術(shù)SOAP、WSDL主要由這兩家公司制訂;后來(lái)的UDDI是由這兩家為首的多家核心企業(yè)共同制訂;再后來(lái)的一些不是核心的Web服務(wù)規(guī)范,如WS-Inspection、WSFL、WS-Security、WS-Routing、WS-License、WS-Referral等,則完全由這兩家來(lái)制訂,不難看出IBM和微軟對(duì)于Web服務(wù)的貢獻(xiàn)以及它們對(duì)Web服務(wù)規(guī)范的控制。
          而Sun自從在XML規(guī)范的制訂中發(fā)揮了重要的作用之后,在其后的Internet規(guī)范,尤其是Web服務(wù)規(guī)范的制訂中,聲音變得非常微弱,而且似乎并沒(méi)有改善的趨勢(shì)。最近在Web服務(wù)領(lǐng)域中的一件大事是WS-I.org的成立。WS-I.org是為保證Web服務(wù)所承諾的互操作性而成立的一個(gè)組織,主要工作就是開(kāi)發(fā)保障Web服務(wù)互操作性的相關(guān)規(guī)范,并進(jìn)行規(guī)范實(shí)施的測(cè)試。WS-I.org的核心成員包括Accenture、BEA、HP、Intel、IBM、Microsoft、Oracle、SAP等,Sun不在其中,甚至都不在非核心成員的列表中。是Sun的發(fā)展戰(zhàn)略的問(wèn)題,還是受盈利問(wèn)題的困擾,我們不得而知,不過(guò)我們可以知道的是,Sun再一次在Web服務(wù)領(lǐng)域中落后了,由它控制的J2EE規(guī)范的狀況也就可想而知。
          潛在的市場(chǎng)
          從技術(shù)的發(fā)展來(lái)看,大型的企業(yè)用戶或有著成功實(shí)施經(jīng)驗(yàn)的企業(yè)用戶,并不會(huì)因?yàn)樾录夹g(shù)的推出而盲目地否定舊技術(shù),它們總是在保護(hù)投資的前提下,在不推翻現(xiàn)有架構(gòu)的前提下,有選擇地挑選適合的技術(shù)。
          J2EE已經(jīng)是一個(gè)成熟的、成功的企業(yè)級(jí)應(yīng)用解決方案,擁有大量的客戶,已經(jīng)實(shí)施了J2EE的企業(yè)不太可能在Web服務(wù)的時(shí)代全面否定J2EE而去接受.NET。.NET是一個(gè)全新的架構(gòu),雖然它的開(kāi)發(fā)語(yǔ)言中已經(jīng)包含了諸如VB、C++等傳統(tǒng)開(kāi)發(fā)語(yǔ)言,剛剛接觸.NET的開(kāi)發(fā)人員會(huì)以為能將以前使用VB開(kāi)發(fā)的代碼平滑地轉(zhuǎn)移到.NET平臺(tái)上來(lái)。其實(shí)不然,VB.NET的語(yǔ)法與VB 6.0已經(jīng)有了根本性的差別,與其說(shuō)VB.NET是VB 6.0的升級(jí),不如說(shuō)VB.NET是C#的Basic版。由于采用了CLI的結(jié)構(gòu),VB.NET將很難兼容以前的VB 6.0的代碼,大量的VB代碼無(wú)法順利地轉(zhuǎn)移到.NET上,我們期待著微軟能夠提供轉(zhuǎn)換程序以實(shí)現(xiàn)代碼的升級(jí)。雖然在源代碼級(jí)別上的升級(jí)變得不是那么容易,不過(guò)開(kāi)發(fā)人員仍然可以在.NET平臺(tái)下,將原有的COM組件進(jìn)行重新包裝,形成 .NET平臺(tái)下的Web服務(wù)組件,而且.NET的整個(gè)平臺(tái)、開(kāi)發(fā)工具的高集成性和友好的開(kāi)發(fā)環(huán)境還是會(huì)給開(kāi)發(fā)人員留下深刻印象。在Java領(lǐng)域中,無(wú)論是Borland的JBuilder 6,還是Sun的Forte for Java,或是IBM的WebShpere Studio Application Developer、VisualAge for Java都無(wú)法達(dá)到VS .NET的生產(chǎn)效率。開(kāi)發(fā)工具是.NET的一大優(yōu)勢(shì),同時(shí).NET平臺(tái)對(duì)Web服務(wù)規(guī)范的支持力度也僅有IBM的J2EE平臺(tái)能夠與之相媲美。
          因此,筆者認(rèn)為在大型企業(yè)級(jí)應(yīng)用場(chǎng)合,如果已經(jīng)采用了J2EE架構(gòu),應(yīng)該會(huì)在Web服務(wù)的時(shí)代繼續(xù)使用J2EE架構(gòu)。而原先就是采用微軟架構(gòu)的,出于技術(shù)延續(xù)性的考慮,大多數(shù)仍然會(huì)選用微軟的.NET。那些采用其他技術(shù)的企業(yè)級(jí)應(yīng)用則會(huì)在開(kāi)發(fā)效率、安全性、可靠性、維護(hù)代價(jià)等不同指標(biāo)上對(duì)兩種架構(gòu)進(jìn)行考察,應(yīng)該說(shuō)機(jī)會(huì)是均等的,J2EE強(qiáng)在有大量的應(yīng)用實(shí)例,而.NET強(qiáng)在整合集成的優(yōu)秀開(kāi)發(fā)部署環(huán)境。
          在中小級(jí)別的應(yīng)用領(lǐng)域,J2EE的占有率優(yōu)勢(shì)不再那么明顯,一方面,長(zhǎng)期以來(lái)微軟專長(zhǎng)于這個(gè)領(lǐng)域;另一方面,Java解決方案已經(jīng)是如此地深入人心,即使是中小企業(yè)也會(huì)考慮J2EE架構(gòu),在這個(gè)領(lǐng)域,兩者平分秋色。
          而在桌面應(yīng)用(Web服務(wù)客戶端)領(lǐng)域,除了一些管理客戶端會(huì)采用Java開(kāi)發(fā)以外,絕大多數(shù)的應(yīng)用毫無(wú)疑問(wèn)地會(huì)在微軟平臺(tái)上開(kāi)發(fā)和部署。
          誰(shuí)主沉浮
          下面這張表格概括了對(duì)兩者的比較:
          比較項(xiàng)目? J2EE? .NET?
          對(duì)Web服務(wù)的支持?
          服務(wù)描述? 好? 好?
          服務(wù)實(shí)現(xiàn)? 好? 很好?
          服務(wù)發(fā)布、發(fā)現(xiàn)與綁定? 好? 很好?
          服務(wù)調(diào)用和執(zhí)行? 好? 好?
          第三方支持?
          平臺(tái)提供商? 很好? 有待考察?
          軟件開(kāi)發(fā)商? 很好? 好?
          對(duì)Web服務(wù)規(guī)范的控制? 情況復(fù)雜(注)? 很好?
          市場(chǎng)前景?
          企業(yè)級(jí)大型應(yīng)用? 很好? 一般?
          中小級(jí)別應(yīng)用? 好? 好?
          桌面應(yīng)用? 差? 很好?
          注:J2EE的控制者Sun對(duì)Web服務(wù)規(guī)范幾乎沒(méi)有什么控制能力,然而Sun在J2EE上的合作伙伴IBM等對(duì)Web服務(wù)規(guī)范卻具備強(qiáng)大的控制力,所以表格中顯示“情況復(fù)雜”。
          從表格中,不難看出兩者是旗鼓相當(dāng)?shù)膶?duì)手,現(xiàn)在就斷言誰(shuí)主沉浮還為時(shí)過(guò)早。應(yīng)該說(shuō),J2EE目前需要做的是盡快真正將Web服務(wù)規(guī)范融入到J2EE規(guī)范中去,從規(guī)范出發(fā)統(tǒng)一對(duì)Web服務(wù)的支持。而.NET迫切需要進(jìn)行的則是加大平臺(tái)的開(kāi)放力度,爭(zhēng)取改善微軟在用戶心目中獨(dú)斷、單方控制、不開(kāi)放的形象。
          在未來(lái)相當(dāng)長(zhǎng)時(shí)期內(nèi),J2EE和.NET都將是企業(yè)構(gòu)建應(yīng)用系統(tǒng)的重要選擇,兩個(gè)平臺(tái)將相互共存,兩者本身也在不斷地相互借鑒和完善,并且有望通過(guò)Web服務(wù)實(shí)現(xiàn)互操作。真正的市場(chǎng),正是需要強(qiáng)大的競(jìng)爭(zhēng)者之間的較量,這樣用戶才能得到最好的技術(shù)和解決方案。
          小資料·
          Gartner Group對(duì)未來(lái)Web服務(wù)發(fā)展?fàn)顩r的預(yù)測(cè):
          2001年,Web服務(wù)的架構(gòu)平臺(tái)、開(kāi)發(fā)工具將基本被各大開(kāi)發(fā)商開(kāi)發(fā)完畢。開(kāi)發(fā)人員能夠購(gòu)買到這些面向服務(wù)的開(kāi)發(fā)工具,同時(shí)將開(kāi)始構(gòu)建實(shí)際使用的Web服務(wù)。
          2002年,商業(yè)Web服務(wù)將大量出現(xiàn),大量的面向消費(fèi)者的B2C Web服務(wù)將投入使用。
          2003年,UDDI注冊(cè)中心隨著Web服務(wù)的發(fā)展,將變得越來(lái)越重要,其中的商業(yè)數(shù)據(jù)也越來(lái)越豐富。私有的UDDI注冊(cè)中心將被投入使用,以支持內(nèi)部服務(wù)信息的交換。而政府的Web服務(wù)應(yīng)用也將不斷出現(xiàn)。
          2004年,各類企業(yè)將會(huì)普遍接受基于Web服務(wù)的商務(wù)應(yīng)用模式,而服務(wù)集中的計(jì)算模式將進(jìn)入青年期。私有的UDDI注冊(cè)中心仍然在各類應(yīng)用中處于優(yōu)勢(shì)地位,新的贏利模式和商業(yè)渠道將到處可見(jiàn)。40%的金融財(cái)務(wù)服務(wù)事務(wù)將使用Web服務(wù)模式,而35%的在線政府服務(wù)將以Web服務(wù)的形式提供。
          2005年,公共的UDDI注冊(cè)中心作為公共商務(wù)信息的交換機(jī)制將大量應(yīng)用。動(dòng)態(tài)服務(wù)同樣將大量投入使用。


          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人
          posted on 2007-07-27 22:56 桔子汁 閱讀(318) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 顺义区| 阜城县| 莱阳市| 砀山县| 望谟县| 阿图什市| 龙泉市| 兰西县| 页游| 邢台县| 胶南市| 新泰市| 明水县| 龙胜| 即墨市| 图片| 鄢陵县| 太仆寺旗| 宜君县| 信阳市| 三江| 诸城市| 吴旗县| 武邑县| 荥阳市| 惠来县| 咸阳市| 长白| 中超| 扶余县| 乾安县| 翁牛特旗| 宁海县| 怀远县| 公主岭市| 白城市| 九江县| 阿拉善右旗| 华阴市| 宜兰县| 陆丰市|