簡介
在Java編程語言和環境中,即時編譯器(JITcompiler,just-in-timecompiler)是一個把Java的字節碼(包括需要被解釋的指令的程序)轉換成可以直接發送給處理器的指令的程序。當寫好一個Java程序後,源語言的語句将由Java編譯器編譯成字節碼,而不是編譯成與某個特定的處理器硬件平台對應的指令代碼(比如,Intel的Pentium微處理器或IBM的System/390處理器)。字節碼是可以發送給任何平台并且能在那個平台上運行的獨立于平台的代碼。
分類
事實上,JIT編譯器分成兩種:經濟編譯器和普通編譯器。
經濟JIT編譯器
經濟JIT編譯器代表了運行一個NET應用程序所需要的最少功能,它直接用對等的本機代碼取代每一條MSIL指令,不進行任何優化從而也帶來更少的系統負載。這也意味着它主要應用在内存等資源比較緊張的平台上。
普通JIT編譯器
普通JIT編譯器則是缺省的運行時配置,會對其産生的代碼進行即時優化。這樣做無形中給予了。NET超出傳統預編譯語言的一個優點:預編譯語言隻能對其處理的代碼将要運行于其上的平台做一番大緻的事前估計。
JIT編譯器可以經過準确調節達到當前運行時狀态,結果可以完成一些預編譯語言無法完成的工作:更高效地利用和分配CPU寄存器。在适當的情況下實施低級代碼優化,比如常量重疊、拷貝複制、取消範圍檢查、取消常規副表達式以及方法内聯等。