javac編譯包含哪幾個過程
java編譯過程主要分幾個步驟:
1、詞法分析: 把原始碼中的字元(各個關鍵字、變數等)轉為標記(Token)集合,單一字元的程式所寫的最小單元,而token是編譯過程的最小單元。
2、語法分析: 將標記(Token)集合建構為抽象語法樹。語法樹的每一個節點都代表程式碼中的一個語法結構(如套件、類型、介面、修飾符等等)。
3、填滿符號表:符號表是有一組符號位址和符號資訊構成的表格。填充符號表的過程的出口是一個待處理列表,包含了每一個抽象語法樹(和package-info.java)的頂級節點。
4、插入式註解處理器處理註解: 註解處理器可以增刪改抽象語法樹的任意元素。因此每當註解處理器對語法樹進行修改時,都會重新執行1,2,3步,直到註解處理器不再對語法樹進行修改為止。每一次的循環過程都稱為一次Round。
5、語意分析:對語法樹結構上正確的原始程式進行上下文有關的審查。
標註檢查:包含是否變數宣告、變數和賦值型別是否符合等、常數摺疊。
資料和控制流程分析:對程式上下文邏輯更進一步驗證。包括變數使用前是否賦值、方法是否有回傳值、異常是否被正確處理等。
6、解語法糖: 把進階語法(如:泛型、可變參數、拆箱裝箱等)轉換成基礎語法結構,虛擬機器運作時不支援這些高級語法。
7、產生字節碼:把語法樹、符號表裡的資訊轉為字節碼寫到磁碟,同時進行少量的程式碼新增和轉換工作。
以上內容大部分摘自:《深入理解java虛擬機》 -- 週志明
推薦教學: 《java教學》
以上是javac編譯包含哪幾個過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!