1. 程式人生 > >程序編譯與代碼優化 -- 早期(編譯期)優化

程序編譯與代碼優化 -- 早期(編譯期)優化

加密 使用 早期 time java語法 支持 註意 本地 IT

1. 概述

Java編譯器可能是指一個前端編譯器(其實叫“編譯器的前端”更準備一些),把*.java文件轉變成*.class文件的過程;也可能是指虛擬機的後端運行期編譯器(JIT編譯器,Just In Time Compiler)把字節碼轉變成機器碼的過程;還可能是指使用靜態提前編譯器(AOT編譯器,Ahead Of Time Compiler)直接把*.java文件編譯成本地機器代碼的過程。例如:

  • 前端編譯器:Sun的javac,Eclipse JDT中的增量式編譯器(ECJ);
  • JIT編譯器:HotSpot VM的C1、C2編譯器;
  • AOT編譯器:GUN Complier for the Java(GCJ),Excelsior JET;

本章我們主要針對javac編譯器。

需要註意的是javac這類編譯器對代碼的運行效率幾乎沒有任何優化措施。虛擬機設計團隊把對性能的優化集中到了後端的即時編譯器中,這樣可以讓那些不是由javac產生的Class文件也同樣能享受到編譯器優化所帶來的好處。

但是javac做了許多針對java語言編碼過程的優化措施來改善程序員的編碼風格和提高編碼效率。相當多新生的Java語法特性,都是靠編譯器的“語法糖”來實現,而不是依賴虛擬機的底層改進來支持,可以說,Java中即時編譯器在運行期的優化過程對於程序運行來說更重要,而前端編譯器在編譯期的優化過程對於程序編碼來說關系更加密切。

2. Javac編譯器

javac編譯器本身就是一個由Java語言編寫的程序。

程序編譯與代碼優化 -- 早期(編譯期)優化