J2EE與.NET技術架構的區別
本文從體系架構、移植性、性能、安全性、穩定性、可擴展性、成熟度、第三方廠商支持、開源支持、學習成本和對Web服務支持等方面,試圖對目前兩種主要的軟件開發技術架構J2EE與進行一個客觀、公正、全面的比較。到底這兩者的比較如何呢?快跟yjbys小編一起來看看吧!
1.體系架構的比較
作爲彼此競爭的應用平臺,J2EE和開發平臺在目標和體系結構上極其相似,但在實現上又完全不同。
(1)類似的平臺基礎構造 J2EE和兩個平臺在底層的執行引擎都源於託管的虛擬機概念,但的CLR沿着Java虛擬機(JVM)走得更遠,CLR在借鑑了JVM的自動垃圾收集、異常處理等機制的同時,又爲平臺添加了多語言支持、組件自描述等新的特性。
在和 J2EE平臺上,程序的編譯都經過兩個類似的過程。首先,特定高級語言編譯器將C#(及其他語言)和Java源代碼分別翻譯成中間語言(IL)和字節代碼(ByteCode)。在中間語言設計時通盤考慮了多個主流高級語言,在這一層面實現了平臺的跨語言承諾;J2EE的基石是Java語言,它最典型的特徵是:一次編寫,多次運行。跨平臺是J2EE一直引以爲豪的關鍵,這是通過JVM來實現的。
其次,在執行時,中間語言被即時編譯器(JIT)編譯成特定平臺的二進制代碼,字節代碼則通過JVM解釋執行,完成各自語言的指令功能。鑑於微軟在“Wintel平臺”上的代碼優化功底,代碼的執行速度較之於Java有明顯的優勢是不爭的事實。但在Unix/Linux平臺上,由於遲遲未能實現其跨平臺的承諾,J2EE幾乎成了惟一的選擇,執行效率的比較也就無所謂。在代碼執行的同時,通用語言運行時和Java虛擬機也都提出了異常捕捉、類型安全、內存分配和垃圾收集等自動化內存管理工作,大大減輕少了現代軟件的內存泄漏問題,減輕了程序員的繁重負擔。
面向對象程序設計在J2EE和平臺中都獲得了直接的支持,單根繼承加多接口實現是它們共有的特徵。但在面向對象之外,對現代組件編程提供了直接支持。當然,當下很多企業中間件都是基於J2EE平臺,只是從設計、編碼、配置到運行都給予了組件編程更多、更直接的支持。
在基礎的和企業級的服務上兩個平臺很難一決高低。從基礎的集合、字符串操作到企業級的API接口,如JMS、JDBC、JAX和JNDI等,J2EE在這方面有着非常堅實的結構。微軟框架類庫也不示弱,提供了從圖畫、網絡、線程到、ADSI、Windows表單和等一系列的API。
除去API類庫的無縫的功能複用外,對本地平臺的調用操作也是值得關注的。CLR和Java虛擬機都支持本地方法的調用。在異構平臺方面,J2EE更鐘情於IIOP(Internet InterORB Protocol),而則使用SOAP。
(2)相同的三層/多層體系 基於三層/多層分佈式計算結構已毋庸置疑地成爲當今企業應用的主流模式,也是兩個平臺較量的着力點。
在客戶端,表示層負責用戶與系統的交互。對於不同的處理要求,和J2EE都提出了基於桌面的應用程序和基於瀏覽器的Web應用的開發組件:Java Application與Windows表單、Java Servlet/JSP與雙雙形成犄角之勢。但Windows表單依賴微軟桌面系統的天然優勢,無論在交互速度還是在界面的表現性能上都較Java Application稍勝一籌。Servlet/JSP與是目前企業在“瘦客戶端”應用的重點,兩者都基於HTTP請求/響應模型,通過HTML瀏覽器頁面完成用戶交互。雖然聲稱在底層通過編譯執行獲得了相當高的處理速度和服務器方控件的瀏覽器自適應能力,但目前並沒有這方面的硬性數據,很難據此而論高低。在緩存、狀態優化等方面兩者可謂是旗鼓相當。另一個與客戶端應用相關的技術是ActiveX與Applet,從目前的趨勢來看,它們在兩個平臺上的地位逐漸邊緣化,也不爲大多數企業所接受。
在中間層,分佈式業務組件負責企業應用的商業邏輯部署。由於這些業務組件經常負責處理數據庫連接、網絡資源和線程等高昂的資源,所以一直是三層/多層架構的關鍵和企業應用的核心。J2EE的EJB是一個成熟的、得到業界廣泛支持的大型企業級組件框架,而組件則是建立在新型的COM+服務之上,兩者在組件與操作系統的交互、客戶端資源共享等方面都有很好的支持。則通過元數據支持自描述性的組件開發、XCOPY部署以及多版本共存,無需註冊表和描述文件,對企業客戶有一定的吸引力。
在後端數據層,兩個平臺都爲數據庫連接量身定做了一套數據存取模型:J2EE的JDBC和的,它們在支持傳統SQL數據源的同時,也支持新型的XML數據源。這方面由於更多地涉及到具體的數據庫產品,很難說那種數據模型更有優勢。
兩種架構的簡單對照如表1所示。
2 移植性比較
在移植性方面,支持跨語言,J2EE支持跨平臺。
微軟通過 通用語言運行時來消除編程語言的差別,“選擇平臺就意味着選擇Windows”,這句話至少在可預見的一段時間裏仍然是一個基本事實。J2EE則通過Java虛擬機來消除平臺差別,跨平臺是它的一大賣點,也是在選擇企業應用開發平臺時的一個重要參考因素,幾乎所有的主流操作系統都提供了對J2EE的支持;實際上如果要搭建跨Unix、Windows等多個操作系統平臺,J2EE平臺幾乎是惟一的選擇,J2EE更關注跨平臺而不是跨語言。但微軟認爲,如果企業的應用都能通過標準協議以Web服務的方式發佈,那麼平臺都是中立的。爲了吸引更多的開發者和鼓勵廣大企業廠商轉到平臺,微軟提出了多語言支持,希望用跨語言的交互性來平衡跨平臺的互操作。
3. 性能比較
性能是J2EE和喋喋不休的話題。二者之間著名的論戰是一個關於寵物店的範例應用。寵物店是Sun一度以來作爲J2EE典型應用的展示範例,而“自告奮勇”地在自己的平臺上實現了該寵物店應用,且聲稱代碼行是J2EE的1/3,效率卻是J2EE的30倍。但Sun的'理由是這個範例根本不適合用來做性能比較,該範例實現也沒有做針對性能的優化,而且指責微軟通過後端數據庫優化和緩存虛擡了平臺的效率。這樣的爭吵當然不能作爲判斷的依據,目前也沒有見到更客觀的第三方評測報告。在“Wintel平臺”上也許沒有理由懷疑的性能;至於非Windows平臺,和J2EE也不再具有可比性。
4.安全性、穩定性比較
WINDOWS本身的安全漏洞,使得的安全性不如J2EE。同時,在應用服務器的選擇上,只能用IIS,安全性、穩定性難以保證;而J2EE有更多的選擇,可以在諸多遵循標準的廠商所提供的應用程序服務器中,選擇最符合需要、成本最低、而且又被認爲是最佳的平臺。
5.可擴展性比較
平臺的擴展思想是基於軟件的橫向擴展,而J2EE平臺的擴展思想則是基於硬件的縱向擴展。
Windows系統一般只能擴展到不超過8個處理器,而Sun的系統卻可以擴展到100個甚至更多處理器。
基於J2EE平臺的應用程序可被部署到各種操作系統上,例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個處理器,這是NT服務器所望塵莫及的。J2EE領域的供應商提供了更爲廣泛的負載平衡策略,能消除系統中的瓶頸,允許多臺服務器集成部署。這種部署可達數千個處理器,實現可高度伸縮的系統,滿足未來商業應用的需要。
6.成熟度比較
在平臺的成熟度方面,兩者也有一比。J2EE在1999年形成了成熟的架構,發展至今已經具有相當成熟的、經過檢驗的企業應用系統。而究其淵源是源自微軟以前開發企業應用程序的平臺DNA(Distributed Network Architecture),其中包括了許多已經被證實的技術,並且這些技術已經在產品中得到實現,包括微軟的事務服務器、COM+、消息隊列和SQL Server數據庫等。
7.第三方廠商的支持
J2EE作爲一種開放的規範,從一開始就得到了衆多廠商的支持,IBM、BEA、HP、Oracle等在J2EE的實施上都有較大的投入。目前市場上最好的J2EE應用服務器並不是Sun與Netscape合資的iPlanet,而是BEA的WebLogic和IBM的Webshpere。開發工具有Borland的JBuilder、Sun的Forte for Java、BEA的WebLogic Workshop、Oracle 的JDeveloper、IBM的VisualAge for Java等。
而在設計之初就緊緊地把平臺規範與產品膠合在一起。雖然,NET架構的一小部分具有開放性(如C#語言、通用語言基礎構造CLI 和Web服務標準),但至少目前很難想象會有一個非微軟的實現。Visual 是其唯一的開發工具。
8.開源支持比較
J2EE開源產品衆多,免費框架居多,相應的最佳實踐設計模式層出不窮。而無開源社區支持,是以框架開發者爲主導的設計。
9.學習成本比較
J2EE門檻較高,由於多且雜,需要開發人員花費很長時間才能熟悉整個體系。而門檻較低,使用方便,學習成本較低。但是,對於開發人員來說,在系統整體架構的設計方面不如J2EE易於把握。
10.對WEB服務支持的比較
從和J2EE這兩個平臺的發展歷程來看,從一開始就深深打上了Web服務技術的烙印,在它的市場推廣活動中,無時無刻不凸顯其作爲Web服務的開發和部署平臺的特徵,可以說,天生就是爲Web服務準備的開發和部署平臺。相對而言,J2EE是一個比較“老”的東西,最初它是爲了將Java平臺拓展到企業級應用領域而制訂的一個平臺框架規範,隨着Web服務技術的興起和發展,J2EE平臺作爲一個企業級應用的開發和部署平臺,無法迴避業界的重大技術革命——Web服務,J2EE也不斷地引入了對Web服務的支持。
從服務描述、服務實現和服務的發佈、發現與綁定,以及服務的調用和執行這些不同的角度看,J2EE和的支持基本不相上下,惟一的區別可能是的開發工具更爲方便一些、集成度更高一些。
在Web服務規範的控制方面,微軟與IBM共同主推了大量的Web服務規範,在一段時間內,兩家公司Web服務技術的市場推廣活動都是聯合舉行的,不難看出這兩家公司在這個領域背後的戰略合作關係。最初的Web服務核心技術SOAP、WSDL主要由這兩家公司制訂,後來的UDDI是由這兩家爲首的多家核心企業共同制訂,再後來的一些不是核心的Web服務規範,如WS-Inspection、WSFL、WS-Security、WS-Routing、WS-License和WS-Referral等,則完全是由這兩家來制訂的。不難看出:IBM和微軟對於Web服務的貢獻以及它們對Web服務規範的控制。
儘管由於某種原因,Sun公司曾經在很長的一段時間裏被排除在WS-I(由IBM,微軟和BEA發起成立的促進WEB服務互操作的一個組織)的門外,但這並沒有影響Sun公司繼續在WEB服務方面堅持開放的戰略。Sun公司是Java語言的發明者,而作爲一個開放的跨平臺的技術體系,Java在WEB服務的開發方面也起着非常重要的作用。雙方妥協後,Sun最終被接納爲WS-I的董事成員。
Sun公司積極地參與了制訂Web服務規範的過程,像XML和ebXML。並已經在Java中支持WEB服務中最重要的規範,例如SOAP(JAX-RPC、JAXM、SAAJ和JMS)、WSDL(Java API for WSDL)、UDDI/ebXML(JAXR)和XML(JAXP,JAXB)等等。Sun公司除了積極地參與Web服務領域裏的標準化工作,更是努力地爲客戶提供全面的軟件產品,爲用戶開發和部署Web服務提供平臺。Sun公司的Sun ONE Web服務平臺開發版,是業界第一個用於基於Java技術的Web服務和Web應用開發的全方位的集成平臺。該平臺集成了多種Sun ONE服務器軟件、Java開發工具,支持業界的WEB服務標準,而且是面向開發人員設計,安裝和使用都非常簡單。
相關文章
-
J2EE與.NET技術架構的比較
隨着三層/多層企業信息系統結構的深度發展和下一代分佈式計算模型Web 服務的出現,軟件開發中關於平臺、框架、語言的競爭也愈演愈烈。自從微軟推出平臺,業界關於J2EE平臺與平臺的比較從未停止過。那麼J2EE與有什麼區別 -
jQuery中delegate與on的用法與區別
不會可以問我的主要材料:花片亞克力花瓣銅絲珠子樹葉形玉石所需工具:鉗子膠水製作步驟:第1步:具體教程忘記拍了,不過也不難,就是中間用銅絲串花比較難,其他的也還好的第2步:關注我其他作品,做法是差不多的小貼士:由於是自己設計 -
J2EE Web架構與CS架構命名上的差異
J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成。下面是小編整理的關於J2EE Web架構與CS架構命名上的差異,歡迎大家參考!與傳統的CS(客戶端與服務器端)架構相比,J2EE Web程序服務器提供了很多額外的技 -
java中extends與implements區別
繼承和接口兩者間的區別有多種解釋,相信有少部分初步瞭解的時候有些困惑,在這裏發表了個人理解的解釋,如果你能看得懂那就更好了,你已經是大神了請忽略這篇理解不完整的解釋吧!首先,看看他兩個概念,跟其隨後是通熟易懂的口水 -
j2ee技術體系架構
J2EE是一套全然不同於傳統應用開發的技術架構,包含許多組件,主要可簡化且規範應用系統的開發與部署,進而提高可移植性、安全與再用價值。下面是小編整理的關於j2ee技術體系架構,歡迎大家參考!SOA 是一種分佈式的軟件模型 -
2015計算機三級《網絡技術》複習重點:Internet的構成與接入
無論在學習、工作或是生活中,大家都不可避免地要接觸到作文吧,藉助作文人們可以實現文化交流的目的。你知道作文怎樣寫才規範嗎?下面是小編收集整理的愛讀書的我作文,歡迎大家分享。愛讀書的我作文1俗話說:“讀萬卷書,行萬 -
J2EE架構與設計培訓
課程介紹:課程內容主要講述體系結構和J2EE技術的概述、體系結構的文檔化、設計模式、系統安全性以及系統國際化與本地化等。內容豐富,結構清晰 課程對象:適合於企業Java編程人員、學生和準備SCEA考試的J2EE開發人 -
大學聯考英語詞彙辨析 benefit與benefit by/from的區別
在日常生活和工作中,接觸並使用報告的人越來越多,不同種類的報告具有不同的用途。我們應當如何寫報告呢?以下是小編爲大家整理的主任述職報告6篇,僅供參考,歡迎大家閱讀。主任述職報告 篇1**—**學年度第一學期本人負責復 -
j2ee與java web的區別
J2EE技術之所以贏得廣泛重視的原因之一就是EJB.它提供了一個框架來開發和實施分佈式商務邏輯,下面是小編整理的關於j2ee與java web的區別,歡迎大家參考!1、Java毫無疑問這就是門語言和C、C++、C#一樣沒什麼好說的。2、 -
J2EE架構與開發簡答題
1、請簡述Web的工作原理。2、HTML的<form>標籤有兩個重要的屬性action和method,這兩個屬性的作用是什麼?<input>標籤中的type屬性和name屬性的作用是什麼?3、JSP有哪些內置對象?作用分別是什麼?4、簡述如何用Servlet,JS