欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

終于了解了下.net 和 j2ee的區(qū)別

 更新時(shí)間:2007年04月10日 00:00:00   作者:  
關(guān)于.NET技術(shù)與Sun公司的Java2企業(yè)版(J2EETM)相比較,許多客戶都想了解Microsoft公司的觀點(diǎn)。由于以下的幾個(gè)原因,.NET和JEE的比較有點(diǎn)棘手:

1)   一般來說,Windows .NET Framework是Microsoft的Windows系統(tǒng)中經(jīng)過精心定義的技術(shù)部分,而J2EE則是一個(gè)書面的協(xié)議。如果不局限于學(xué)術(shù)方面的討論,換句話說,就是在幾個(gè)應(yīng)用平臺(tái)上討論這個(gè)話題的商業(yè)價(jià)值,那么僅僅比較J2EE和一個(gè)實(shí)際應(yīng)用的工具是沒有意義的。

這樣實(shí)際應(yīng)用的工具如:IBM公司的WebSphere應(yīng)用服務(wù),BEA的WebLogic服務(wù)或是其它類似的應(yīng)用服務(wù)。

要想得到令人滿意的分析,只有進(jìn)行產(chǎn)品之間的比較,例如比較開發(fā)效率。使用J2EE,開發(fā)者需要?jiǎng)?chuàng)建4個(gè)組件來建立一個(gè)單一的EJB。表面上看來,這只不過是為開發(fā)效率付出的一點(diǎn)代價(jià)而已。但是Java的一些開發(fā)工具隱藏了一些開發(fā)技巧,降低了效率。另一個(gè)例子,J2EE的部署體系十分復(fù)雜難解,類嵌入 JAR,而JAR嵌入WAR,WAR又嵌入EAR。但是在一定程度上,有些工具能自動(dòng)完成部署進(jìn)程。上述情況導(dǎo)致決定一個(gè)應(yīng)用服務(wù)商業(yè)價(jià)值的關(guān)鍵因素開發(fā)效率因不同的銷售商而有差異,這主要取決于開發(fā)工具的效率。

2) 關(guān)于"J2EE全明星隊(duì)伍"的問題。當(dāng)比較.NET和J2EE所有組件的集合時(shí),這個(gè)問題就產(chǎn)生了。例如,分析者考慮開發(fā)效率時(shí)可能碰到下列問題,A公司的產(chǎn)品, B公司的應(yīng)用服務(wù)程序, C公司的安全規(guī)則, D公司簡(jiǎn)便安裝, E公司決定價(jià)格。所有這些都可能和J2EE有關(guān)。集合上述這些特征屬性,J2EE工具看起來還行:價(jià)格便宜,安裝簡(jiǎn)便,速度快,安全性高,有超高速緩存,并且有好的開發(fā)工具,等等。但這些都無關(guān)痛癢—因?yàn)椴豢赡芡瑫r(shí)獲得所有的這些特性。事實(shí)上,一次只能得到一個(gè)準(zhǔn)確的特性。因?yàn)檫@些產(chǎn)品來自不同的公司,它們不可能合作無間。例如,IBM公司的工具不能和BEA公司的WebLogic服務(wù)同時(shí)工作,因?yàn)楹笳呤怯玫腛racle公司的緩存引擎,而 Oracle的引擎不能用Iona的價(jià)格獲得,等等諸如此類。人們有時(shí)候會(huì)誤將"J2EE的所有特性集合"作為比較的基礎(chǔ);但這是不合理的??蛻粜枰氖侵酪粚?duì)一,產(chǎn)品對(duì)產(chǎn)品的比較。

