首頁  >  文章  >  Java  >  關於Java中class文件格式的總結

關於Java中class文件格式的總結

怪我咯
怪我咯原創
2017-07-02 10:28:111410瀏覽

這篇文章主要介紹了Java class文件格式總結的相關資料,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧

#我們都知道JVM能夠辨識的只有class格式的文件, 而來源文件只是我們人能辨識的, 不能被JVM辨識。 那我們要在更深的層次上理解Java語言, 理解JVM, 只懂源文件是不夠的, 因為虛擬機的很多的行為, 是在class文件中定義的, 而我們要理解JVM的行為,必須也學會JVM能理解的“語言”, 那就是class檔案格式。 就像我們想要深入的了解一個外國人, 只站在自己的角度上是不可能了解他的, 只有你學會了他的語言, 才能對他更了解, 因為只有你理解了他說的話, 才能知道他所做的事, 進而了解他的行事方式和性格特質。 當然, 也有另一種方式可以讓你了解外國人, 那就是讓他學會中國話, 你們用中文交流。 但是在Java的世界裡, 這是不可能的, 因為你不可能讓JVM識別原始文件, 所以, 只能你去學習JVM能理解的語言 ---- class文件。

了解class檔案的格式, 不僅對理解JVM的行為有指導性的意義, 它還能讓我們對Java程式碼有更清晰深刻的認識,class檔案是由我們寫的java程式碼「翻譯」過來的。 明白了class檔案的格式, 你就能知道方法是如何表示的, 欄位是如何表示的, 繼承#是如何表示的 , 方法體是如何表示的, 等等。 所有來源檔案中的東西, 都會在class檔案中有對應的描述形式。 這樣會讓我們在寫程式時做到胸有成竹。 當程式碼出了問題時, 也能更快的找出原因所在,因為我們可以把原始碼產生的class檔反編譯出來, 看看它內部是如何實現的。 畢竟原理明白了, 原始碼只是表象罷了。

此外, class檔案不只是可以由Java程式碼產生。 其他很多基於JVM的語言, 也是產生標準的class文件, 然後被虛擬機器執行。 如我最近正在學習的scala語言, 它就是基於虛擬機器的。  scalac編譯器可以將scala程式碼編譯成class檔。 這樣的話, 了解class檔案格式, 可以對學習其他基於JVM的語言起到很好的作用, 你會發現, 如果你對class檔案和JVM足夠了解的話, 學習這些語言會感到非常輕鬆。 class檔案是JVM的一個介面, 不管你原始檔案寫的是什麼程式碼, 不管是java還是scala, 只要透過一定的方式, 讓你寫的程式碼可以轉換成格式正確的class文件, 那麼JVM就能替你執行。 如果你夠牛, 完全可以自己創建一門語言, 實作一個針對這個語言的編譯器, 將之編譯成class, 那麼虛擬機也能執行, 並且Scala,Groovy等語言的設計者已經在這麼乾了。  

以上是關於Java中class文件格式的總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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