今天談談.NET與Java,入門語言的選擇

lrtech發表於2019-05-31


.NET與Java的這種相似為 快速開發框架 的開發提供了便利,如果您掌握了C#,那麼,掌握Java這個語言幾乎是不費什麼力氣的,需要花費時間的只不過就是熟悉彼此的類庫。.NET是.NET Framework,Java是J2SE。學習這兩者的理論基礎都是物件導向理論。所以,一名有著物件導向理論基礎的人是很容易掌握.NET和Java的。

 

   簡介

  .NET是迎接J微軟推出的一種新的軟體執行平臺,它包括一整套應用範圍廣泛的技術,旨在ava所帶來的挑戰。.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的偏愛


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31505134/viewspace-2646356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章