- 深入理解JVM字節碼
- 張亞
- 834字
- 2020-06-02 18:27:51
如何閱讀這本書
本書一共12章,從邏輯上主要分為字節碼原理篇和應用篇兩大部分。
第1章詳細剖析了class文件的內部結構,幫助讀者理解本書后面介紹的字節碼原理。
第2章首先介紹了什么是字節碼,接下來介紹了Java虛擬機棧和棧幀的相關內容,然后通過for循環、switch-case、try-catch-finally等語法講解了字節碼指令的用法。
第3章介紹了字節碼的進階知識,主要目的是讓讀者掌握方法調用指令、泛型擦除、synchronized關鍵字、反射的底層實現原理。
第4章介紹了javac編譯器的原理。編譯原理是計算機科學皇冠上的明珠,只有弄懂了javac才能更好地理解字節碼的生成原理。本章一開始介紹了javac源碼的調試方法,隨后詳細介紹了javac編譯的七大階段和各階段的作用。
第5章從字節碼角度看Kotlin語言,介紹了常見語法糖和協程等的原理,希望讀者在學習其他JVM系語言時可以舉一反三,使用類似的思路。
第6章介紹了ASM和Javassist兩個字節碼操作工具。這兩個工具非常重要,被廣泛用于中間件框架中,后面關于APM、軟件破解的章節都涉及這兩個工具的使用。
第7章介紹了Java Instrumentation的原理,分兩種方式講解了如何使用Instrumentation,最后介紹了Attach API的底層UNIX域套接字的通信原理。
第8章介紹了JSR 269插件化注解處理的原理,希望讀者可以通過本章掌握編譯期間生成、修改代碼的方法,理解Lombok、ButterKnife工具的實現原理。
第9章主要介紹了字節碼在cglib、Fastjson、Dubbo、JaCoCo、Mock這些框架上的應用,可以讓讀者接觸到更多字節碼的使用場景。
第10章主要介紹了反編譯、破解、防破解和逆向工程的相關內容。了解常見的破解和逆向方法能更好地保護自己的軟件產品。
第11章介紹了APM的概況、分布式跟蹤的基本原理、OpenTracing的基本概念和無埋點字節碼插樁的代碼實現。如果對APM有興趣,可以將本章作為入門指導,實現自己的APM產品。
第12章詳細介紹了Android dex文件的組成結構,以及Android字節碼指令與Java字節碼指令的區別,最后介紹了Gradle字節碼改寫實現無侵入插樁的方法。
JVM字節碼技術的內容非常龐大,本書只是揭開了冰山一角,希望可以達到授之以漁的目的。讀者如果可以通過閱讀本書掌握一些工具和方法,舉一反三地解決開發過程中的實際問題,那我就非常滿足了。