posts - 134,comments - 22,trackbacks - 0
          在Java和MS.net Framework中,Just-In-Time編譯器所扮演的角色是一個中介者,負責代碼翻譯和安全檢查的任務。

          在Java或C#等高級語言中,程序員編寫的源代碼首先被編譯種某種格式的中間語言IL(Intermediate Language),IL是一種類似匯編語言,與匯編不同的是,IL運行的是在一個虛擬的機器環境中,或叫做虛擬機,匯編語言運行在一個特定的機器平臺中。虛擬機的好處為中間語言提供了一個與平臺無關的環境,比如java虛擬機,和CLR(Common Language Runtime),它能夠根據所在的平臺架構將中間語言翻譯中這個平臺上的機器語言,從而完成程序的執行過程。擔任翻譯任務的就是虛擬機中配備的JIT(Just In Time)編譯器。與傳統編譯器不同的是,JIT編譯器是邊執行邊解釋,只有需要執行的代碼才被翻譯成機器語言,那些不會執行到代碼被忽略掉的。

          JIT編譯器擔任的第二項任務是檢查代碼的安全性。它必須保證編譯出來的機器代碼是安全,即程序不會非法訪問不屬于本身的內存空間或者沒有權限訪問的空間,這樣可以防止惡意的程序修改敏感數據區域。

          此外,JIT編譯器提供了對代碼優化的可選功能。

          下圖是Java應用程序的一個程序過程,JIT編譯器是JVM的一個組成部分。

          參考資料:
          [1] Microsoft MSDN, Compiling MSIL to Native code.
          [2] Simon Robinson, etc. Professional C# (2nd Edition). Wrox Press Inc, March 2002
          [3] http://www.research.ibm.com/trl/projects/jit/index_e.htm
          posted on 2010-04-24 12:59 何克勤 閱讀(556) 評論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 贵州省| 尼木县| 兰坪| 临清市| 汉寿县| 浦江县| 喜德县| 法库县| 屏山县| 岫岩| 肃南| 泾源县| 迁安市| 沭阳县| 金湖县| 呼伦贝尔市| 涞源县| 鄂温| 台山市| 射洪县| 兴化市| 白水县| 武定县| 句容市| 迁安市| 南充市| 长治市| 洪洞县| 德昌县| 西乌珠穆沁旗| 阳原县| 来宾市| 西青区| 修文县| 静宁县| 山阴县| 双鸭山市| 安塞县| 布尔津县| 镇沅| 藁城市|