java原始碼編譯機制

來源:互聯網
上載者:User

JVM規範中定義了class檔案的格式 但是沒有定義原始碼如何編譯為class檔案,所以各大廠商在實現jdk時符合規範將其編譯為class檔案,下面以SUN JDK來做分析。

基本流程如下:

{java源檔案}------->{分析和注入到符號表(Parse and Enter)}------>{注釋處理(Annotation Processing)}--------->{語義分析和產生class檔案(Analyse and Generate)}-->{0101}

下面對各個流程進行說明:

1、分析和注入到符號表

分析過程主要做的是,詞法和文法分析。

注入過程主要是將符號表輸入到符號表。,通常包括類得超類和介面、根據需要添加預設的構造器,將類中出現的符號輸入到自己的符號表中等。

2、注視處理

主要處理使用者自己的注釋annotation,可能帶來的好處就是基於annotation來產生附加的代碼或進行一些特殊的處理,從而省去一些代碼的編寫,例如get和set方法的編寫,通過注釋 ,編譯之後會自動產生。

3語義分析和產生class檔案

主要是對名字和運算式等元素與變數、方法、類型等聯絡到一起,檢查變數使用前是否已聲明、檢查泛型、類型匹配,檢查所有的語句都可到達等,以及需要checked異常都捕捉到或者被拋出,檢查有傳回值得方法確定有傳回值,檢查變數不重複賦值,取出無用的代碼 如:if(false){//....},還有就是泛型轉換為普通的java類型,還有自動拆箱和裝箱轉換等。最後開始產生class檔案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.