今天談談.NET與Java,入門語言的選擇
.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java和Go語言二選一,選擇哪門語言好?JavaGo
- 談談java入門的那些事兒Java
- 談談Markdown的認識與入門
- 羽夏閒談—— C 語言入門之問
- 選擇一門程式語言,任何一門語言
- 談戀愛不如學習!如何選擇Python與Java?PythonJava
- 區塊鏈開發入門如何選擇程式語言?區塊鏈
- 淺談函數語言程式設計與 Java Stream函數程式設計Java
- 大話PM 談談產品入門的經典語錄
- 如何選擇你的第一門程式語言
- 談談java的類與物件Java物件
- java語言的入門介紹Java
- 談下自己的認識只掌握一門語言
- 程式語言漫談
- web開發語言的選擇:PHP or JAVA薦WebPHPJava
- 淺談JavaScript的語言特性JavaScript
- C語言快速入門教程1快速入門 2指令 3條件選擇C語言
- 機器學習入門(二):工具與框架的選擇機器學習框架
- Java語言和C++語言的差異——老生常談 (轉)JavaC++
- 淺談Java 8的函數語言程式設計Java函數程式設計
- 寫在校招季,談談機器學習崗的Offer選擇問題機器學習
- 談談前後端分離及認證選擇後端
- 談談React.js的核心入門知識ReactJS
- 淺談Swift程式語言Swift
- C++ API設計大師Martin Reddy:選擇最合適的語言(圖靈訪談)C++API圖靈
- 談談 Java 類載入機制Java
- 主流程式語言的“介紹”與“選擇”
- 以Sid Meier切入,談談遊戲中的趣味選擇設計遊戲
- 請你喝一杯 Corretto?談一談 JDK 的新選擇JDK
- Java語言入門:該如何學習JavaJava
- Oracle BIEE的登入首頁去掉語言選擇欄Oracle
- C語言雜談:指標與陣列 (上)C語言指標陣列
- C語言雜談:指標與陣列 (下)C語言指標陣列
- C語言雜談:指標與陣列(下)C語言指標陣列
- Java入門培訓班怎麼選擇Java
- Java入門系列-08-選擇結構Java
- [英]C++ API設計大師Martin Reddy:選擇最合適的語言(圖靈訪談)C++API圖靈
- 【Go 語言入門專欄】Go 語言的起源與發展Go