javac都幹了些什麼

最近在回憶自己Java的入門之路,總結點經驗,寫幾篇文章給未來的師弟師妹參考參考,能少走點彎路我就心滿意足了。

國際慣例我的第一個XXX程序——HelloWorld。

假設新手是不使用IDE的哈,當然也不推薦使用,那麼爲了實現這個HelloWorld程序我們會這個做:

①安裝JDK

②配置環境變量

③在文本編輯器裏寫出如下代碼並命名爲HelloWorld.java


④到控制檯執行下面的指令


執行完後會發現生成了一個java.class文件


⑤執行下面的指令


我們得到了Hello World!

搞定!

那麼問題來了,javac和java指令都幹了啥?這裏先看javac

上面的內容在草稿箱待了有段時間了,因爲我我不知道啊,本着查點資料先自學一下然後做個總結,然後差點就忘了,草稿箱裏東西有點亂。這兩天看書,真的是好巧兩本書裏都提到了編譯器,看來完成這篇文章勢在必行啊!兩本書分別是《碼農翻身》《深入分析Java Web技術內幕》。

先看一下什麼是編譯器。

計算機能夠執行的是0110000111這樣的指令,稱爲機器語言

但這樣的語言不方便記憶,人們便給每個指令起了個名字,變成了彙編語言,負責把彙編語言翻譯爲機器語言的稱爲彙編器

但彙編還是太低級了,太貼近機器,難以結構化編程,爲此人們發明了高級語言,比如C語言,但高級語言和低級語言之間差異巨大,怎麼把高級語言翻譯成機器語言是個非常難的問題,爲解決這個問題產生了編譯器

編譯會有一系列的過程。


而javac就是java語言的編譯器,不同於C語言編譯器的是,javac並不是把java語言規範翻譯成CPU能夠執行的指令集合,而是將java源代碼語言轉換成JVM能夠識別的一種語言,然後由JVM將JVM語言再轉化成當前這個機器能夠識別的機器語言。

上面的javac就將HelloWorld.java文件翻譯成了HelloWorld.class文件,.class文件是Java字節碼文件,也就是JVM能夠識別的二進制碼,我們可以打開這個文件看一下。


javac裏面也包含詞法分析、語法分析、語義分析和代碼生成幾個步驟。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章