首頁 >Java >Java基礎 >javac編譯包含哪幾個過程

javac編譯包含哪幾個過程

hzc
hzc原創
2020-06-18 13:38:317406瀏覽

javac編譯包含哪幾個過程

javac編譯包含哪幾個過程

java編譯過程主要分幾個步驟:

1、詞法分析: 把原始碼中的字元(各個關鍵字、變數等)轉為標記(Token)集合,單一字元的程式所寫的最小單元,而token是編譯過程的最小單元。

2、語法分析: 將標記(Token)集合建構為抽象語法樹。語法樹的每一個節點都代表程式碼中的一個語法結構(如套件、類型、介面、修飾符等等)。

3、填滿符號表:符號表是有一組符號位址和符號資訊構成的表格。填充符號表的過程的出口是一個待處理列表,包含了每一個抽象語法樹(和package-info.java)的頂級節點。

4、插入式註解處理器處理註解: 註解處理器可以增刪改抽象語法樹的任意元素。因此每當註解處理器對語法樹進行修改時,都會重新執行1,2,3步,直到註解處理器不再對語法樹進行修改為止。每一次的循環過程都稱為一次Round。

5、語意分析:對語法樹結構上正確的原始程式進行上下文有關的審查。

  • 標註檢查:包含是否變數宣告、變數和賦值型別是否符合等、常數摺疊。

  • 資料和控制流程分析:對程式上下文邏輯更進一步驗證。包括變數使用前是否賦值、方法是否有回傳值、異常是否被正確處理等。

6、解語法糖: 把進階語法(如:泛型、可變參數、拆箱裝箱等)轉換成基礎語法結構,虛擬機器運作時不支援這些高級語法。

7、產生字節碼:把語法樹、符號表裡的資訊轉為字節碼寫到磁碟,同時進行少量的程式碼新增和轉換工作。

以上內容大部分摘自:《深入理解java虛擬機》 -- 週志明

推薦教學: 《java教學

以上是javac編譯包含哪幾個過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn