.Net框架 = Java虛擬機器?
.Net框架 比 Java虛擬機器 先進多了。
1. .Net吸納了Java的優點,Program once, runanywhere,有關跨平臺方面,有一個叫Mono的專案組進行,而且已經開發了十年。如果不出意外,將來真的是runanywhere。
2..Net在機器上生成機器碼,並非Java的解釋執行。這種框架上的優勢,決定了.Net並不僅僅是效能介於c/c++和Java之間,而是接近C/C++,遠高效於Java。
當你編譯一個C#應用程式或任何一種CLS(Commmon
Language Specification)相容的語言時,它將首先被編譯成一種稱為IL
(Intermediate Language)的虛擬碼(pseudo-code)。在這個應用程式第一次
被執行的時候,這種IL程式碼將被編譯成機器程式碼,用於執行。也就是說從原始碼
到得到執行結果,進行了兩次編譯。事實上,只有那些被真正使用的函式程式碼
才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節:
Language Specification)相容的語言時,它將首先被編譯成一種稱為IL
(Intermediate Language)的虛擬碼(pseudo-code)。在這個應用程式第一次
被執行的時候,這種IL程式碼將被編譯成機器程式碼,用於執行。也就是說從原始碼
到得到執行結果,進行了兩次編譯。事實上,只有那些被真正使用的函式程式碼
才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節:
1) 你用C#開發一些程式
2) 用C#編譯器或CLS相容的編譯器編譯成EXE
3) 編譯器將生成的IL程式碼和附加資訊(manifest)放入擁有一個標準PE頭的Win32
可執行檔案的只讀部分。
4) 編譯器在建立這個可執行檔案時匯入(import)一個名為_CorExeMain的函式。
這個函式是.NET EE(execution engine)--.NET執行期引擎的入口函式。
5) 當執行這個Win32可執行檔案時,因為其主要是依賴於DLL的PE檔案,操作系
統將會呼叫位於MSCorEE.DLL中的_CorExeMain函式。
6) 作業系統通過PE檔案裡的進入點,呼叫MSCorEE.DLL。並能保證在Windows裡
可以有很多程式同時執行。
7) 因為作業系統不能執行.NET IL程式碼,EXE裡的進入點只是簡單的中介,它將
指示作業系統呼叫_CorExeMain函式。
8) 隨後_CorExeMain函式開始解釋位於PE檔案中的IL程式碼。
9) 因為IL是不能被直接執行的, .NET EE使用稱為JITter (Just In Time compiler)
的即時編譯器將IL程式碼編譯成本地CPU機器程式碼用於執行。這一即時編譯過程
只在第一次執行的時候進行。
2) 用C#編譯器或CLS相容的編譯器編譯成EXE
3) 編譯器將生成的IL程式碼和附加資訊(manifest)放入擁有一個標準PE頭的Win32
可執行檔案的只讀部分。
4) 編譯器在建立這個可執行檔案時匯入(import)一個名為_CorExeMain的函式。
這個函式是.NET EE(execution engine)--.NET執行期引擎的入口函式。
5) 當執行這個Win32可執行檔案時,因為其主要是依賴於DLL的PE檔案,操作系
統將會呼叫位於MSCorEE.DLL中的_CorExeMain函式。
6) 作業系統通過PE檔案裡的進入點,呼叫MSCorEE.DLL。並能保證在Windows裡
可以有很多程式同時執行。
7) 因為作業系統不能執行.NET IL程式碼,EXE裡的進入點只是簡單的中介,它將
指示作業系統呼叫_CorExeMain函式。
8) 隨後_CorExeMain函式開始解釋位於PE檔案中的IL程式碼。
9) 因為IL是不能被直接執行的, .NET EE使用稱為JITter (Just In Time compiler)
的即時編譯器將IL程式碼編譯成本地CPU機器程式碼用於執行。這一即時編譯過程
只在第一次執行的時候進行。
相關文章
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- Java虛擬機器(JVM)Java虛擬機JVM
- java~graalVM虛擬機器JavaLVM虛擬機
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器16:MetaspaceJava虛擬機
- 備戰- Java虛擬機器Java虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- java虛擬機器指令常量部分Java虛擬機
- 深入理解java虛擬機器Java虛擬機
- Java 虛擬機器診斷利器Java虛擬機
- Java虛擬機器是什麼?Java虛擬機
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- Java虛擬機器04——垃圾收集器Java虛擬機
- java虛擬機器類載入機制Java虛擬機
- Java 虛擬機器類載入機制Java虛擬機
- 深入理解Java虛擬機器(一)Java虛擬機
- Java 虛擬機器經典六問Java虛擬機
- 06.Java虛擬機器問題Java虛擬機
- 深入理解Java虛擬機器(二)Java虛擬機
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- Java 虛擬機器之六:javap工具Java虛擬機
- JAVA虛擬機器學習筆記Java虛擬機機器學習筆記
- Java 虛擬機器之四:Java類載入機制Java虛擬機
- 深入理解Java虛擬機器 --- 垃圾回收器Java虛擬機
- Java虛擬機器(六):類載入機制Java虛擬機
- Java 虛擬機器垃圾收集機制詳解Java虛擬機
- 虛擬機器(三)虛擬機器配置靜態Ip虛擬機
- Java虛擬機器——類檔案結構Java虛擬機
- Java虛擬機器詳解(三)------垃圾回收Java虛擬機
- Java虛擬機器詳解(一)------簡介Java虛擬機
- Java虛擬機器啟動過程解析Java虛擬機
- 【深入理解Java虛擬機器】垃圾回收Java虛擬機
- PD虛擬機器 18 for Mac(Mac虛擬機器軟體)虛擬機Mac
- Java跨平臺原理與Java虛擬機器(JVM)Java虛擬機JVM
- (深入理解 Java虛擬機器)一篇文章帶你深入瞭解Java 虛擬機器類載入器Java虛擬機