日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java编译器:Javac

發布時間:2024/8/1 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java编译器:Javac 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Javac 編譯器的任務就是講java語言規范轉化成Java虛擬機語言規范,完成 “翻譯工作”

什么是Javac

Javac 是一種編譯器,能將一種語言規范轉化成另外一種語言規范。通常編譯器都是將便于人理解的語言規范轉化成機器容易理解的語言規范。如c,c++或者匯編語言都是講遠嗎直接編譯成目標機器碼,這個目標機器碼是CPU直接執行的指令集合。這些指令集合也就是底曾的一種語言規范,機器能夠直接識別這種識別這種語言規范,但是人不可能直接去寫目標機器碼。雖然這種機器碼執行起來非常搞笑,但是對人太不友好了, 開發這個代碼的成本往往遠高于剩下的機器的執行成本。

從某種意義上來說,有了編譯器才有了程序語言的繁榮,因為片一起是人類和機器溝通的一個紐帶。那么回過頭來,javac的編譯器也是將Java這種對人非常友好的編程語言編譯成對所有機器都非常友好的語言。注意,這種語言不是針對某個機器的,甚至包括不同種類,不同平臺的機器。如何系哦啊出不同種類,不同機器之間的差別,這個任務就由JVM來完成,而Javac的任務就是將Java源代碼語言先轉化成JVM能夠識別的一種語言,然后由JVM將JVM語言再轉化成當前這個機器能夠識別的機器語言。所以這樣看來,Java語言向開發者屏蔽了很多與木鱉機器相關的細節,使得Java語言的執行和平臺無關,這也就成就了java語言的繁榮。

如下圖所示,javac的任務就是將java源碼編譯成Java字節碼,也就是JVM能夠識別的二進制碼。從表面上看就是.java文件轉成.class文件,而實際上是將Java的源代碼轉化成了一連串二進制數字,這些二進制數字是有格式的,只有JVM能夠正確識別它們到底表達了什么意思。

Javac編譯器的基本結構

回憶一下,如何才能編譯程序呢?
1.詞法分析。在讀取源碼時候,一個字節為一節讀進來,找出這些字節中有哪些是我們規定的語法關鍵詞,如if else for while 等,要識別哪些if是合法的關鍵詞,哪些不是,這個步驟就是詞法分析過程。
2.語法分析。檢查這些關鍵詞組合在一起是不是符合java語言規范,如在if的后面是不是緊跟著一個布爾判斷表達式。與英語中,句子要有主謂賓一樣,都有才算語法正確。
3.語義分析。如果通過語法分析,但是語義是否正確呢?語義分析的主要工作是把一些難懂的,復雜的語法轉化為更加簡潔的語法,江浙步驟對應到我們人類的語言中,就是講難難懂的文言文轉化為大家都能懂得白話文,或者注解一下一些成語,便于人們更好滴理解。
語義分析的結果就是講復雜的語法轉化成最賤的語法,對應到java中,如將foreach轉成for虛幻結構,還有注解等,最后形成一個注解過后的抽象語法樹,這棵語法樹更接近目標語言的語法規則。
4.最后,通過字節碼生成器生產字節碼,根據經過注解的抽象語法樹生產字節碼,也就是講一個數據結構轉化為另一個數據結構,就像將所有中文詞語翻譯成英文單詞后,按照英文語法組裝成英文句子。

Javac 的各個模塊完成了將Java源代碼轉化成Java字節碼的任務,所以javac主要就有4個模塊
分別是詞法分析器、語法分析器、語義分析器和代碼生成器。

總結

以上是生活随笔為你收集整理的Java编译器:Javac的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。