一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

J2EE與.NET技術(shù)架構的比較

時(shí)間:2024-10-18 18:55:37 J2EE培訓 我要投稿
  • 相關(guān)推薦

J2EE與.NET技術(shù)架構的比較

  隨著(zhù)三層/多層企業(yè)信息系統結構的深度發(fā)展和下一代分布式計算模型Web 服務(wù)的出現,軟件開(kāi)發(fā)中關(guān)于平臺、框架、語(yǔ)言的競爭也愈演愈烈。自從微軟推出.NET平臺,業(yè)界關(guān)于J2EE平臺與.NET平臺的比較從未停止過(guò)。那么J2EE與.NET有什么區別呢?下面跟yjbys小編一起來(lái)了解吧!

  本文在收集整理相關(guān)文章的基礎上,試圖對目前兩種主要的應用軟件開(kāi)發(fā)技術(shù)架構J2EE與.NET進(jìn)行一個(gè)客觀(guān)、公正、全面的比較,以幫助軟件開(kāi)發(fā)商選擇一個(gè)較為合適的開(kāi)發(fā)平臺進(jìn)行應用軟件的開(kāi)發(fā)。

  一、J2EE簡(jiǎn)介

  Java于1995年由Sun公司推出,當時(shí)它的主要用途是制作產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的Applet。后來(lái),人們發(fā)現Java的“一次開(kāi)發(fā),多次運行”、純面向對象的特性、垃圾回收機制和內置安全特別適合于開(kāi)發(fā)企業(yè)應用系統。于是,企業(yè)應用開(kāi)發(fā)商紛紛在Java標準版的基礎上各自擴展出許多企業(yè)應用API,其結果導致基于Java的企業(yè)應用呈爆炸式增長(cháng)。但是各企業(yè)系統API之間又不能相互兼容,破壞了Java的平臺的獨立性。鑒于此,Sun公司聯(lián)合IBM、Oracle、BEA等大型企業(yè)應用系統開(kāi)發(fā)商于1999年共同制訂了一個(gè)基于Java組件技術(shù)的企業(yè)應用系統開(kāi)發(fā)規范,該規范定義了一個(gè)多層企業(yè)信息系統的標準平臺,旨在簡(jiǎn)化和規范企業(yè)應用系統的開(kāi)發(fā)和部署。這一規范和其定義的平臺就構成了J2EE。它定義了基于組件的方式設計、開(kāi)發(fā)、組裝和部署企業(yè)應用系統的各個(gè)組成部分。同時(shí),J2EE規范定義了分布式多層應用系統模型、組件重用策略、一體化的安全模型以及靈活的事務(wù)控制策略等,使得獨立軟件提供商(ISV)能夠比以前更快的速度,向市場(chǎng)推出用戶(hù)適應的解決方案。

  J2EE是一套針對于企業(yè)級分布式應用的計算環(huán)境,其結構體系如圖1所示。它定義了動(dòng)態(tài)Web頁(yè)面功能(Servlet和Jsp)、商業(yè)組件(EJB)、異步消息傳輸機制(JMS)、名稱(chēng)和目錄定位服務(wù)(JNDI)、數據庫訪(fǎng)問(wèn)(JDBC)、與子系統的連接器(JCA)和安全服務(wù)等。

  需要注意的是,J2EE本身是一個(gè)標準,而不是一個(gè)現成的產(chǎn)品(雖然現在有很多符合J2EE標準的產(chǎn)品),它由以下幾個(gè)部分組成:

  (1)J2EE規范 該規范定義了J2EE平臺的體系結構、平臺角色及J2EE中每種服務(wù)和核心API的實(shí)現要求。它是J2EE應用服務(wù)器開(kāi)發(fā)商的大綱。

  (2)J2EE兼容性測試站點(diǎn) Sun公司提供的一個(gè)測試J2EE應用服務(wù)器是否符合J2EE規范的站點(diǎn),對通過(guò)該站點(diǎn)測試的產(chǎn)品,Sun公司將發(fā)放兼容性證書(shū)。

  (3)J2EE參考實(shí)現 即J2EE SDK,它既是Sun公司自己對J2EE規范的一個(gè)非商業(yè)性實(shí)現,又是為開(kāi)發(fā)基于J2EE企業(yè)級應用系統原型提供的一個(gè)免費的底層開(kāi)發(fā)環(huán)境。

  (4)J2EE實(shí)施指南 即BluePrints文檔,該文檔通過(guò)實(shí)例來(lái)指導開(kāi)發(fā)人員如何去開(kāi)發(fā)一個(gè)基于J2EE的多層企業(yè)應用系統。

  1.組件-容器模型

  J2EE是一個(gè)基于組件-容器模型的系統平臺,其核心概念是容器。容器是指為特定組件提供服務(wù)的一個(gè)標準化的運行時(shí)環(huán)境,Java虛擬機就是一個(gè)典型的容器。組件是一個(gè)可以部署的程序單元,它以某種方式運行在容器中,容器封裝了J2EE底層的API,為組件提供事務(wù)處理、數據訪(fǎng)問(wèn)、安全性、持久性等服務(wù)。在J2EE中組件和組件之間并不直接訪(fǎng)問(wèn),而是通過(guò)容器提供的協(xié)議和方法來(lái)相互調用。組件和容器間的關(guān)系通過(guò)“協(xié)議”來(lái)定義。容器的底層是J2EE服務(wù)器,它為容器提供J2EE中定義的各種服務(wù)和API。一個(gè)J2EE服務(wù)器(也叫J2EE應用服務(wù)器)可以支持一種或多種容器。

  2.J2EE的核心——EJB

  J2EE定義了四種組件:Applet組件、Application客戶(hù)組件、Web組件及EJB(Enterprise JavaBeans)組件。其中Applet和Application客戶(hù)組件在客戶(hù)端運行,J2EE通過(guò)Java插件為Applet提供運行環(huán)境,Application客戶(hù)的容器就是本地Java虛擬機;Web及EJB組件在服務(wù)端運行。J2EE中包含JSP和Servlet兩種Web組件,它們是Web服務(wù)器的功能擴展,都能生成動(dòng)態(tài)Web頁(yè)面。不同的是JSP是將Java代碼嵌入到HTML中,服務(wù)器負責解釋執行,生成結果返回用戶(hù)(與ASP技術(shù)相似);而Servlet是單獨的Java類(lèi),它動(dòng)態(tài)生成HTML文件返回給客戶(hù)。Web組件的容器比較典型的就是基于Java的Web服務(wù)器。

  EJB是J2EE平臺的核心,也是J2EE得到業(yè)界廣泛關(guān)注和支持的主要原因。眾所周知J2EE的一個(gè)主要目的就是簡(jiǎn)化企業(yè)應用系統的開(kāi)發(fā),使程序員將主要精力放在商業(yè)邏輯的開(kāi)發(fā)上。EJB正是基于這種思想的服務(wù)器端技術(shù),它本身也是一種規范,該規范定義了一個(gè)可重用的組件框架來(lái)實(shí)現分布式的、面向對象的商業(yè)邏輯;其核心思想是將商業(yè)邏輯與底層的系統邏輯分開(kāi),使開(kāi)發(fā)者只需關(guān)心商業(yè)邏輯,而由EJB容器實(shí)現目錄服務(wù)、事務(wù)處理、持久性、安全性等底層系統邏輯。

  一個(gè)可部署的EJB組件包含3個(gè)部分:Remote接口、Home接口和Enterprise Beans類(lèi)。

  (1)Remote接口 Remote接口定義EJB組件中提供的可供用戶(hù)調用的方法,也就是通常所說(shuō)的實(shí)現商業(yè)邏輯的函數或過(guò)程(如計算商品價(jià)格的函數),以供遠程客戶(hù)端調用。在EJB組件部署到容器的時(shí)候,容器會(huì )自動(dòng)生成Remote接口相應的實(shí)例,即EJB對象,它負責代理用戶(hù)的調用請求。

  (2)Home接口 Home接口定義了一組方法來(lái)創(chuàng )建新的EJB對象,查找、定位和清除已有的EJB對象。在EJB組件部署時(shí),容器也會(huì )自動(dòng)生成相應的Home對象,該對象負責查找和創(chuàng )建EJB對象,返回EJB對象的引用給客戶(hù);用戶(hù)利用該引用調用EJB組件的方法,得到結果;最后Home對象清除EJB對象?梢孕蜗蟮胤Q(chēng)Home接口為EJB對象的工廠(chǎng)。

  (3)Enterprise Beans類(lèi) Enterprise Beans類(lèi)是商業(yè)邏輯的具體實(shí)現類(lèi)。它可供用戶(hù)調用的方法在Remote接口中定義。根據功能不同,EJB 2.0規范中定義了三種Enterprise Beans:會(huì )話(huà)Beans(Session Beans)、實(shí)體Beans(Entity Beans)和消息驅動(dòng)Beans(Message-driven Beans)。

 、贂(huì )話(huà)Beans分無(wú)狀態(tài)和有狀態(tài)兩種。一般無(wú)狀態(tài)的會(huì )話(huà)Beans模擬商業(yè)邏輯,比如計算價(jià)格等。有狀態(tài)的會(huì )話(huà)Beans通常模擬一個(gè)客戶(hù)會(huì )話(huà),它會(huì )臨時(shí)保存客戶(hù)信息,根據客戶(hù)要求調用其他Beans來(lái)存取數據。兩種會(huì )話(huà)Beans都不保存狀態(tài)信息或數據,當客戶(hù)斷開(kāi)連接或服務(wù)器關(guān)閉時(shí),會(huì )話(huà)Beans也隨之消失。一個(gè)會(huì )話(huà)Beans的典型例子是網(wǎng)站上的購物車(chē)。

 、趯(shí)體Beans模擬商業(yè)數據,并表示一個(gè)數據存儲,可以是狀態(tài)信息或數據庫中的一條記錄。實(shí)體Beans在客戶(hù)斷開(kāi)連接或服務(wù)器關(guān)閉后,仍有服務(wù)保證其數據得以保存。一個(gè)實(shí)體Beans的典型例子就是客戶(hù)賬號信息。

 、巯Ⅱ寗(dòng)Beans在行為上很像會(huì )話(huà)Beans。不同的是僅在需要向這些Beans發(fā)送消息時(shí)才調用消息驅動(dòng)Beans,比如在需要的時(shí)候發(fā)送用戶(hù)確認信息等。

  另外,在提交和部署EJB組件時(shí),還需要兩個(gè)文件:部署描述文件,容器根據該文件來(lái)部署Enterprise Beans,提供所要求的服務(wù);EJB jar文件,它是提交給EJB容器的一個(gè)部署單元,容器(應用服務(wù)器)在部署時(shí)解開(kāi)它,裝入Enterprise Beans。

  EJB容器非常復雜,一般由專(zhuān)業(yè)的J2EE應用服務(wù)器開(kāi)發(fā)商提供,比較流行的EJB容器由IBM的WebShpere、BEA公司的WebLogic Server、Sun公司的iPlant等應用服務(wù)器提供。EJB容器除了為EJB提供事務(wù)處理、目錄服務(wù)、持久性管理和安全性服務(wù)外,還負責EJB的部署、發(fā)布和生命周期管理。

  3.平臺標準服務(wù)

  服務(wù)是組件和容器之間,以及容器和J2EE服務(wù)器之間的接口,在實(shí)現層面上它就是一系列API和協(xié)議。J2EE平臺定義了一組標準的服務(wù),其中有些服務(wù)是由J2SE提供的,有些則是J2EE對Java的擴展。

  (1) 目錄服務(wù)JNDI(Java Name and Directory) API為應用程序提供了一個(gè)統一的接口來(lái)完成標準的目錄操作,由于JNDI是獨立于目錄協(xié)議的,應用程序可以用它訪(fǎng)問(wèn)各種目錄服務(wù),如LDAP、NDS、DNS等。

  (2) 數據訪(fǎng)問(wèn)JDBC(Java Database Connectivity) API為訪(fǎng)問(wèn)不同類(lèi)型的數據庫提供了統一的途徑,屏蔽了不同數據庫的細節,具有平臺無(wú)關(guān)性。J2EE平臺除了要求核心的JDBC API(包含在J2SE中)外,還要求擴展的JDBC API 2.0,它支持行集、連接池和分布式的事務(wù)處理。

  (3) 事務(wù)處理JTA(Java Transaction Architecture) 它定義了一組標準的接口,為應用系統提供可靠的事務(wù)處理支持。JTS(Java Transaction Service)是CORBA OTS事務(wù)監控的Java實(shí)現。JTS規定了事務(wù)管理器的實(shí)現方式,該事務(wù)管理器在高層支持JTA標準,在底層實(shí)現了OMG OTS規范的Java映射。

  (4) 消息服務(wù)JMS(Java Message Service) 它是一組用于和面向消息的中間件相互通信的API,它既支持點(diǎn)對點(diǎn)的消息通信,也支持發(fā)布/訂閱式的消息通信。電子郵件 JavaMail API允許在應用程序中以獨立于平臺、獨立于協(xié)議的方式收發(fā)電子郵件。JAF(JavaBeans Activation Framework)負責處理MIME編碼,JavaMail利用JAF來(lái)處理MIME編碼的郵件附件。

  (5) CORBA兼容接口 RMI(遠程方法調用)是在分布式對象間通信的Java本地方法,它使應用程序調用遠程方法像調用本地方法一樣,不需要考慮所調用對象的位置。RMI-IIOP是RMI的擴展,是符合CORBA標準的對象通信協(xié)議,也是J2EE默認的組件通信協(xié)議。Java IDL允許J2EE應用組件通過(guò)IIOP協(xié)議訪(fǎng)問(wèn)外部的CORBA對象。

  (6) 安全服務(wù)JAAS(Java Authentication and Authorization Service) 它用兩個(gè)步驟實(shí)現安全性:認證,即由用戶(hù)提供認證信息(如用戶(hù)名和密碼)來(lái)獲得系統認證,這一過(guò)程又稱(chēng)之為登錄;授權,在被確認為合法用戶(hù)后,系統根據用戶(hù)的角色授予其相應的權限。J2EE的授權是基于安全角色的概念,一個(gè)安全角色是一個(gè)擁有相同權限的邏輯組。J2EE的安全角色由應用組件提供商來(lái)定義。

  4.對WEB服務(wù)的支持

  Sun提供了一套API及其實(shí)現WSDP作為對J2EE的擴展。在WSDP中,JAXP用來(lái)解析XML文檔;JAXR向UDDI服務(wù)器注冊Web Services;JTX/RPC用基于XML的協(xié)議(如SOAP)來(lái)發(fā)送和接收XML文檔;JWSDL處理WSDL文檔。

  J2EE 1.4的設計目標就是Web服務(wù),其中新加入了像JAX-RPC/SAAJ和JAXR等API,另外EJB 2.1里也增加了許多針對Web服務(wù)設計的特性。

  5 多層應用模型

  從應用的角度來(lái)看,J2EE為企業(yè)應用系統的開(kāi)發(fā)提供了一種多層分布式企業(yè)應用模型。在J2EE中,應用邏輯按功能不同可以劃分為不同類(lèi)型的組件,各組件根據它們所在的層分布在不同的機器上,共同組成一個(gè)基于組件的分布式系統。

  如圖1所示,J2EE定義了一個(gè)典型的四層結構,分別是客戶(hù)層、表示層(Web層)、業(yè)務(wù)邏輯層和企業(yè)信息系統層。

  在應用開(kāi)發(fā)時(shí),J2EE定義的四層模型可根據實(shí)際情況靈活運用。由于除Applet外,其他的組件都可以訪(fǎng)問(wèn)數據庫、EJB組件和企業(yè)信息系統,因此通過(guò)不同層的取舍及組合,可以衍生出許多應用軟件開(kāi)發(fā)模型,如基于Web的四層模型、基于桌面應用的三層模型(不包括Web層)、B2B模型(不包括客戶(hù)層)等。如果應用系統比較簡(jiǎn)單,一般不用EJB作為邏輯層,而直接用Web組件來(lái)實(shí)現商業(yè)邏輯和數據訪(fǎng)問(wèn),畢竟EJB的開(kāi)發(fā)和部署費用還相當高。

  二、.NET簡(jiǎn)介

  .NET來(lái)自于微軟,是一套全能的框架平臺,支持C++、C#、J++、VB、ASP等語(yǔ)言,能夠解決C/S、B/S和單機等結構的軟件開(kāi)發(fā)需求。.NET平臺將這些語(yǔ)言編譯成CLR語(yǔ)言,使它們可以無(wú)差別的運行在.NET Framework上,是2000年以后微軟最為重要的軟件開(kāi)發(fā)套件產(chǎn)品。

  .NET的絕大部分是微軟Windows DNA(Distributed Network Architecture)的重寫(xiě),DNA是微軟以前開(kāi)發(fā)企業(yè)應用程序的平臺。Windows DNA中包括了許多已經(jīng)被證實(shí)的技術(shù),新的.NET框架取代了這些技術(shù),并包含了Web服務(wù)層和改良的語(yǔ)言支持。圖2是.NET開(kāi)發(fā)平臺的體系結構。

  1.﹒NET框架內核

  .NET框架實(shí)現了語(yǔ)言開(kāi)發(fā)、代碼編譯、組件配置、程序運行和對象交互等各個(gè)層面的功能,為Web服務(wù)及普通應用程序提供了一個(gè)托管、安全和高效的執行環(huán)境。所有在.NET平臺上創(chuàng )建的應用程序運行都需要兩個(gè)核心模塊:Common Language Runtime(CLR,通用語(yǔ)言運行時(shí))和.NET Framework類(lèi)庫。

  (1)CLR——.NET的虛擬機 CLR是一個(gè)軟件引擎,用來(lái)加載應用程序,確認它們可以沒(méi)有錯誤地運行,并進(jìn)行相應的安全許可驗證,執行應用程序,然后將被清除。它為.NET應用程序提供了一個(gè)托管的代碼執行環(huán)境,托管意味著(zhù)將原來(lái)由程序員或操作系統做的工作剝離出來(lái)交由CLR來(lái)完成,從而使程序運行獲得更高的安全性和穩定性。這些工作包括內存管理、即時(shí)編譯、組件自描述、安全管理、代碼驗證以及其他一些系統服務(wù)。CLR提供一個(gè)技術(shù)規范,無(wú)論程序使用什么語(yǔ)言編寫(xiě),只要能編譯成中間語(yǔ)言,就可以在它的支持下運行,這樣.NET應用程序就可以獨立于語(yǔ)言。CLR還在應用程序運行環(huán)境中為基于組件的編程提供了直接支持,比如它支持屬性、事件、對象、繼承性、多態(tài)性和接口等組件編程特性。

  CLR中的自動(dòng)垃圾收集器負責.NET應用程序運行時(shí)的內存分配、對象布局、內存釋放等內存管理問(wèn)題,徹底解決了多年來(lái)困擾程序員的內存泄漏問(wèn)題,大大增強了應用程序的健壯性。

  即時(shí)編譯器在運行時(shí),將中間語(yǔ)言以調用對象的方法將單位動(dòng)態(tài)編譯成本地二進(jìn)制代碼。

  (2)類(lèi)庫 NET Framework類(lèi)庫向程序員提供軟件組件,用來(lái)編寫(xiě)在CLR控制下運行的代碼,它們按照單一有序的分級組織提供了一個(gè)龐大的功能集,包括從文件系統到對XML功能的網(wǎng)訪(fǎng)問(wèn)的每一樣功能。該類(lèi)庫為開(kāi)發(fā)提供了三種基本編程模板:基于A(yíng)SP.NET的Web表單應用、基于A(yíng)SP.NET的Web服務(wù)應用和基于傳統GUI交互的Windows應用。

  .NET Framework類(lèi)庫由一組廣泛的、面向對象的、可被開(kāi)發(fā)者用于任何編程語(yǔ)言的可重用類(lèi)集合組成,它提供了幾乎所有應用程序都需要的公共代碼;在此之上是許多應用程序模板,這些模板為開(kāi)發(fā)網(wǎng)絡(luò )站點(diǎn)和網(wǎng)絡(luò )服務(wù)提供特定的高級組件和服務(wù),無(wú)論是傳統的命令行程序,還是Windows圖形界面程序,亦或是面向下一代互聯(lián)網(wǎng)分布式計算平臺的ASP.NET或Web服務(wù)應用,與在Windows和它的SDK中發(fā)送的代碼庫一樣,.NET框架類(lèi)庫將程序員從繁重的編程細節中解放出來(lái),而專(zhuān)注于程序的商業(yè)邏輯。它將核心Win32 API最常用的功能和外掛SDK的功能封裝到了一個(gè)統一的包中,并采用清晰而有條理的方式對類(lèi)庫進(jìn)行分組和描述,這樣開(kāi)發(fā)者就能夠更方便地找到其應用程序所需要的大多數功能。

  2.ADO.NET組件

  ADO.NET為基于網(wǎng)絡(luò )的、可擴展的應用程序和服務(wù)提供數據訪(fǎng)問(wèn)服務(wù)。它不僅支持傳統的基于鏈接指針風(fēng)格的數據訪(fǎng)問(wèn),而且對于更適合于把數據返回到客戶(hù)端應用程序的無(wú)鏈接數據模板,也提供高性能的訪(fǎng)問(wèn)支持。

  3.XML數據組件

  通過(guò)它開(kāi)發(fā)人員可以對任何數據進(jìn)行XML轉換、傳輸和確認,所有數據都可以被看作是XML格式的。同時(shí),系統也支持ADO.NET數據與XML數據之間的通用轉換。

  4.WINDOWS表單組件

  Windows表單組件為開(kāi)發(fā)人員提供了強大的Windows應用程序模型和豐富的Windows用戶(hù)口,包括傳統的ActiveX控件和Windows XP的新界面,如透明的、分層的浮動(dòng)窗口。

  5.ASP.NET應用服務(wù)

  ASP.NET的核心是其用于處理基于HTTP請求的高性能的運行語(yǔ)言,其編譯運行的方式大大提高了它的性能。ASP.NET使用基于構件的.NET框架配置模板,因此,它獲得了諸如XCOPY配置、構件并行配置和基于XML配置之類(lèi)的優(yōu)點(diǎn)。它還支持應用程序的實(shí)時(shí)更新,同時(shí)提供高速緩沖服務(wù),以改善性能。

  ASP.NET Web表單把VB表單高效率的優(yōu)點(diǎn)帶到了Web應用程序的開(kāi)發(fā)中。它支持傳統的將HTML內容與腳本代碼混合的ASP語(yǔ)法,但是它提出了一種將應用程序代碼和用戶(hù)接口內容分離的、更加結構化的方法。它提供一套映射傳統HTML用戶(hù)接口部件(包括列表框、文本框和按鈕)的ASP.NET Web表單控件和一套更加復雜的Web應用控件(如日歷和廣告轉板)。

  6.對Web服務(wù)的支持

  ASP.NET應用服務(wù)體系架構為用ASP.NET建立Web服務(wù)提供了一個(gè)高級的可編程模板。雖然建立Web服務(wù)并不限定使用特定的服務(wù)平臺,但是ASP.NET的許多優(yōu)點(diǎn)將簡(jiǎn)化其開(kāi)發(fā)過(guò)程。使用這個(gè)編程模型,開(kāi)發(fā)人員甚至無(wú)需理解HTTP、SOAP或其他任何網(wǎng)絡(luò )的服務(wù)規范。ASP.NET可以利用現存的體系架構和應用程序,為在互聯(lián)網(wǎng)上綁定應用程序提供了一個(gè)簡(jiǎn)單、靈活和基于產(chǎn)業(yè)標準的模型。

  三、J2EE與.NET比較

  1.體系架構的比較

  作為彼此競爭的應用平臺,J2EE和.NET開(kāi)發(fā)平臺在目標和體系結構上極其相似,但在實(shí)現上又完全不同。

  (1)類(lèi)似的平臺基礎構造 J2EE和.NET兩個(gè)平臺在底層的執行引擎都源于托管的虛擬機概念,但.NET的CLR沿著(zhù)Java虛擬機(JVM)走得更遠,CLR在借鑒了JVM的自動(dòng)垃圾收集、異常處理等機制的同時(shí),又為.NET平臺添加了多語(yǔ)言支持、組件自描述等新的特性。

  在.NET和 J2EE平臺上,程序的編譯都經(jīng)過(guò)兩個(gè)類(lèi)似的過(guò)程。首先,特定高級語(yǔ)言編譯器將C#(及其他.NET語(yǔ)言)和Java源代碼分別翻譯成中間語(yǔ)言(IL)和字節代碼(ByteCode)。.NET在中間語(yǔ)言設計時(shí)通盤(pán)考慮了多個(gè)主流高級語(yǔ)言,在這一層面實(shí)現了.NET平臺的跨語(yǔ)言承諾;J2EE的基石是Java語(yǔ)言,它最典型的特征是:一次編寫(xiě),多次運行?缙脚_是J2EE一直引以為豪的關(guān)鍵,這是通過(guò)JVM來(lái)實(shí)現的。

  其次,在執行時(shí),中間語(yǔ)言被即時(shí)編譯器(JIT)編譯成特定平臺的二進(jìn)制代碼,字節代碼則通過(guò)JVM解釋執行,完成各自語(yǔ)言的指令功能。鑒于微軟在“Wintel平臺”上的代碼優(yōu)化功底,.NET代碼的執行速度較之于Java有明顯的優(yōu)勢是不爭的事實(shí)。但在Unix/Linux平臺上,由于.NET遲遲未能實(shí)現其跨平臺的承諾,J2EE幾乎成了惟一的選擇,執行效率的比較也就無(wú)所謂。在代碼執行的同時(shí),通用語(yǔ)言運行時(shí)和Java虛擬機也都提出了異常捕捉、類(lèi)型安全、內存分配和垃圾收集等自動(dòng)化內存管理工作,大大減輕少了現代軟件的內存泄漏問(wèn)題,減輕了程序員的繁重負擔。

  面向對象程序設計在J2EE和.NET平臺中都獲得了直接的支持,單根繼承加多接口實(shí)現是它們共有的特征。但在面向對象之外,.NET對現代組件編程提供了直接支持。當然,當下很多企業(yè)中間件都是基于J2EE平臺,只是.NET從設計、編碼、配置到運行都給予了組件編程更多、更直接的支持。

  在基礎的和企業(yè)級的服務(wù)上兩個(gè)平臺很難一決高低。從基礎的集合、字符串操作到企業(yè)級的API接口,如JMS、JDBC、JAX和JNDI等,J2EE在這方面有著(zhù)非常堅實(shí)的結構。微軟.NET框架類(lèi)庫也不示弱,提供了從圖畫(huà)、網(wǎng)絡(luò )、線(xiàn)程到ADO.NET、ADSI、Windows表單和ASP.NET等一系列的API。

  除去API類(lèi)庫的無(wú)縫的功能復用外,對本地平臺的調用操作也是值得關(guān)注的。CLR和Java虛擬機都支持本地方法的調用。在異構平臺方面,J2EE更鐘情于IIOP(Internet InterORB Protocol),而.NET則使用SOAP。

  (2)相同的三層/多層體系 基于三層/多層分布式計算結構已毋庸置疑地成為當今企業(yè)應用的主流模式,也是兩個(gè)平臺較量的著(zhù)力點(diǎn)。

  在客戶(hù)端,表示層負責用戶(hù)與系統的交互。對于不同的處理要求,.NET和J2EE都提出了基于桌面的應用程序和基于瀏覽器的Web應用的開(kāi)發(fā)組件:Java Application與Windows表單、Java Servlet/JSP與ASP.NET雙雙形成犄角之勢。但Windows表單依賴(lài)微軟桌面系統的天然優(yōu)勢,無(wú)論在交互速度還是在界面的表現性能上都較Java Application稍勝一籌。Servlet/JSP與ASP.NET是目前企業(yè)在“瘦客戶(hù)端”應用的重點(diǎn),兩者都基于HTTP請求/響應模型,通過(guò)HTML瀏覽器頁(yè)面完成用戶(hù)交互。雖然ASP.NET聲稱(chēng)在底層通過(guò)編譯執行獲得了相當高的處理速度和服務(wù)器方控件的瀏覽器自適應能力,但目前并沒(méi)有這方面的硬性數據,很難據此而論高低。在緩存、狀態(tài)優(yōu)化等方面兩者可謂是旗鼓相當。另一個(gè)與客戶(hù)端應用相關(guān)的技術(shù)是ActiveX與Applet,從目前的趨勢來(lái)看,它們在兩個(gè)平臺上的地位逐漸邊緣化,也不為大多數企業(yè)所接受。

  在中間層,分布式業(yè)務(wù)組件負責企業(yè)應用的商業(yè)邏輯部署。由于這些業(yè)務(wù)組件經(jīng)常負責處理數據庫連接、網(wǎng)絡(luò )資源和線(xiàn)程等高昂的資源,所以一直是三層/多層架構的關(guān)鍵和企業(yè)應用的核心。J2EE的EJB是一個(gè)成熟的、得到業(yè)界廣泛支持的大型企業(yè)級組件框架,而.NET組件則是建立在新型的COM+服務(wù)之上,兩者在組件與操作系統的交互、客戶(hù)端資源共享等方面都有很好的支持。.NET則通過(guò)元數據支持自描述性的組件開(kāi)發(fā)、XCOPY部署以及多版本共存,無(wú)需注冊表和描述文件,對企業(yè)客戶(hù)有一定的吸引力。

  在后端數據層,兩個(gè)平臺都為數據庫連接量身定做了一套數據存取模型:J2EE的JDBC和.NET的ADO.NET,它們在支持傳統SQL數據源的同時(shí),也支持新型的XML數據源。這方面由于更多地涉及到具體的數據庫產(chǎn)品,很難說(shuō)那種數據模型更有優(yōu)勢。

  兩種架構的簡(jiǎn)單對照如表1所示。

  2 移植性比較

  在移植性方面,.NET支持跨語(yǔ)言,J2EE支持跨平臺。

  微軟通過(guò).NET 通用語(yǔ)言運行時(shí)來(lái)消除編程語(yǔ)言的差別,“選擇.NET平臺就意味著(zhù)選擇Windows”,這句話(huà)至少在可預見(jiàn)的一段時(shí)間里仍然是一個(gè)基本事實(shí)。J2EE則通過(guò)Java虛擬機來(lái)消除平臺差別,跨平臺是它的一大賣(mài)點(diǎn),也是在選擇企業(yè)應用開(kāi)發(fā)平臺時(shí)的一個(gè)重要參考因素,幾乎所有的主流操作系統都提供了對J2EE的支持;實(shí)際上如果要搭建跨Unix、Windows等多個(gè)操作系統平臺,J2EE平臺幾乎是惟一的選擇,J2EE更關(guān)注跨平臺而不是跨語(yǔ)言。但微軟認為,如果企業(yè)的應用都能通過(guò)標準協(xié)議以Web服務(wù)的方式發(fā)布,那么平臺都是中立的。為了吸引更多的開(kāi)發(fā)者和鼓勵廣大企業(yè)廠(chǎng)商轉到.NET平臺,微軟提出了多語(yǔ)言支持,希望用跨語(yǔ)言的交互性來(lái)平衡跨平臺的互操作。

  3. 性能比較

  性能是J2EE和.NET喋喋不休的話(huà)題。二者之間著(zhù)名的論戰是一個(gè)關(guān)于寵物店的范例應用。寵物店是Sun一度以來(lái)作為J2EE典型應用的展示范例,而.NET“自告奮勇”地在自己的平臺上實(shí)現了該寵物店應用,且聲稱(chēng)代碼行是J2EE的1/3,效率卻是J2EE的30倍。但Sun的理由是這個(gè)范例根本不適合用來(lái)做性能比較,該范例實(shí)現也沒(méi)有做針對性能的優(yōu)化,而且指責微軟通過(guò)后端數據庫優(yōu)化和緩存虛抬了.NET平臺的效率。這樣的爭吵當然不能作為判斷的依據,目前也沒(méi)有見(jiàn)到更客觀(guān)的第三方評測報告。在“Wintel平臺”上也許沒(méi)有理由懷疑.NET的性能;至于非Windows平臺,.NET和J2EE也不再具有可比性。

  4.安全性、穩定性比較

  WINDOWS本身的安全漏洞,使得.NET的安全性不如J2EE。同時(shí),在應用服務(wù)器的選擇上,.NET只能用IIS,安全性、穩定性難以保證;而J2EE有更多的選擇,可以在諸多遵循標準的廠(chǎng)商所提供的應用程序服務(wù)器中,選擇最符合需要、成本最低、而且又被認為是最佳的平臺。

  5.可擴展性比較

  .NET平臺的擴展思想是基于軟件的橫向擴展,而J2EE平臺的擴展思想則是基于硬件的縱向擴展。

  Windows系統一般只能擴展到不超過(guò)8個(gè)處理器,而Sun的系統卻可以擴展到100個(gè)甚至更多處理器。

  基于J2EE平臺的應用程序可被部署到各種操作系統上,例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個(gè)處理器,這是NT服務(wù)器所望塵莫及的。J2EE領(lǐng)域的供應商提供了更為廣泛的負載平衡策略,能消除系統中的瓶頸,允許多臺服務(wù)器集成部署。這種部署可達數千個(gè)處理器,實(shí)現可高度伸縮的系統,滿(mǎn)足未來(lái)商業(yè)應用的需要。

  6.成熟度比較

  在平臺的成熟度方面,兩者也有一比。J2EE在1999年形成了成熟的架構,發(fā)展至今已經(jīng)具有相當成熟的、經(jīng)過(guò)檢驗的企業(yè)應用系統。而.NET究其淵源是源自微軟以前開(kāi)發(fā)企業(yè)應用程序的平臺DNA(Distributed Network Architecture),其中包括了許多已經(jīng)被證實(shí)的技術(shù),并且這些技術(shù)已經(jīng)在產(chǎn)品中得到實(shí)現,包括微軟的事務(wù)服務(wù)器、COM+、消息隊列和SQL Server數據庫等。

  7.第三方廠(chǎng)商的支持

  J2EE作為一種開(kāi)放的規范,從一開(kāi)始就得到了眾多廠(chǎng)商的支持,IBM、BEA、HP、Oracle等在J2EE的實(shí)施上都有較大的投入。目前市場(chǎng)上最好的J2EE應用服務(wù)器并不是Sun與Netscape合資的iPlanet,而是BEA的WebLogic和IBM的Webshpere。開(kāi)發(fā)工具有Borland的JBuilder、Sun的Forte for Java、BEA的WebLogic Workshop、Oracle 的JDeveloper、IBM的VisualAge for Java等。

  而.NET在設計之初就緊緊地把平臺規范與產(chǎn)品膠合在一起。雖然,NET架構的一小部分具有開(kāi)放性(如C#語(yǔ)言、通用語(yǔ)言基礎構造CLI 和Web服務(wù)標準),但至少目前很難想象會(huì )有一個(gè)非微軟的.NET實(shí)現。Visual Stdio.NET是其唯一的開(kāi)發(fā)工具。

  8.開(kāi)源支持比較

  J2EE開(kāi)源產(chǎn)品眾多,免費框架居多,相應的最佳實(shí)踐設計模式層出不窮。而.NET無(wú)開(kāi)源社區支持,是以框架開(kāi)發(fā)者為主導的設計。

  9.學(xué)習成本比較

  J2EE門(mén)檻較高,由于多且雜,需要開(kāi)發(fā)人員花費很長(cháng)時(shí)間才能熟悉整個(gè)體系。而.NET門(mén)檻較低,使用方便,學(xué)習成本較低。但是,對于開(kāi)發(fā)人員來(lái)說(shuō),.NET在系統整體架構的設計方面不如J2EE易于把握。

  10.對WEB服務(wù)支持的比較

  從.NET和J2EE這兩個(gè)平臺的發(fā)展歷程來(lái)看,.NET從一開(kāi)始就深深打上了Web服務(wù)技術(shù)的烙印,在它的市場(chǎng)推廣活動(dòng)中,無(wú)時(shí)無(wú)刻不凸顯其作為Web服務(wù)的開(kāi)發(fā)和部署平臺的特征,可以說(shuō),.NET天生就是為Web服務(wù)準備的開(kāi)發(fā)和部署平臺。相對.NET而言,J2EE是一個(gè)比較“老”的東西,最初它是為了將Java平臺拓展到企業(yè)級應用領(lǐng)域而制訂的一個(gè)平臺框架規范,隨著(zhù)Web服務(wù)技術(shù)的興起和發(fā)展,J2EE平臺作為一個(gè)企業(yè)級應用的開(kāi)發(fā)和部署平臺,無(wú)法回避業(yè)界的重大技術(shù)革命——Web服務(wù),J2EE也不斷地引入了對Web服務(wù)的支持。

  從服務(wù)描述、服務(wù)實(shí)現和服務(wù)的發(fā)布、發(fā)現與綁定,以及服務(wù)的調用和執行這些不同的角度看,J2EE和.NET的支持基本不相上下,惟一的區別可能是.NET的開(kāi)發(fā)工具更為方便一些、集成度更高一些。

  在Web服務(wù)規范的控制方面,微軟與IBM共同主推了大量的Web服務(wù)規范,在一段時(shí)間內,兩家公司W(wǎng)eb服務(wù)技術(shù)的市場(chǎng)推廣活動(dòng)都是聯(lián)合舉行的,不難看出這兩家公司在這個(gè)領(lǐng)域背后的戰略合作關(guān)系。最初的Web服務(wù)核心技術(shù)SOAP、WSDL主要由這兩家公司制訂,后來(lái)的UDDI是由這兩家為首的多家核心企業(yè)共同制訂,再后來(lái)的一些不是核心的Web服務(wù)規范,如WS-Inspection、WSFL、WS-Security、WS-Routing、WS-License和WS-Referral等,則完全是由這兩家來(lái)制訂的。不難看出:IBM和微軟對于Web服務(wù)的貢獻以及它們對Web服務(wù)規范的控制。

  盡管由于某種原因,Sun公司曾經(jīng)在很長(cháng)的一段時(shí)間里被排除在WS-I(由IBM,微軟和BEA發(fā)起成立的促進(jìn)WEB服務(wù)互操作的一個(gè)組織)的門(mén)外,但這并沒(méi)有影響Sun公司繼續在WEB服務(wù)方面堅持開(kāi)放的戰略。Sun公司是Java語(yǔ)言的發(fā)明者,而作為一個(gè)開(kāi)放的跨平臺的技術(shù)體系,Java在WEB服務(wù)的開(kāi)發(fā)方面也起著(zhù)非常重要的作用。雙方妥協(xié)后,Sun最終被接納為WS-I的董事成員。

  Sun公司積極地參與了制訂Web服務(wù)規范的過(guò)程,像XML和ebXML。并已經(jīng)在Java中支持WEB服務(wù)中最重要的規范,例如SOAP(JAX-RPC、JAXM、SAAJ和JMS)、WSDL(Java API for WSDL)、UDDI/ebXML(JAXR)和XML(JAXP,JAXB)等等。Sun公司除了積極地參與Web服務(wù)領(lǐng)域里的標準化工作,更是努力地為客戶(hù)提供全面的軟件產(chǎn)品,為用戶(hù)開(kāi)發(fā)和部署Web服務(wù)提供平臺。Sun公司的Sun ONE Web服務(wù)平臺開(kāi)發(fā)版,是業(yè)界第一個(gè)用于基于Java技術(shù)的Web服務(wù)和Web應用開(kāi)發(fā)的全方位的集成平臺。該平臺集成了多種Sun ONE服務(wù)器軟件、Java開(kāi)發(fā)工具,支持業(yè)界的WEB服務(wù)標準,而且是面向開(kāi)發(fā)人員設計,安裝和使用都非常簡(jiǎn)單。

  四、結束語(yǔ)

  關(guān)于J2EE和.NET之間的討論已經(jīng)持續很多年了,孰優(yōu)孰劣仍然很難下結論。事實(shí)上,.NET和J2EE都各有特長(cháng),兩者都是十分優(yōu)秀的開(kāi)發(fā)平臺,短時(shí)間內誰(shuí)也不可替代對方。選擇哪種開(kāi)發(fā)平臺,除了要看軟件開(kāi)發(fā)人員對語(yǔ)言的掌握能力及個(gè)人喜好,也要根據開(kāi)發(fā)內容和企業(yè)具體情況、具體需求而定。

  J2EE最大的優(yōu)勢是跨平臺,.NET最大的優(yōu)勢是入門(mén)容易和性能較高(鑒于微軟在“Wintel平臺”上的代碼優(yōu)化功底,.NET代碼的執行速度較之于JAVA有明顯的優(yōu)勢)。對于沒(méi)有.NET和J2EE平臺基礎的開(kāi)發(fā)團隊來(lái)說(shuō),如果開(kāi)發(fā)的應用軟件沒(méi)有跨平臺的要求,只需要運行于微軟平臺之上,則選擇.NET平臺較好;如果要求跨平臺,則只能使用J2EE。如果開(kāi)發(fā)團隊具有.NET或J2EE平臺基礎,在進(jìn)行新的應用軟件開(kāi)發(fā)時(shí),如果沒(méi)有跨平臺要求,則沒(méi)有必要更換開(kāi)發(fā)平臺,因為,更換平臺會(huì )帶來(lái)不小的培訓成本。

【J2EE與.NET技術(shù)架構的比較】相關(guān)文章:

J2EE架構與設計培訓08-30

J2EE架構主要版本06-23

j2ee架構師介紹08-03

J2EE技術(shù)簡(jiǎn)介08-05

J2EE核心技術(shù)08-05

J2EE技術(shù)規范07-15

J2EE技術(shù)規范大全06-15

J2EE的13種核心技術(shù)09-01

j2ee應用技術(shù)開(kāi)發(fā)結構10-21

什么是J2EE07-05

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看