3)比較.NET和J2EE而忽視其它應(yīng)用平臺(tái)是十分重要的。J2EE是僅關(guān)注應(yīng)用程序服務(wù)器的規(guī)范。但是絕大多數(shù)客戶對(duì)下列這些感興趣:應(yīng)用程序服務(wù)器,端口,商業(yè)服務(wù)器和分析工具,數(shù)據(jù)庫,分離數(shù)據(jù)和流動(dòng)性,信息代理,應(yīng)用程序集合,容量管理,智能客戶端等等。作為對(duì)客戶要求的回應(yīng),這些因素應(yīng)該統(tǒng)一工作,所有的主要銷售商應(yīng)該推行整合的平臺(tái)。例如Microsoft的平臺(tái)(包括Windows系統(tǒng)的客戶端和服務(wù)器,Windows .NET Framework,Visual Studio.NET Framework,和Microsoft企業(yè)服務(wù)器);BEA的WebLogic平臺(tái);IBM公司的WebSphere平臺(tái);Oracle的平臺(tái);還有Sun公司的一個(gè)平臺(tái)。將精力集中在這些平臺(tái)的一個(gè)難題(應(yīng)用服務(wù)器)上將會(huì)導(dǎo)致一個(gè)類似"樹林和森林"關(guān)系的問題。這樣的一個(gè)比方是合適的,但是它應(yīng)該被考慮到一個(gè)更廣闊平臺(tái)的一部分。

從Microsoft的角度來看,和那些不常見的警告相比,這些是Windows .NET Framework和基于J2EE的產(chǎn)品的關(guān)鍵性的異同點(diǎn)。

相似點(diǎn)

1)  Windows .NET Framework和Java都有一個(gè)受控的運(yùn)行時(shí)環(huán)境,它不但將源代碼轉(zhuǎn)換成中間語言,而且將這些中間語言編譯成本地的可執(zhí)行代碼。兩個(gè)環(huán)境都支持碎片整理、動(dòng)態(tài)類加載和異常處理等。

2)  .NET和Java都倡導(dǎo)和支持基于組件的設(shè)計(jì)、多態(tài)性、繼承和接口等,也提供基礎(chǔ)類庫來執(zhí)行I/O、XML處理、帶有連接池的數(shù)據(jù)庫接入、文本操作與網(wǎng)頁腳本編寫等。

3)  兩者都經(jīng)過特有的銷售商的產(chǎn)品進(jìn)行發(fā)布。J2EE規(guī)范自己是"銷售中立"的,但實(shí)際上那些遵從規(guī)范的產(chǎn)品都必須實(shí)現(xiàn)規(guī)范外的特性,例如管理特性或是展開特性。因此,這些產(chǎn)品必須是對(duì)應(yīng)特定的銷售商。例如Microsoft公司的Windows和.NET系統(tǒng)。

4)   Windows .NET Framework和基于J2EE的產(chǎn)品都和第三方的產(chǎn)品一起工作。例如,在后端數(shù)據(jù)庫領(lǐng)域,.NET和基于J2EE的應(yīng)用程序能訪問儲(chǔ)存在Microsoft的SQL服務(wù)器、IBM的DB2、Oracle,Informix、Sybase等服務(wù)器里面的數(shù)據(jù)。再舉一個(gè)例子,.NET和基于J2EE的系統(tǒng)能訪問流行的信息中間設(shè)備,如Microsoft的MSMQ或是IBM的MQSeries。同樣,也包括文件系統(tǒng),第三方開發(fā)工具,代碼版本系統(tǒng),防火墻等。

不同點(diǎn)

1)  原理

J2EE是一個(gè)單一語言的平臺(tái),關(guān)注跨平臺(tái)的可移植性。這就意味著,要利用J2EE,設(shè)計(jì)方案能使用多個(gè)操作系統(tǒng)其中的一個(gè),但開發(fā)者必須接受關(guān)于Java的培訓(xùn)。Microsoft提供的.NET構(gòu)架作為Windows系統(tǒng)的一部分。開發(fā)者能使用多種語言,并且效率很高而不用進(jìn)行一種新語言的重新訓(xùn)練。但.NET Framework是 Windows系統(tǒng)的一部分。

2)  寬度和廣度

