.net與java之爭
阿新 • • 發佈:2019-02-11
在經驗豐富的 Java 開發人員看來,.NET 可能與 Java 平臺很相似,它們都提供了一種建立應用程式的結構化方法,都有編譯為中間程式碼的語言,都為應用程式開發提供了一個大型 API 庫。但實際上,.NET 的核心有一套與 Java 平臺不同的目標。
從概念上講,Java 是兩樣東西:Java 平臺(執行時和 API)和 Java 語言。Java 平臺的用途是支援用 Java 語言編寫並被編譯為 Java 位元組碼的應用程式。儘管進行了許多試圖將其他語言編譯為 Java 位元組碼的工作,但是這些工作大部分都是學術活動。Java 的理想目標一直是“在多種平臺上使用一種語言”。
.NET 也是兩樣東西:.NET Framework(執行時和 API)和大量支援它的程式語言。.NET Framework 的用途是支援用任一種語言編寫並被編譯為 MSIL 的應用程式。.NET 的目標是“多種語言共享一種平臺”。
第一部分 安全配置和程式碼封裝
安全配置
兩個平臺的配置都是通過XML或純文字檔案,兩個平臺最大的區別在於處理安全配置體系的方式不同。
在.NET平臺,有圖形介面和命令列二種方式來修改安全配置引數。Mscorcfg.msc是圖形介面方式,Caspol.exe提供了命令列方式,適用於批處理或配置文字。
JAVA平臺只提供了圖形介面的工具policytool.exe。和.NET不同的是,它的目標物件(配置檔案)的名字和位置不是固定的。
.NET定義了不同範圍的安全配置檔案:系統範圍,本機範圍,本使用者範圍。在配置有衝突時,原則上小範圍的引數有優先權。
JAVA和J2EE的核心配置檔案都儲存在固定位置,但擴充套件配置檔案隨廠家不同而不同。
程式碼封裝:檢驗
JAVA 和.NET 的Common Library Runtime (CLR) 都實行記憶體安全或型別安全的保護機制,在這些平臺開發的應用的安全性也是可以檢驗的。他們的實現機制有很大的不同。
在.NET, CLR總是執行編譯好的程式碼,它不解釋程式碼。但是在中間語言(IL)被編譯之前,編譯器會有驗證和檢驗的步驟。第一步是檢查檔案的結構和程式碼完整性;第二步包括一些擴充套件的檢查,記憶體安全、堆疊跟蹤、資料流分析、型別檢查等。在執行階段,由VES (Virtual Execution System) 來負責安全性檢查和出錯意外情況處理。
在JAVA平臺,JAVA虛擬機器(JVM)負責類的載入、連結、檢驗和執行。對於已經編譯和優化的程式碼,JVM也用二個無條件呼叫堆疊來保留最初的位元組程式碼資訊。
小結:和.NET不同,JVM的預設設定是不檢驗原生代碼。另外,JVM保留最初的位元組程式碼供執行時檢查,而.NET把靜態分析和執行時插入檢驗程式碼相結合。
程式碼封裝:應用隔離
在.NET, 域隔離建立在記憶體安全機制的基礎上,不同的域不能直接訪問彼此的地址空間,只能通過.NET遠端通訊機制訪問。
在JAVA平臺,應用隔離是通過ClassLoaders 和 ProtectionDomains 相結合來實現的,安全類載入是JVM安全機制的基石。
小結:.NET的 AppDomains 就象作業系統的程序一樣,使用起來比JAVA的 ProtectionDomains 更直接、容易一些。
程式碼封裝: 語言特徵
兩個平臺基本上差不多,.NET在靈活性上稍微好一點。
總結:
JAVA在安全配置上有較多的優勢,.NET在程式碼封裝的選擇性和易用性好一些。
第二部分 加密和通訊
加密法:概論
.NET的加密法主要基於CryptoAPI 和相關擴充套件。大多數有關加密的類都在System.security.Cryptography, X509Centificates 和XML中。.NET利用基於流的模型來完成加密傳輸,所有的演算法都被預設為最高的安全級別。.NET也允許使用者自己在 machine.config 中定義自己的演算法。
JAVA平臺的加密演算法分二個部分:Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE)。 JCE的出口受到有關法律的限制。如果要使用使用者自己的加密演算法,必須得到認證機構(SUN 或 IBM)的認證。
加密法:演算法
.NET主要提供了下面幾大類加密演算法:非對稱演算法、HASH演算法、對稱演算法、隨機數生成法。
JAVA提供的加密演算法更多,但是較少第三方廠商可以在JAVA中提供自己的演算法。
安全通訊
SSL已經是事實的傳輸安全的工業標準了。JAVA和.NET都支援最新版本 SSL 3.0。
安全通訊:平臺
.NET只在基於IIS的應用中使用SSL來保護HTTP傳輸,對於非IIS應用,.NET不能保護傳輸中的資料。
在JAVA中,JSSE (Java Secure Socket Extensions) 提供了平臺級的服務,保證基於TCP/IP的通訊安全。
除了IIS,.NET沒有提供任何其它平臺級的通訊保護的標準方案,但是JAVA在這方面提供了全套的解決方案。
安全通訊:應用
.NET通過WSA (Web Service Architecture)和 WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,JAVA目前還沒有提供這方面的支援。
總結: 在加密方法上,JAVA和.NET基本沒有太大的差別;在通訊保護方面,JAVA 比.NET提供了更多的選擇方案;但是在WEB服務安全性上,JAVA明顯比.NET落後一些。
JAVA 與.NET
JAVA語言發明已有10年曆史,在IBM、SUN等公司的推動下已經比較穩定與成熟,獲得了大規模企業的普遍應用。時至今日,J2EE已經發展成為一個覆蓋面廣,效率高,易用性強的技術平臺,吸引了400萬開發者,在網路技術遍及全球的的今天,更有17.5億臺裝置使用JAVA技術.同時, Mustang版本的J2EE正在緊鑼密鼓的開發當中,按照慣例,每2年將釋出一個全新的J2SE版本,所以Mustang開發版對應的J2SE6.0版本將在2006年底完成.對於開發人員來說.從技術難度角度, 由JAVA開發轉.NET或其它軟體的開發較為容易.
.NET則是微軟公司目前主推的開發平臺,是微軟未來作業系統以及長遠戰略的基礎。對於軟體開發人員來講,.NET的技術相對簡單,入門較快。由於.NET擁有易學易用、開發迅速的特性,隨著它的成熟和完善,使其受到越來越多企業的青睞。 北美一些大型企業(如加拿大Royal Bank, Scotia Bank)紛紛將應用平臺遷移到.NET,從而走出了Microsoft之平臺與技術只適合於中小企業的陰影。 近一年來,.NET在國內也取得了驚人的發展 - 眾多企業紛紛採用.NET作為企業應用開發技術與平臺,使用.NET專案之企業數量快速增長,甚至與JAVA一樣被銀行業、電信業所採用。
專家預測,在這種情況下, .NET的強勁發展還未到來,現今仍然處於發展初期。作為發展初期的.NET開發人員,不僅要求具備良好的.Net基礎知識,更要求掌握全面的、高深的.NET專用技術,以適應企業級應用開發。欲在激烈的就業競爭或者在公司眾多的Developer 中脫穎而出,除了具備基本技能外,“人無我有,人有我精”無疑是必經的過程。 .NET的興起與發展為我們提供了嶄新的契機。
JAVA與.NET就業需求
資訊產業已經成為中國發展速度最快的產業,以每年30%左右的速度增長,IT行業形成了大量的就業機會。近幾年,Java/J2EE的就業市場一直都是IT業中需求最熱、職位最多,而且整體薪資水準較高。
那麼值得關注的是,2005年.Net的就業需求突然之間異軍突起,年薪可觀等突出優勢,不啻為走上軟體開發之路的關鍵選擇!
很多正在尋找發展方向的朋友非常關心的是,自己是否適合學習並從事Java/.Net開發工作,也有更多的已有一定基礎的朋友關心的是,怎樣在競爭中取勝,怎樣進一步提高,怎樣快速找到軟體開發工作。我們可以簡單的以一個IT培訓機構的就業情況簡要分析。
加拿大達內外企IT培訓是業界公認的“高階外企IT培訓中心”,以學員的高薪、高比率就業贏得了優秀的信譽與品質。以其學員就業情況為例, JAVA方面各企業用人需求長年不斷,9月間即36家企業發出用人申請,如果工程師在掌握JAVA語言的基礎上,同時掌握C++語言,那麼就業選擇渠道將更為廣泛。普通JAVA工程師平均月薪RMB 4000-6000左右。中心已經畢業的學員已經廣泛就業於IBM、華為、摩托羅拉、用友、新浪、搜狐、亞信等一流IT企業。
各企業對.NET畢業學員的需求在6-8月份激增,已累計24家公司需要大量的軟體工程師,達內的學員供不應求。並且相關公司多為國內知名外企和新興外企,薪水也在RMB4000以上。.NET繼續風頭正勁,達內今年3期.NET就業班學員全部成功就業,令人深感欣慰和喜悅。
不論對現在正在從事軟體開發的人員,還是對希望進入這一領域的朋友,JAVA和.NET 都給我們帶來了新的機會!好的就業機遇一向都是可遇而不可求的,目前, JAVA和..NET工作機會巨大,諸多行業都在使用,搶佔先機,才能始終從容!不論我們做何種選擇,都將給我們帶來一個美好的職業前途 本文出自 51CTO.COM技術部落格
從概念上講,Java 是兩樣東西:Java 平臺(執行時和 API)和 Java 語言。Java 平臺的用途是支援用 Java 語言編寫並被編譯為 Java 位元組碼的應用程式。儘管進行了許多試圖將其他語言編譯為 Java 位元組碼的工作,但是這些工作大部分都是學術活動。Java 的理想目標一直是“在多種平臺上使用一種語言”。
.NET 也是兩樣東西:.NET Framework(執行時和 API)和大量支援它的程式語言。.NET Framework 的用途是支援用任一種語言編寫並被編譯為 MSIL 的應用程式。.NET 的目標是“多種語言共享一種平臺”。
第一部分 安全配置和程式碼封裝
安全配置
兩個平臺的配置都是通過XML或純文字檔案,兩個平臺最大的區別在於處理安全配置體系的方式不同。
在.NET平臺,有圖形介面和命令列二種方式來修改安全配置引數。Mscorcfg.msc是圖形介面方式,Caspol.exe提供了命令列方式,適用於批處理或配置文字。
JAVA平臺只提供了圖形介面的工具policytool.exe。和.NET不同的是,它的目標物件(配置檔案)的名字和位置不是固定的。
.NET定義了不同範圍的安全配置檔案:系統範圍,本機範圍,本使用者範圍。在配置有衝突時,原則上小範圍的引數有優先權。
JAVA和J2EE的核心配置檔案都儲存在固定位置,但擴充套件配置檔案隨廠家不同而不同。
程式碼封裝:檢驗
JAVA 和.NET 的Common Library Runtime (CLR) 都實行記憶體安全或型別安全的保護機制,在這些平臺開發的應用的安全性也是可以檢驗的。他們的實現機制有很大的不同。
在.NET, CLR總是執行編譯好的程式碼,它不解釋程式碼。但是在中間語言(IL)被編譯之前,編譯器會有驗證和檢驗的步驟。第一步是檢查檔案的結構和程式碼完整性;第二步包括一些擴充套件的檢查,記憶體安全、堆疊跟蹤、資料流分析、型別檢查等。在執行階段,由VES (Virtual Execution System) 來負責安全性檢查和出錯意外情況處理。
在JAVA平臺,JAVA虛擬機器(JVM)負責類的載入、連結、檢驗和執行。對於已經編譯和優化的程式碼,JVM也用二個無條件呼叫堆疊來保留最初的位元組程式碼資訊。
小結:和.NET不同,JVM的預設設定是不檢驗原生代碼。另外,JVM保留最初的位元組程式碼供執行時檢查,而.NET把靜態分析和執行時插入檢驗程式碼相結合。
程式碼封裝:應用隔離
在.NET, 域隔離建立在記憶體安全機制的基礎上,不同的域不能直接訪問彼此的地址空間,只能通過.NET遠端通訊機制訪問。
在JAVA平臺,應用隔離是通過ClassLoaders 和 ProtectionDomains 相結合來實現的,安全類載入是JVM安全機制的基石。
小結:.NET的 AppDomains 就象作業系統的程序一樣,使用起來比JAVA的 ProtectionDomains 更直接、容易一些。
程式碼封裝: 語言特徵
兩個平臺基本上差不多,.NET在靈活性上稍微好一點。
總結:
JAVA在安全配置上有較多的優勢,.NET在程式碼封裝的選擇性和易用性好一些。
第二部分 加密和通訊
加密法:概論
.NET的加密法主要基於CryptoAPI 和相關擴充套件。大多數有關加密的類都在System.security.Cryptography, X509Centificates 和XML中。.NET利用基於流的模型來完成加密傳輸,所有的演算法都被預設為最高的安全級別。.NET也允許使用者自己在 machine.config 中定義自己的演算法。
JAVA平臺的加密演算法分二個部分:Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE)。 JCE的出口受到有關法律的限制。如果要使用使用者自己的加密演算法,必須得到認證機構(SUN 或 IBM)的認證。
加密法:演算法
.NET主要提供了下面幾大類加密演算法:非對稱演算法、HASH演算法、對稱演算法、隨機數生成法。
JAVA提供的加密演算法更多,但是較少第三方廠商可以在JAVA中提供自己的演算法。
安全通訊
SSL已經是事實的傳輸安全的工業標準了。JAVA和.NET都支援最新版本 SSL 3.0。
安全通訊:平臺
.NET只在基於IIS的應用中使用SSL來保護HTTP傳輸,對於非IIS應用,.NET不能保護傳輸中的資料。
在JAVA中,JSSE (Java Secure Socket Extensions) 提供了平臺級的服務,保證基於TCP/IP的通訊安全。
除了IIS,.NET沒有提供任何其它平臺級的通訊保護的標準方案,但是JAVA在這方面提供了全套的解決方案。
安全通訊:應用
.NET通過WSA (Web Service Architecture)和 WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,JAVA目前還沒有提供這方面的支援。
總結: 在加密方法上,JAVA和.NET基本沒有太大的差別;在通訊保護方面,JAVA 比.NET提供了更多的選擇方案;但是在WEB服務安全性上,JAVA明顯比.NET落後一些。
JAVA 與.NET
JAVA語言發明已有10年曆史,在IBM、SUN等公司的推動下已經比較穩定與成熟,獲得了大規模企業的普遍應用。時至今日,J2EE已經發展成為一個覆蓋面廣,效率高,易用性強的技術平臺,吸引了400萬開發者,在網路技術遍及全球的的今天,更有17.5億臺裝置使用JAVA技術.同時, Mustang版本的J2EE正在緊鑼密鼓的開發當中,按照慣例,每2年將釋出一個全新的J2SE版本,所以Mustang開發版對應的J2SE6.0版本將在2006年底完成.對於開發人員來說.從技術難度角度, 由JAVA開發轉.NET或其它軟體的開發較為容易.
.NET則是微軟公司目前主推的開發平臺,是微軟未來作業系統以及長遠戰略的基礎。對於軟體開發人員來講,.NET的技術相對簡單,入門較快。由於.NET擁有易學易用、開發迅速的特性,隨著它的成熟和完善,使其受到越來越多企業的青睞。 北美一些大型企業(如加拿大Royal Bank, Scotia Bank)紛紛將應用平臺遷移到.NET,從而走出了Microsoft之平臺與技術只適合於中小企業的陰影。 近一年來,.NET在國內也取得了驚人的發展 - 眾多企業紛紛採用.NET作為企業應用開發技術與平臺,使用.NET專案之企業數量快速增長,甚至與JAVA一樣被銀行業、電信業所採用。
專家預測,在這種情況下, .NET的強勁發展還未到來,現今仍然處於發展初期。作為發展初期的.NET開發人員,不僅要求具備良好的.Net基礎知識,更要求掌握全面的、高深的.NET專用技術,以適應企業級應用開發。欲在激烈的就業競爭或者在公司眾多的Developer 中脫穎而出,除了具備基本技能外,“人無我有,人有我精”無疑是必經的過程。 .NET的興起與發展為我們提供了嶄新的契機。
JAVA與.NET就業需求
資訊產業已經成為中國發展速度最快的產業,以每年30%左右的速度增長,IT行業形成了大量的就業機會。近幾年,Java/J2EE的就業市場一直都是IT業中需求最熱、職位最多,而且整體薪資水準較高。
那麼值得關注的是,2005年.Net的就業需求突然之間異軍突起,年薪可觀等突出優勢,不啻為走上軟體開發之路的關鍵選擇!
很多正在尋找發展方向的朋友非常關心的是,自己是否適合學習並從事Java/.Net開發工作,也有更多的已有一定基礎的朋友關心的是,怎樣在競爭中取勝,怎樣進一步提高,怎樣快速找到軟體開發工作。我們可以簡單的以一個IT培訓機構的就業情況簡要分析。
加拿大達內外企IT培訓是業界公認的“高階外企IT培訓中心”,以學員的高薪、高比率就業贏得了優秀的信譽與品質。以其學員就業情況為例, JAVA方面各企業用人需求長年不斷,9月間即36家企業發出用人申請,如果工程師在掌握JAVA語言的基礎上,同時掌握C++語言,那麼就業選擇渠道將更為廣泛。普通JAVA工程師平均月薪RMB 4000-6000左右。中心已經畢業的學員已經廣泛就業於IBM、華為、摩托羅拉、用友、新浪、搜狐、亞信等一流IT企業。
各企業對.NET畢業學員的需求在6-8月份激增,已累計24家公司需要大量的軟體工程師,達內的學員供不應求。並且相關公司多為國內知名外企和新興外企,薪水也在RMB4000以上。.NET繼續風頭正勁,達內今年3期.NET就業班學員全部成功就業,令人深感欣慰和喜悅。
不論對現在正在從事軟體開發的人員,還是對希望進入這一領域的朋友,JAVA和.NET 都給我們帶來了新的機會!好的就業機遇一向都是可遇而不可求的,目前, JAVA和..NET工作機會巨大,諸多行業都在使用,搶佔先機,才能始終從容!不論我們做何種選擇,都將給我們帶來一個美好的職業前途