一個java檔案經過什麼流程轉換成.class檔案--javac(獻給初學者)
阿新 • • 發佈:2019-02-20
簡單概述:我們通常code,檔案的結尾都是.java檔案,通過IDE等工具就可以看到效果,但是具體是怎麼搞成的呢?好吧 我們不是討論IDE,是javac! 我們都知道 jar裡面的東西都是我們寫的java檔案編譯後產物,編譯?對,就是編譯,那什麼才能編譯呢?那就是javac,它的另外一個名稱就是:編譯器
什麼是javac? javac是一種編譯器,能將一種語言規範轉換成另外一種語言規範。換句話就說把我們比較瞭解和懂得如何編寫的一種語言轉換成計算機能夠識別的語言,這句話我想應該沒有什麼異議吧,我們的程式碼最終都是要在計算機上執行的,也就是計算機能夠識別的指令,但是我們編寫肯定不會手動把一些二進位制按照計算機的規範組合成這些指令,這就需要這個很牛的東西,編譯器!
內部步驟:首先讀取原始碼,一個一個位元組的讀取進來,找出來我們Java定義的關鍵字,比如if ,else,for,while,finally,等這個步驟就是叫做詞法分析過程
第二步:檢查第一步讀取出來的關鍵字是否符合Java語言規範,比如if後面跟的是不是一個Boolean型別的表示式,這個過程就叫做語法分析
第三步:經過以上2個步驟詞法分析,語法分析,基本上已經按照Java規範了,接下來就是這些拼裝的程式碼要表達什麼意思,也就是語義分析
以上幾步算是準備工作吧,經過以上3步沒有問題的程式碼,要進行最後一相,程式碼生成器,把這個符合Java語言規範的原始碼轉換成符合Java虛擬機器規範的位元組碼了
簡單的分析,下篇講解經過javac編譯後的位元組碼給了jvm,jvm又做了什麼事情?