a.       .NET包括代碼、產(chǎn)品、工具和構(gòu)架,來利用網(wǎng)絡(luò)上全部的計(jì)算資源,包括設(shè)備、個(gè)人電腦和服務(wù)器等。.NET使所有的這些設(shè)備能經(jīng)過標(biāo)準(zhǔn)通訊協(xié)議全部連接在一起,即所謂的"XML WEB服務(wù)"。(.NET應(yīng)用程序可以和任何一個(gè)系統(tǒng)連接,無論系統(tǒng)用什么語言和平臺(tái),甚至是J2EE。只要目標(biāo)系統(tǒng)遵照XML WEB服務(wù)標(biāo)準(zhǔn)。).NET模型是廣泛的分布式計(jì)算,它和許多代碼互相通訊并交換信息。

b.       J2EE是面向服務(wù)器的模型,它并不開發(fā)網(wǎng)絡(luò)上的智能和計(jì)算功能。總的來說,基于J2EE的產(chǎn)品只支持服務(wù)器端的應(yīng)用程序。J2EE一般把PC只看作是一個(gè)HTML的瀏覽器,而將這些設(shè)備認(rèn)為是啞終端。至于 XML WEB服務(wù),現(xiàn)有的協(xié)議標(biāo)準(zhǔn)支持分布式的計(jì)算,現(xiàn)有版本的J2EE規(guī)范并沒有提到XML WEB服務(wù)的問題,但是基于J2EE的產(chǎn)品在添加了附加裝置后也可以支持XML Web服務(wù)。然而,添加附加裝置也就意味著有嚴(yán)格的限制。例如,還不清楚現(xiàn)有的規(guī)范是否允許EJB調(diào)用Web服務(wù),雖然Web服務(wù)的組件能調(diào)用一些EJB程序。

3)  編程模型的一致性

Windows .NET Framework提供了一個(gè)跨服務(wù)器、PC和其它設(shè)備的一致的、面向組件的模型。而J2EE提供EJB作為服務(wù)器端的組件模型;為客戶端或是本地組件建立開放的完全用Java編寫的API;為用戶界面提供servlet;也為移動(dòng)設(shè)備提供另一種不同的模型。甚至在EJB內(nèi)部也有至少3種明顯不同的子模型,每一種子模型都有不同的語言定義。

 

Microsoft的.NET編程模型與Java平臺(tái)相比較,在各種服務(wù)器和客戶端上有更好的一致性。J2SE是基于開放的完全用Java編寫的API,而J2EE是基于Java servlet和EJB。

DH Brown, 2002年7月

 

4)  功能

a.       Windows .NET Framework 提供一個(gè)能識(shí)別版本的類加載器,這就意味著應(yīng)用程序的開發(fā)者能確保他們開發(fā)的應(yīng)用程序在一部分代碼已經(jīng)更新的情況下仍能運(yùn)行。而Java和J2EE(現(xiàn)有的)沒有版本識(shí)別的類加載器,這就意味著開發(fā)者和管理員不能保證代碼被執(zhí)行時(shí)是正確的?;蚴钦f,開發(fā)者只能靠運(yùn)氣來保證這一點(diǎn)。

b.       Windows .NET Framework 顯示了語言層面上的類屬性—這就使得編程更加簡(jiǎn)單。例如,在源代碼中只用一個(gè)簡(jiǎn)單的屬性就能把.NET組件標(biāo)志為處理模式?;蛘哒f,一個(gè).NET組件和 XML的串行化可以在一個(gè)屬性中被定義。這個(gè)機(jī)制大大簡(jiǎn)化了許多編程任務(wù)。而Java不顯示語言層上的類屬性,雖然Sun公司考慮到要修改Java語言來改變現(xiàn)狀。這種變化估計(jì)在兩三年內(nèi)才能第一次實(shí)現(xiàn)。

c.       .NET還支持分離數(shù)據(jù)訪問,這主要用于在移動(dòng)設(shè)備或是偶爾聯(lián)網(wǎng)的場(chǎng)合里運(yùn)行的應(yīng)用程序。數(shù)據(jù)能被脫機(jī)操作,接著再和起始數(shù)據(jù)重新同步。而不論是J2EE還是J2SE現(xiàn)階段都不支持分離數(shù)據(jù)訪問,需要這項(xiàng)功能的 J2EE開發(fā)者必須自己寫"plumbing code"。

