天天看點

NET與JAVA的差別【完整版】歡迎使用Markdown編輯器

  .NET與Java的這種相似為網站管理系統的開發提供了便利,如果您掌握了C#,那麼,掌握Java這個語言幾乎是不費什麼力氣的,需要花費時間的隻不過就是熟悉彼此的類庫。.NET是.NET Framework,Java是J2SE。學習這兩者的理論基礎都是面向對象理論。是以,一名有着面向對象理論基礎的人是很容易掌握.NET和Java的。

  簡介

  .NET是微軟推出的一種新的軟體運作平台,它包括一整套應用範圍廣泛的技術,旨在迎接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的偏愛

  .NET與Java的這種相似為網站管理系統的開發提供了便利,如果您掌握了C#,那麼,掌握Java這個語言幾乎是不費什麼力氣的,需要花費時間的隻不過就是熟悉彼此的類庫。.NET是.NET Framework,Java是J2SE。學習這兩者的理論基礎都是面向對象理論。是以,一名有着面向對象理論基礎的人是很容易掌握.NET和Java的。

  簡介

  .NET是微軟推出的一種新的軟體運作平台,它包括一整套應用範圍廣泛的技術,旨在迎接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的偏愛

C](這裡寫自定義目錄标題)

歡迎使用Markdown編輯器

你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,了解一下Markdown的基本文法知識。

新的改變

我們對Markdown編輯器進行了一些功能拓展與文法支援,除了标準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫部落格:

  1. 全新的界面設計 ,将會帶來全新的寫作體驗;
  2. 在創作中心設定你喜愛的代碼高亮樣式,Markdown 将代碼片顯示選擇的高亮樣式 進行展示;
  3. 增加了 圖檔拖拽 功能,你可以将本地的圖檔直接拖拽到編輯區域直接展示;
  4. 全新的 KaTeX數學公式 文法;
  5. 增加了支援甘特圖的mermaid文法1 功能;
  6. 增加了 多螢幕編輯 Markdown文章功能;
  7. 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設定 等功能,功能按鈕位于編輯區域與預覽區域中間;
  8. 增加了 檢查清單 功能。

功能快捷鍵

撤銷:Ctrl/Command + Z

重做:Ctrl/Command + Y

加粗:Ctrl/Command + B

斜體:Ctrl/Command + I

标題:Ctrl/Command + Shift + H

無序清單:Ctrl/Command + Shift + U

有序清單:Ctrl/Command + Shift + O

檢查清單:Ctrl/Command + Shift + C

插入代碼:Ctrl/Command + Shift + K

插傳入連結接:Ctrl/Command + Shift + L

插入圖檔:Ctrl/Command + Shift + G

合理的建立标題,有助于目錄的生成

直接輸入1次#,并按下space後,将生成1級标題。

輸入2次#,并按下space後,将生成2級标題。

以此類推,我們支援6級标題。有助于使用

TOC

文法後生成一個完美的目錄。

如何改變文本的樣式

強調文本 強調文本

加粗文本 加粗文本

标記文本

删除文本

引用文本

H2O is是液體。

210 運算結果是 1024.

插傳入連結接與圖檔

連結: link.

圖檔:

NET與JAVA的差別【完整版】歡迎使用Markdown編輯器

帶尺寸的圖檔:

NET與JAVA的差別【完整版】歡迎使用Markdown編輯器

當然,我們為了讓使用者更加便捷,我們增加了圖檔拖拽功能。

如何插入一段漂亮的代碼片

去部落格設定頁面,選擇一款你喜歡的代碼片高亮樣式,下面展示同樣高亮的

代碼片

.

// An highlighted block
var foo = 'bar';
           

生成一個适合你的清單

  • 項目
    • 項目
      • 項目
  1. 項目1
  2. 項目2
  3. 項目3
  • 計劃任務
  • 完成任務

建立一個表格

一個簡單的表格是這麼建立的:

項目 Value
電腦 $1600
手機 $12
導管 $1

設定内容居中、居左、居右

使用

:---------:

居中

使用

:----------

居左

使用

----------:

居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标點字元轉換為“智能”印刷标點HTML實體。例如:

TYPE ASCII HTML
Single backticks

'Isn't this fun?'

‘Isn’t this fun?’
Quotes

"Isn't this fun?"

“Isn’t this fun?”
Dashes

-- is en-dash, --- is em-dash

– is en-dash, — is em-dash

建立一個自定義清單

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何建立一個注腳

一個具有注腳的文本。2

注釋也是必不可少的

Markdown将文本轉換為 HTML。

KaTeX數學公式

您可以使用渲染LaTeX數學表達式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通過歐拉積分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多關于的資訊 LaTeX 數學表達式here.

新的甘特圖功能,豐富你的文章

  • 關于 甘特圖 文法,參考 這兒,

UML 圖表

可以使用UML圖表進行渲染。 Mermaid. 例如下面産生的一個序列圖::

這将産生一個流程圖。:

  • 關于 Mermaid 文法,參考 這兒,

FLowchart流程圖

我們依舊會支援flowchart的流程圖:

  • 關于 Flowchart流程圖 文法,參考 這兒.

導出與導入

導出

如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章導出 ,生成一個.md檔案或者.html檔案進行本地儲存。

導入

如果你想加載一篇你寫過的.md檔案或者.html檔案,在上方工具欄可以選擇導入功能進行對應擴充名的檔案導入,

繼續你的創作。

  1. mermaid文法說明 ↩︎
  2. 注腳的解釋 ↩︎