深入理解JVM字节码

深入理解JVM字节码

Java核心技术系列

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
春暖花开季 恰是读书时满500减300、满200减120、满100减60活动详情

作品简介

本书一共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字节码改写实现无侵入插桩的方法。

张亚,资深后端工程师和Java工程师,CVTE(视源股份,股票代码:002841)高级技术经理,带领20多人的研发团队做教育相关的产品。主要方向是JVM调优及故障诊断、TCP源码剖析、高并发系统设计,致力于后端底层技术细节的研究。独立实现了公司级全链路APM产品,在字节码、ASM、软件破解等方向有丰富的实战经验。vim狂热爱好者,热衷分享,是掘金平台的优秀作者,在掘金上撰写过两本关于JVM和TCP底层原理的小册子。

作品目录

  1. 前言
  2. 第1章 深入剖析class文件结构
  3. 1.1 初探class文件
  4. 1.2 class文件结构剖析
  5. 1.3 使用javap查看类文件
  6. 1.4 小结
  7. 第2章 字节码基础
  8. 2.1 字节码概述
  9. 2.2 Java虚拟机栈和栈帧
  10. 2.3 字节码指令
  11. 2.4 小结
  12. 第3章 字节码进阶
  13. 3.1 方法调用指令
  14. 3.2 Lambda表达式的原理
  15. 3.3 泛型与字节码
  16. 3.4 synchronized的实现原理
  17. 3.5 反射的实现原理
  18. 3.6 小结
  19. 第4章 javac编译原理简介
  20. 4.1 javac源码调试
  21. 4.2 javac的七个阶段
  22. 4.3 小结
  23. 第5章 从字节码角度看Kotlin语言
  24. 5.1 Metadata注解
  25. 5.2 顶层方法
  26. 5.3 object单例
  27. 5.4 扩展方法
  28. 5.5 接口默认方法
  29. 5.6 默认参数
  30. 5.7 高级for循环
  31. 5.8 data class
  32. 5.9 多返回值
  33. 5.10 协程的实现原理
  34. 5.11 从字节码分析Kotlin编译器的bug
  35. 5.12 小结
  36. 第6章 ASM和Javassist字节码操作工具
  37. 6.1 ASM介绍
  38. 6.2 Javassist介绍
  39. 6.3 小结
  40. 第7章 Java Instrumentation原理
  41. 7.1 Java Instrumentation简介
  42. 7.2 Instrumentation与-javaagent启动参数
  43. 7.3 JVM Attach API介绍
  44. 7.4 小结
  45. 第8章 JSR 269插件化注解处理原理
  46. 8.1 JSR 269简介
  47. 8.2 抽象语法树操作API
  48. 8.3 JSR 269在常用框架上的应用
  49. 8.4 小结
  50. 第9章 字节码的应用
  51. 9.1 cglib动态代理原理分析
  52. 9.2 字节码在Fastjson上的应用
  53. 9.3 字节码在Dubbo上的应用
  54. 9.4 字节码在JaCoCo代码覆盖率上的应用
  55. 9.5 字节码在Mock上的应用
  56. 9.6 小结
  57. 第10章 软件破解和防破解
  58. 10.1 反编译
  59. 10.2 软件破解
  60. 10.3 软件防破解
  61. 10.4 小结
  62. 第11章 全链路分布式跟踪与APM
  63. 11.1 全链路分布式跟踪介绍
  64. 11.2 见微知著之APM
  65. 11.3 小结
  66. 第12章 Android字节码与APM
  67. 12.1 dex文件结构
  68. 12.2 Android字节码
  69. 12.3 Gradle插件编写
  70. 12.4 Android字节码注入原理
  71. 12.5 小结
载入中

大家都喜欢