d.       為建立基于網(wǎng)絡(luò)的用戶界面, Windows .NET Framework提供基于事件的模型,這些模型類似于流行的Visual Basic中的智能客戶端模型。ASP .NET 模型使得建立、發(fā)布和維護(hù)一個(gè)基于網(wǎng)絡(luò)的用戶界面變得更加容易。與之形成對(duì)比的是,J2EE在JSP中不支持這樣的模型。有一些第三方的擴(kuò)展程序部分彌補(bǔ)了這些功能,但是它們的實(shí)用性和簡(jiǎn)便性不能和ASP .NET相比。作為一個(gè)推薦的J2EE附加程序,Java Server Faces可能做到這一點(diǎn)。但這個(gè)附加程序并沒有包括在J2EE的1.4版本以前。而要獲得銷售商的支持,則又需至少一年的時(shí)間。

e.       J2EE支持一個(gè)對(duì)象相關(guān)的數(shù)據(jù)映像模型,它被稱作EJB Entity Beans。這樣是為了允許開發(fā)者更容易地從一個(gè)相關(guān)的數(shù)據(jù)庫建立對(duì)象模型。然而,實(shí)際上把這個(gè)想法編程實(shí)現(xiàn)卻要面對(duì)下列問題:

Ⅰ. 易用性:當(dāng)那些熟知的、正規(guī)定義的、被廣泛支持的結(jié)構(gòu)化查詢語言(SQL)和開發(fā)者的數(shù)據(jù)相互作用時(shí),開發(fā)者不得不放棄它們,而使用一個(gè)被稱為EJBQL 的弱定義查詢語言。和SQL相類似,EJBQL的功能并不強(qiáng)大(例如,在現(xiàn)有的規(guī)范中,它沒有ORDER BY的語句,這樣開發(fā)者就沒法使用特定數(shù)據(jù)庫的 SQL擴(kuò)展),而它的語義也沒有被正規(guī)定義。還有,在對(duì)象間建立聯(lián)系和附屬關(guān)系十分困難,而且在對(duì)象間和XML以及后端之間的數(shù)據(jù)翻譯是手動(dòng)控制的。

Ⅱ.性能:基于EJB系統(tǒng)的性能仍是一個(gè)未知數(shù)。沒有提供公開的基準(zhǔn)??蛻舴从常玫降男阅苓h(yuǎn)遠(yuǎn)偏離了Entity Beans,并且轉(zhuǎn)向一個(gè)更直接的數(shù)據(jù)訪問策略。這是EJB Entity Beans沒有被廣泛使用的一個(gè)關(guān)鍵因素。

在Windows .NET Framework 中,數(shù)據(jù)訪問是基于數(shù)據(jù)集比較的。數(shù)據(jù)集保存了相關(guān)數(shù)據(jù)的一個(gè)子集,它由一個(gè)或多個(gè)SQL查詢語句描述。數(shù)據(jù)集中的數(shù)據(jù)可能保存關(guān)鍵的聯(lián)系,并且開發(fā)者能直接對(duì)數(shù)據(jù)進(jìn)行操作,能將數(shù)據(jù)轉(zhuǎn)換成XML格式和上次操作的類型,能使用標(biāo)準(zhǔn)的SQL過濾數(shù)據(jù)等??偠灾?,相對(duì)于EJB Entity Beans,. NET的數(shù)據(jù)集模型提供一個(gè)更豐富而且簡(jiǎn)單熟悉的途徑。

5)  簡(jiǎn)便性

