小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Class文件格式總結(jié)

 看風(fēng)景D人 2016-10-07

到此, 所有關(guān)于class文件格式的重要內(nèi)容都已經(jīng)講解完了, 不敢說(shuō)面面俱到, 但是敢說(shuō)大部分重要的內(nèi)容都包含在內(nèi)了。前前后后用了9篇博客來(lái)專門講解class文件結(jié)構(gòu), 為什么花那么多的時(shí)間和精力來(lái)介紹class文件呢? 簡(jiǎn)而言之,因?yàn)樗苤匾?。在前面的文章中?也講到過(guò)為什么對(duì)于理解Java體系結(jié)構(gòu)來(lái)說(shuō), 理解class文件的格式至關(guān)重要。 其實(shí)這篇短文也不是對(duì)class文件格式細(xì)節(jié)上的總結(jié), 而是我在學(xué)習(xí)class文件和JVM的過(guò)程中的一些感悟和理解。 


我們都知道JVM能夠識(shí)別的只有class格式的文件, 而源文件只是我們?nèi)四茏R(shí)別的, 不能被JVM識(shí)別。 那我們要在更深的層次上理解Java語(yǔ)言, 理解JVM, 只懂源文件是不夠的, 因?yàn)樘摂M機(jī)的很多的行為, 是在class文件中定義的, 而我們要理解JVM的行為, 就必須也學(xué)會(huì)JVM能理解的“語(yǔ)言”, 那就是class文件格式 。 就像我們想要深入的了解一個(gè)外國(guó)人, 只站在自己的角度上是不可能了解他的, 只有你學(xué)會(huì)了他的語(yǔ)言, 才能對(duì)他更了解, 因?yàn)橹挥心憷斫饬怂f(shuō)的話, 才能知道他做的事, 進(jìn)而了解他的行事方式和性格特點(diǎn)。 當(dāng)然, 也有另外一個(gè)方式可以讓你了解外國(guó)人, 那就是讓他學(xué)會(huì)中國(guó)話, 你們用中文交流。 但是在Java的世界里, 這是不可能的, 因?yàn)槟悴豢赡茏孞VM識(shí)別源文件, 所以, 只能你去學(xué)習(xí)JVM能理解的語(yǔ)言 ---- class文件。 



理解了class文件的格式, 不僅對(duì)理解JVM的行為有指導(dǎo)性的意義, 它還能讓我們對(duì)Java代碼有更加清晰深刻的認(rèn)識(shí), 畢竟class文件是由我們寫的java代碼“翻譯”過(guò)來(lái)的。 明白了class文件的格式, 你就能知道方法是如何表示的, 字段是如何表示的, 繼承是如何表示的 , 方法體是如何表示的, 等等。 所有源文件中的東西, 都會(huì)在class文件中有相應(yīng)的描述形式。 這樣會(huì)讓我們?cè)趯懘a時(shí)做到胸有成竹。 當(dāng)代碼出了問(wèn)題時(shí), 也能更快的找出原因所在,因?yàn)槲覀兛梢园言创a生成的class文件反編譯出來(lái), 看看它內(nèi)部是如何實(shí)現(xiàn)的。 畢竟原理明白了, 源代碼只是表象罷了。


此外, class文件不只是可以由Java代碼生成。 其他很多基于JVM的語(yǔ)言, 也是生成標(biāo)準(zhǔn)的class文件, 然后被虛擬機(jī)執(zhí)行。 如我最近正在學(xué)習(xí)的Scala語(yǔ)言, 它就是基于虛擬機(jī)的。  scalac編譯器可以將scala代碼編譯成class文件。 這樣的話, 了解class文件格式, 可以對(duì)學(xué)習(xí)其他基于JVM的語(yǔ)言起到很好的作用, 你會(huì)發(fā)現(xiàn), 如果你對(duì)class文件和JVM足夠了解的話, 學(xué)習(xí)這些語(yǔ)言會(huì)感到非常輕松。 class文件是JVM的一個(gè)接口, 不管你源文件中寫的是什么代碼, 不管是java還是scala, 只要通過(guò)一定的方式, 讓你寫的代碼可以轉(zhuǎn)化成格式正確的class文件, 那么JVM就能替你執(zhí)行。 如果你足夠牛, 完全可以自己創(chuàng)建一門語(yǔ)言, 實(shí)現(xiàn)一個(gè)針對(duì)這個(gè)語(yǔ)言的編譯器, 將之編譯成class, 那么虛擬機(jī)也能執(zhí)行, 并且Scala,Groovy等語(yǔ)言的設(shè)計(jì)者已經(jīng)在這么干了。  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多