在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
何克勤 閱讀(555)
評論(0) 編輯 收藏 所屬分類:
J2SE