a.  配置:對(duì)于J2EE,配置是由部署描述信息獲得的XML格式的文件,它們和實(shí)際執(zhí)行的商用邏輯代碼有明顯區(qū)別。這種方法有很多問題。第一,考慮到特定類的元數(shù)據(jù),有些代碼中的改變和元數(shù)據(jù)中的改變是相互依賴的。兩個(gè)獨(dú)立文件的同步性要求有可能產(chǎn)生錯(cuò)誤。第二,考慮到應(yīng)用程序?qū)拥脑獢?shù)據(jù),在J2EE中,沒有可以從一個(gè)程序繼承元數(shù)據(jù)到另一個(gè)程序的途徑。與J2EE不同,Windows的.NET構(gòu)架包括了這個(gè)功能,使得可以在源代碼中直接向類添加屬性,這樣就不會(huì)產(chǎn)生第一個(gè)問題。 Windows .NET中的元數(shù)據(jù)模型允許客戶自己添加擴(kuò)展程序,這樣開發(fā)者就可以編寫和使用自己的屬性。為了在Windows的.NET構(gòu)架中配置外部元數(shù)據(jù),這個(gè)功能被包括在配置文件的分級(jí)系統(tǒng)中,它能從父系統(tǒng)中繼承屬性,這樣每個(gè)文件會(huì)很小,它只記錄改變的設(shè)定。這就避免了J2EE模型的第二個(gè)問題

b.  數(shù)據(jù)庫連接池Windows .NET Framework中,是根據(jù)需要自動(dòng)建立和管理這些池的。而在J2EE模型中,連接池必須被明確配置和管理。

c.  XML Web服務(wù):在.NET中建立一個(gè)XML Web服務(wù)就像在類中添加一個(gè)屬性那樣簡(jiǎn)單。有些基于J2EE的產(chǎn)品也想在Java中模擬這個(gè)功能,.NET提供更簡(jiǎn)單的方法來建立和使用可由雙方共同操作的 XML Web服務(wù)。

d.   部署:在.NET中,要部署一個(gè)應(yīng)用程序,管理員只需要拷貝文件。而在J2EE中,管理員必須將很多編譯文件和JAR、WAR以及EAR綁定,然后在一個(gè)特定的服務(wù)器部署工具中解開并運(yùn)行它們,接著拷貝結(jié)果檔案。這個(gè)多步部署過程意味著典型的編輯/編譯/調(diào)試循環(huán)被大大延長了。此外,由于動(dòng)態(tài)加載類過程中的一些變化,更新一個(gè)簡(jiǎn)單的類常常需要重新啟動(dòng)基于J2EE的服務(wù)器。

 

雖然許多公司選擇Java作為企業(yè)發(fā)展的策略平臺(tái),但它們的使用卻由于J2EE的復(fù)雜性而受到阻礙。Meta Group,8月

 

6)  成本

a.   為了部署,運(yùn)行在Windows .NET Framework之外編寫的服務(wù)器端的應(yīng)用程序需要一個(gè)Windows Server的許可,這比三個(gè)遵從J2EE的商業(yè)服務(wù)器中的任何一個(gè)許可都便宜很多。包括四個(gè)網(wǎng)絡(luò)服務(wù)器的系統(tǒng)部署費(fèi)用的差別可達(dá)到數(shù)十萬美元。例如, Microsoft Windows Server 2003(企業(yè)版)的一個(gè)四機(jī)器系統(tǒng)(每個(gè)有四個(gè)pc)的許可費(fèi)用不超過16,000美元(這考慮了零售因素)。而WebSphere Application Server 5.0在同樣的系統(tǒng)中每臺(tái)pc的許可費(fèi)用達(dá)12,000美元,這共要192, 000美元。這個(gè)比率是12比1。大多數(shù)基于J2EE的商業(yè)應(yīng)用程序服務(wù)器的價(jià)格都和這類似。(這假定了性能相等。然而實(shí)際上Middleware公司 2002年10月的報(bào)告顯示,一個(gè)建立在Windows .NET Framework上的應(yīng)用程序的效率是建立在同樣流行的基于J2EE的服務(wù)器上的程序的2-4倍。所以實(shí)際上價(jià)格的優(yōu)勢(shì)遠(yuǎn)高于12比1)有很多免費(fèi)的,基于J2EE的開放源應(yīng)用服務(wù)器,但是它們并沒有J2EE-compliant的商標(biāo)。還有關(guān)于文件和產(chǎn)品的問題:需要產(chǎn)品之間的比較來討論采許可費(fèi)用。

