.NET與Java的這種類似爲快速開發框架的開發提供了便利,若是您掌握了C#,那麼,掌握Java這個語言幾乎是不費什麼力氣的,須要花費時間的只不過就是熟悉彼此的類庫。.NET是.NET Framework,Java是J2SE。學習這二者的理論基礎都是面向對象理論。因此,一名有着面向對象理論基礎的人是很容易掌握.NET和Java的。java
.NET是迎接J微軟推出的一種新的軟件運行平臺,它包括一整套應用範圍普遍的技術,旨在java所帶來的挑戰。.NET給快速開發框架開發帶來了不少新的技術,尤爲是它的「混合語言」開發方式,是第一個支持多種語言混合開發的軟件運行平臺,下一代Windows--LongHorn的核心將會看到.NET的身影。若是讀者學過Java,那麼您會發現,.NET與Java實在是太象了。尤爲是C#,若是給你一段代碼,有的時候還真難分辨出是用Java仍是C#寫的。程序員
Java是上世紀九十年代誕生的一種面嚮對象語言,它吸收了C++的許多長處,其最大的特性是「跨平臺」,因爲它很好地知足了網絡時代信息系統對高級語言的要求,於是在實踐中獲得普遍應用。Java通過近十年的發展,目前已在企業信息系統開發領域佔據了主流地位,造成了一整套完整的技術體系,取得了巨大的成功。算法
JAVA平臺包括JAVA語言,以及一套虛擬機——如JVM、KVM、CVM等——經過它們實如今PC機,手提電腦或是嵌入式系統上運行JAVA的字節碼。同時,JAVA平臺還定義了一整套覆蓋面很廣的API,它們被用來與微軟的API協調或是相互競爭。如JDBC對ODBC,JTAPI對TAPI,JDO對ADO等等。所以,簡要來講,JAVA平臺包括語言,虛擬機,以及API庫。因爲使用虛擬機機制,因此JAVA語言在全部的平臺上只有惟一的版本,所以它使用RMI協議進行遠程通訊;微軟則在.NET框架中使用DCOM——正在逐步演變爲SOAP。SUN最初對JAVA的宣傳是「一次性代碼編寫,全部環境下運行」,但在推出了「J2EE」和「J2ME」後不得不收回了它最初的宣傳,由於「一種尺碼的鞋適合全部的腳」的解決方案並不能很好的工做。數據庫
.NET框架包括C++, VB.NET和C#等一系列語言;與JAVA虛擬機相似的一套運行時環境;以及一套傾向與WINDOWS體系的API接口。其中的運行時環境可能存在於一個瀏覽器、或是一個WEB SERVER、或是在操做系統中。未來也許在SQL SERVER中也可能存在這樣的運行時環境。另外須要說起的是微軟的SOAP協議,它在繼承了DCOM的一些特性的基礎上發展起來,基於XML格式經過HTTP進行傳輸。瀏覽器
.NET的加密法主要基於CryptoAPI 和相關擴展。大多數有關加密的類都在System.security.Cryptography, X509Centificates 和XML中。.NET利用基於流的模型來完成加密傳輸,全部的算法都被默認爲最高的安全級別。.NET也容許用戶本身在 machine.config 中定義本身的算法。JAVA平臺的加密算法分二個部分:Java Cryptography Architecture和 Java Cryptography Extension。 JCE的出口受到有關法律的限制。若是要使用用戶本身的加密算法,必須獲得認證機構的認證。安全
.NET爲快速開發框架主要提供了下面幾大類加密算法:非對稱算法、HASH算法、對稱算法、隨機數生成法。JAVA提供的加密算法更多,可是較少第三方廠商能夠在JAVA中提供本身的算法。服務器
兩個平臺的配置都是經過XML或純文本文件,兩個平臺最大的區別在於處理安全配置體系的方式不一樣。在.NET平臺,有圖形接口和命令行二種方式來修改安全配置參數。Mscorcfg.msc是圖形接口方式,Caspol.exe提供了命令行方式,適用於批處理或配置文本。JAVA平臺只提供了圖形接口的工具policytool.exe。和.NET不一樣的是,它的目標對象(配置文件)的名字和位置不是固定的。.NET定義了不一樣範圍的安全配置文件:系統範圍,本機範圍,本用戶範圍。在配置有衝突時,原則上小範圍的參數有優先權。JAVA和J2EE的核心配置文件都保存在固定位置,但擴展配置文件隨廠家不一樣而不一樣。網絡
SSL已是事實的傳輸安全的工業標準了。JAVA和.NET都支持最新版本 SSL 3.0。框架
.NET只在基於IIS的應用中使用SSL來保護HTTP傳輸,對於非IIS應用,.NET不能保護傳輸中的數據。在JAVA中,JSSE提供了平臺級的服務,保證基於TCP/IP的通訊安全。除了IIS,.NET沒有提供任何其它平臺級的通訊保護的標準方案,可是JAVA在這方面提供了全套的解決方案。工具
.NET經過WSA和 WSE包來提供最新的WEB服務安全保證,JAVA目前尚未提供這方面的支持。在加密方法上,JAVA和.NET基本沒有太大的差異;在通訊保護方面,JAVA 比.NET提供了更多的選擇方案;可是在WEB服務安全性上,JAVA明顯比.NET落後一些。
JAVA 和.NET 的Common Library Runtime都實行內存安全或類型安全的保護機制,在這些平臺開發的應用的安全性也是能夠檢驗的。他們的實現機制有很大的不一樣。在.NET, CLR老是執行編譯好的代碼,它不解釋代碼。可是在中間語言被編譯以前,編譯器會有驗證和檢驗的步驟。第一步是檢查文件的結構和代碼完整性;第二步包括一些擴展的檢查,內存安全、堆棧跟蹤、數據流分析、類型檢查等。在運行階段,由VES來負責安全性檢查和出錯意外狀況處理。在JAVA平臺,JAVA虛擬機(JVM)負責類的載入、連接、檢驗和執行。對於已經編譯和優化的代碼,JVM也用二個無條件調用堆棧來保留最初的字節代碼信息。
在.NET, 域隔離創建在內存安全機制的基礎上,不一樣的域不能直接訪問彼此的地址空間,只能經過.NET遠程通訊機制訪問。在JAVA平臺,應用隔離是經過ClassLoaders 和 ProtectionDomains 相結合來實現的,安全類加載是JVM安全機制的基石。.NET的 AppDomains 就象操做系統的進程同樣,使用起來比JAVA的 ProtectionDomains 更直接、容易一些。
兩個平臺基本上差很少,.NET在靈活性上稍微好一點。
JAVA最初來源於SUN的一套爲機頂盒設計的語言,當時的名字是OAK,SUN將之改名,並將它放在INTERNET上做爲開放源碼共享。隨着專門爲網頁設計的JAVA APPLET的出現,JAVA語言迅速在INTERNET上流行起來。當時的瀏覽器主要是NETSCAPE。當微軟發現明天市場的主宰多是瀏覽器而不是桌面系統時,開始着手對NETSCAPE進行收購,在收購計劃失敗後微軟發展了本身的瀏覽器IE。當時的INTERNET須要一種語言,而JAVA適時的出現了,因爲它與C++的許多類似的語法,使得不少程序員轉向了JAVA。而它確實具備不少優點,以致於在98年秋,它的反對者微軟在MSDN中都宣稱,JAVA是編寫COM組件的最佳語言。隨着JAVA一塊兒出現的還有LINUX操做系統和APACHE服務器。這三者的聯合在服務器端的應用表現出強大的威力,以致WINDOWS NT在企業級服務器市場受到了很大的衝擊。
如今,咱們能看到到還只是一個很混亂的局面。而在將來,咱們將看到.NET的成熟,以及它和JAVA的融合。JAVA將繼續保持它的特色:跨平臺的服務器端應用,如WAP服務器,或者是電信領域的如JAIN,同時它在嵌入式系統中將繼續保持它的優點,象智能卡、移動電話、PDA等。而咱們還將看到.NET的成熟,固然這種成熟須要時間,多是至關長的一段時間,就好象當年JAVA成長那樣。
非微軟產品,包括服務器,桌面或是便攜式設備的操做系統如Solaris, Linux和Palm OS的.NET接口。與JAVA核心的整合。SQL SERVER 或是ORACLE 等數據庫產品中整合的VES 引擎。由中立的第三方開發的開放源碼的,完善的.NET平臺。能夠預見到,微軟將會贊助一些開放源碼的項目,以使.NET 向UNIX 平臺擴展,而這將有助於一些開放源碼組織減小它們對JAVA的偏心