(1)在原理方麵,J2EE是一個單一語言的平台,跨操作係統平台移植比較方便,但開發者必須接受關於Java的培訓。Mi-crosoft提供的。NET屬於多語言平台,隻能用於Windows係列操作係統,但可跨開發工具平台,前提是支持。NET框架。開發人員一般無須接受一種新語言的重新訓練。
(2)在體係結構方麵,NET包括代碼、產品、工具和構架,利用網絡上全部的計算資源(包括設備、個人電腦和服務器等)。NET能使所有這些設備經過標準通信協議全部連接在一起,即所謂“XML web服務”。NET模型是廣泛的分布式計算,它和許多代碼互相通信並交換信息。而J2EE是麵向服務器的模型,基於J2EE的產品隻支持服務器端的應用程序。
(3)在編程模型的一致性方麵,Windows。NET Framework提供了一個跨服務器、PC和其他設備的一致的、麵向組件的模型。而J2EE提供EJB作為服務器端的組件模型,為客戶端或是本地組件建立開放的完全用Java編寫的API,為用戶界麵提供serv1et,也為移動設備提供另一種不同的模型。Microsoft的NET編程模型與Java平台相比較,在各種服務器和客戶端上有更好的一致性。J2SE是基於開放的完全用Java編寫的API,而J2EE則是基於Ja-va serv1et和EJB。
(4)在功能方麵:
①Windows。NET Framework提供一個能識別版本的類加載器,因此開發者能確保他們開發的應用程序在一部分代碼已經更新的情況下仍能運行。而Java和J2EE沒有版本識別的類加載器,開發者和管理員不能完全保證代碼被執行時是正確的。
②Windows。NET Framework顯示了語言層麵上的類屬性,這使得編程更加簡單。例如,在源代碼中隻用一個簡單的屬性就能把。NET組件標識為處理模式。而Java不顯示語言層上的類屬性。③。NET支持分離數據訪問,主要用於在移動設備或偶爾聯網的場合裏運行的應用程序。數據能被脫機操作,接著再與起始數據重新同步。而不論是J2EE還是J2SE,現階段都不支持分離數據訪問,需要這項功能的J2EE開發者必須自己寫“銜接”代碼。
④為建立基於網絡的用戶界麵,Windows。NET Framework為ASP。NET提供基於事件的模型,這些模型類似於Visía1 Basic中的智能客戶端模型,它們使得建立、發布和維護一個基於網絡的用戶界麵變得更加容易。而J2EE在JSP中不支持這樣的模型,雖然有一些第三方的擴展程序部分彌補了這些功能,但是它們的實用性和簡便性都不如ASP。NET。
(5)在簡便性方麵:
①從外部元數據的配置來看:對於J2EE,配置是由部署描述信息獲得的XML格式的文件,它們和實際執行的商用邏輯代碼有明顯區別。這種方法有兩個主要問題:第一,對於特定類的元數據,有些代碼中的改變和元數據中的改變是相互依賴的,兩個獨立文件的同步性要求有可能產生錯誤。第二,對於應用程序層的元數據,在J2EE中缺乏從一個程序繼承元數據到另一個程序的途徑。與J2EE不同,Windows的。NET Framework包括了這個功能,使得可以在源代碼中直接向類添加屬性,從而不會產生第一個問題。Windows。NET中的元數據模型允許客戶自己添加擴展程序,開發者可以編寫和使用自己的屬性,為程序繼承元數據到另一個程序提供了途徑。
②從數據庫連接池的管理來看:在Windows。NET Framework中,是根據需要自動建立和管理這些池的。而在J2EE模型中,連接池必須被明確配置和管理。
③從XML Web服務上看:在。NET中建立一個XML Web服務就像在類中添加一個屬性那樣簡單。有些基於J2EE的產品也想在Java中模擬這個功能。NET提供更簡單的方法來建立和使用可由雙方共同操作的XML Web服務。
④從應用程序部署來看:在。NET中,要部署一個應用程序,管理員隻需要拷貝文件。而在J2EE中,管理員必須將很多編譯文件和JAR、WAR以及EAR綁定,然後在一個特定的服務器部署工具中解開並運行它們,接著拷貝結果檔案,這使得應用程序的部署較為複雜。