4) Windows .NET Framework和基於J2EE的產品都和第三方的產品一起工作。例如,在後端資料庫領域,.NET和基於J2EE的應用程式能訪問儲存在Microsoft的SQL伺服器、IBM的DB2、Oracle,Informix、Sybase等伺服器裡面的資料。再舉一個例子,.NET和基於J2EE的系統能訪問流行的資訊中間裝置,如Microsoft的MSMQ或是IBM的MQSeries。同樣,也包括檔案系統,第三方開發工具,代碼版本系統,防火牆等。
a. .NET包括代碼、產品、工具和構架,來利用網路上全部的計算資源,包括裝置、個人電腦和伺服器等。.NET使所有的這些裝置能經過標準通訊協議全部串連在一起,即所謂的"XML WEB服務"。(.NET應用程式可以和任何一個系統串連,無論系統用什麼語言和平台,甚至是J2EE。只要目標系統遵照XML WEB服務標準。).NET模型是廣泛的分散式運算,它和許多代碼互相通訊並交換資訊。
b. J2EE是面向伺服器的模型,它並不開發網路上的智能和計算功能。總的來說,基於J2EE的產品只支援伺服器端的應用程式。J2EE一般把PC只看作是一個HTML的瀏覽器,而將這些裝置認為是啞終端。至於 XML WEB服務,現有的協議標準支援分布式的計算,現有版本的J2EE規範並沒有提到XML WEB服務的問題,但是基於J2EE的產品在添加了附加裝置後也可以支援XML Web服務。然而,添加附加裝置也就意味著有嚴格的限制。例如,還不清楚現有的規範是否允許EJB調用Web服務,雖然Web服務的組件能調用一些EJB程式。
3) 編程模型的一致性
Windows .NET Framework提供了一個跨伺服器、PC和其它裝置的一致的、面向組件的模型。而J2EE提供EJB作為伺服器端的組件模型;為用戶端或是本機群組件建立開放的完全用Java編寫的API;為使用者介面提供servlet;也為行動裝置提供另一種不同的模型。甚至在EJB內部也有至少3種明顯不同的子模型,每一種子模型都有不同的語言定義。
a. Windows .NET Framework 提供一個能識別版本的類載入器,這就意味著應用程式的開發人員能確保他們開發的應用程式在一部分代碼已經更新的情況下仍能運行。而Java和J2EE(現有的)沒有版本識別的類載入器,這就意味著開發人員和管理員不能保證代碼被執行時是正確的。或是說,開發人員只能靠運氣來保證這一點。
b. Windows .NET Framework 顯示了語言層面上的類屬性—這就使得編程更加簡單。例如,在原始碼中只用一個簡單的屬性就能把.NET組件標誌為處理模式。或者說,一個.NET組件和 XML的序列化可以在一個屬性中被定義。這個機制大大簡化了許多編程任務。而Java不顯示語言層上的類屬性,雖然Sun公司考慮到要修改Java語言來改變現狀。這種變化估計在兩三年內才能第一次實現。
c. .NET還支援分離資料訪問,這主要用於在行動裝置或是偶爾連網的場合裡啟動並執行應用程式。資料能被離線操作,接著再和起始資料重新同步。而不論是J2EE還是J2SE現階段都不支援分離資料訪問,需要這項功能的 J2EE開發人員必須自己寫"plumbing code"。
d. 為建立基於網路的使用者介面, Windows .NET Framework提供基於事件的模型,這些模型類似於流行的Visual Basic中的智能用戶端模型。ASP .NET 模型使得建立、發布和維護一個基於網路的使用者介面變得更加容易。與之形成對比的是,J2EE在JSP中不支援這樣的模型。有一些第三方的擴充程式部分彌補了這些功能,但是它們的實用性和簡便性不能和ASP .NET相比。作為一個推薦的J2EE附加程式,Java Server Faces可能做到這一點。但這個附加程式並沒有包括在J2EE的1.4版本以前。而要獲得銷售商的支援,則又需至少一年的時間。
e. J2EE支援一個對象相關的資料映像模型,它被稱作EJB Entity Beans。這樣是為了允許開發人員更容易地從一個相關的資料庫建立物件模型。然而,實際上把這個想法編程實現卻要面對下列問題:
a. 配置:對於J2EE,配置是由部署描述資訊獲得的XML格式的檔案,它們和實際執行的商用邏輯代碼有明顯區別。這種方法有很多問題。第一,考慮到特定類的中繼資料,有些代碼中的改變和中繼資料中的改變是相互依賴的。兩個獨立檔案的同步性要求有可能產生錯誤。第二,考慮到應用程式層的中繼資料,在J2EE中,沒有可以從一個程式繼承中繼資料到另一個程式的途徑。與J2EE不同,Windows的.NET構架包括了這個功能,使得可以在原始碼中直接向類添加屬性,這樣就不會產生第一個問題。 Windows .NET中的中繼資料模型允許客戶自己添加擴充程式,這樣開發人員就可以編寫和使用自己的屬性。為了在Windows的.NET構架中配置外部中繼資料,這個功能被包括在設定檔的分級系統中,它能從父系統中繼承屬性,這樣每個檔案會很小,它只記錄改變的設定。這就避免了J2EE模型的第二個問題
a. 為了部署,運行在Windows .NET Framework之外編寫的伺服器端的應用程式需要一個Windows Server的許可,這比三個遵從J2EE的商務服務器中的任何一個許可都便宜很多。包括四個網路伺服器的系統部署費用的差別可達到數十萬美元。例如, Microsoft Windows Server 2003(企業版)的一個四機器系統(每個有四個pc)的許可費用不超過16,000美元(這考慮了零售因素)。而WebSphere Application Server 5.0在同樣的系統中每台pc的許可費用達12,000美元,這共要192, 000美元。這個比率是12比1。大多數基於J2EE的商務應用程式伺服器的價格都和這類似。(這假定了效能相等。然而實際上Middleware公司 2002年10月的報告顯示,一個建立在Windows .NET Framework上的應用程式的效率是建立在同樣流行的基於J2EE的伺服器上的程式的2-4倍。所以實際上價格的優勢遠高於12比1)有很多免費的,基於J2EE的開放源應用伺服器,但是它們並沒有J2EE-compliant的商標。還有關於檔案和產品的問題:需要產品之間的比較來討論采許可費用。
b. 為Windows .NET Framework開發工具的費用也更加低廉。Visual Studio .NET是.NET的整合開發工具,它的許可費用大大低於商業化的J2EE銷售商制定的開發工具的費用。並且在業界,Visual Studio .NET作為最佳開發工具贏得了一系列的大獎。評估過Visual Studio .NET和其競爭者的客戶都說,相對於最好的Java工具,Visual Studio .NET開發效率更高(See Giga,2002年6月)。
然而,如果商業目標顯示最佳化的開發效率是重要的;低廉的性價比更符合要求;通過通訊協議的標準獲得的可相互通性有較高價值;大量支援基於介面的應用程式和移動的應用程式是重要的;更感興趣的是易擴充性—這樣的話,建立一個 Windows .NET Framework上的Windows Server應用程式是正確的選擇。