b.  為Windows .NET Framework開發(fā)工具的費(fèi)用也更加低廉。Visual Studio .NET是.NET的整合開發(fā)工具,它的許可費(fèi)用大大低于商業(yè)化的J2EE銷售商制定的開發(fā)工具的費(fèi)用。并且在業(yè)界,Visual Studio .NET作為最佳開發(fā)工具贏得了一系列的大獎(jiǎng)。評(píng)估過Visual Studio .NET和其競(jìng)爭(zhēng)對(duì)手的客戶都說,相對(duì)于最好的Java工具,Visual Studio .NET開發(fā)效率更高(See Giga,2002年6月)。

c.   使用Windows .NET Framework的開發(fā)和維護(hù)費(fèi)用更低。專家認(rèn)為許可費(fèi)用并不是一個(gè)項(xiàng)目的最大開支。典型的軟件開發(fā)和維護(hù)占項(xiàng)目總費(fèi)用的50-80%(Glass,2002;Kemerer,1995;Gartner,2001)。Middleware公司2002年10月的研究表明,在Windows .NET Framework上一個(gè)給定的應(yīng)用程序開發(fā)相對(duì)于J2EE,只需要1/3的代碼。代碼越少就意味著維護(hù)更加簡(jiǎn)單。

總結(jié)

 

顯而易見:正確的產(chǎn)品選擇決策不可能不評(píng)估實(shí)際的產(chǎn)品。對(duì)比Microsoft Windows Server及 Windows .NET Framework和J2EE(Sun公司的規(guī)范)是有價(jià)值的,但是這樣的努力缺少實(shí)際產(chǎn)品的評(píng)估。然而,還是可以從中得出一些結(jié)論:

1)  J2EE展現(xiàn)了一個(gè)以服務(wù)器為中心的原則,并將重心放在EJB和解決"相關(guān)對(duì)象的映像問題"上。J2EE在支持 XML和Web服務(wù)上已經(jīng)落后了。Windows .NET Framework的原則則是通過協(xié)議標(biāo)準(zhǔn)和XML、充分利用服務(wù)器、接口和設(shè)備的的大規(guī)模分布式計(jì)算。

2)  相對(duì)于編寫在Windows .NET Framework上的程序,J2EE應(yīng)用程序需要更多的代碼來執(zhí)行相同的任務(wù)。

3)  J2EE的管理和部署模型更像是一個(gè)主機(jī)模型,它關(guān)注保護(hù)和限制稀有的計(jì)算資源,按比率使用。而Windows .NET Framework展現(xiàn)出的原則是計(jì)算資源是廉價(jià)的,而且將更加廉價(jià),但是部署能力將保持大部分昂貴的資源。

總之,如果一個(gè)項(xiàng)目要求必須從幾個(gè)操作系統(tǒng)中選擇一個(gè)作為部署平臺(tái),而不考慮開發(fā)成本;強(qiáng)制(并且重新培訓(xùn)訓(xùn)練)開發(fā)者使用單一的編程語言來執(zhí)行這個(gè)項(xiàng)目,從而代碼的版本問題就不再重要;重要的是配給和限制相對(duì)便宜的計(jì)算資源;這樣使用昂貴復(fù)雜的開發(fā)和維護(hù)工具就顯得順理成章;而編寫更多的代碼也有其優(yōu)越性 -- J2EE也許是一個(gè)不錯(cuò)的選擇。

然而,如果商業(yè)目標(biāo)顯示最優(yōu)化的開發(fā)效率是重要的;低廉的性價(jià)比更符合要求;通過通訊協(xié)議的標(biāo)準(zhǔn)獲得的可相互操作性有較高價(jià)值;大量支持基于界面的應(yīng)用程序和移動(dòng)的應(yīng)用程序是重要的;更感興趣的是易擴(kuò)展性—這樣的話,建立一個(gè) Windows .NET Framework上的Windows Server應(yīng)用程序是正確的選擇。

相關(guān)文章

最新評(píng)論