一本书带你理解JVM字节码,实现各种JVM 黑科技


如果你从事Java开发,无论是做业务开发还是高性能中间件开发,Java字节码都是必须要掌握的技能。在Java领域,字节码的应用很普遍,动态生成、修改字节码已经在各大主流框架中落地。

《深入理解JVM字节码》从原理和应用深入剖析字节码,由浅入深地全方位引导读者探究字节码,揭示Java性能优化、软件破解、APM黑科技。

本书把JVM的底层原理,如字节码的执行过程、反射、热加载、javac 编译、OpenTracing 等都讲清楚了,循序渐进,精炼而又不失深度。包含大量高度提炼和总结的图表,非常易于阅读和理解。强烈建议正在学习 Java 语言的读者将本书作为深入理解 JVM 原理的必读书籍。

 

● 4大内容特色 ●

NO.1 作者实力出众

资深Java技术专家、上市公司高级技术经理、掘金平台优秀作者

NO.2 内容系统全面

系统讲解JVM字节码底层原理、使用方法、操作工具、常见使用

NO.3 格外注重实操

详细讲解JVM字节码在反编译、破解、逆向工程、APM等场景应用

NO.4 阅读体验至上

包含大量高度提炼和总结的图表,非常易于阅读和理解

● 12大核心内容●

  • NO.1 Class文件结构深入剖析

  • NO.2 JVM字节码指令和方法调用指令

  • NO.3 Lambda表达式、反射、synchronized实现原理

  • NO.4 javac编译原理

  • NO.5 Kotlin的字节码分析

  • NO.6 字节码操作工具:ASM和Javassist

  • NO.7 Java Instrumentation原理

  • NO.8 JSR 269插件化注解

  • NO.9 字节码在Fastjson、Dubbo等上的应用

  • NO.10 软件破解/防破解/逆向工程

  • NO.11 全链路分布式跟踪和APM

  • NO.12 Android字节码与APM

 

● 作者介绍●

张亚

资深后端工程师和Java工程师,CVTE(视源股份,股票代码:002841)高级技术经理,带领20多人的研发团队做教育相关的产品。

主要方向是 JVM 调优及故障诊断、TCP 源码剖析、高并发系统设计,致力于后端底层技术细节的研究。独立实现了公司级全链路APM 产品,在字节码、ASM、软件破解等方向有丰富的实战经验。

vim 狂热爱好者,热衷分享,是掘金平台的优秀作者,在掘金上撰写过两本关于JVM和TCP 底层原理的小册子。

 

● 专家推荐 ●

《大学》开篇就提到“格物致知”,本书正是秉承这样的思想,深入到虚拟机、字节码等背后深层次的结构和原理来剖析Java。当你深入掌握了这些原理之后,你的代码不管是在整体架构上,还是在开发和运行效率上,都会提升一个档次。

——刘荣(电脑圈圈) CVTE 技术专家

 

这本书对JVM底层知识的讲解非常深入,作者将自己在字节码领域积累多年的经验融汇成了本书,内容深入且全面,可以帮助你拓宽在 JVM 方向上的视野,掌握更多字节码的“黑科技”。

——钱文品(老钱) 前掌阅服务端技术专家

 

很高兴看到介绍字节码的专著问世,如果你从事 Java 开发,无论是做业务开发还是高性能中间件开发,Java 字节码都是必须要掌握的技能。这本书从原理到实战,由浅入深地引导读者探究字节码的方方面面,非常值得一读。

—— 周志明 远光软件研究院院长/《深入理解Java虚拟机》作者

 

本书把JVM的底层原理,如字节码的执行过程、反射、热加载、javac 编译、OpenTracing 等都讲清楚了,循序渐进,精炼而又不失深度。强烈建议正在学习 Java 语言的读者将本书作为深入理解 JVM 原理的必读书籍。

—— 赵成 蘑菇街技术总监

 

 

● 目录 ●

第1章 深入剖析 class 文件结构 1

1.1 初探 class 文件 1

1.2class 文件结构剖析 3

1.2.1 魔数 4

1.2.2 版本号 6

1.2.3 常量池 7

1.2.4Access flags 18

1.2.5this_class、super_name、interfaces 19

1.2.6 字段表 20

1.2.7 方法表 23

1.2.8 属性表 25

1.3 使用 javap 查看类文件 30

1.4 小结 32

第2章 字节码基础 33

2.1字节码概述 33

2.2 Java 虚拟机栈和栈帧 34

2.3 字节码指令 41

2.3.1 加载和存储指令 41

2.3.2 操作数栈指令 42

2.3.3 运算和类型转换指令 45

2.3.4 控制转移指令 46

2.3.5for语句的字节码原理 48

2.3.6switch-case底层实现原理 54

2.3.7String的switch-case实现的字节码原理 55

2.3.8i和i 的字节码原理 60

2.3.9try-catch-finally的字节码原理 63

2.3.10try-with-resources 的字节码原理 71

2.3.11 对象相关的字节码指令 74

2.4 小结 77

第3章 字节码进阶 78

3.1 方法调用指令 78

3.1.1invokestatic指令 79

3.1.2invokevirtual指令 79

3.1.3invokespecial指令 80

3.1.4invokeinterface指令 80

3.1.5invokedynamic指令 90

3.2Lambda 表达式的原理 95

3.3 泛型与字节码 100

3.4synchronized 的实现原理 102

3.5 反射的实现原理 106

3.5.1 反射方法源码分析 107

3.5.2 反射的inflation机制 109

3.6 小结 110

第4章 javac 编译原理简介 111

4.1javac 源码调试 112

4.2javac 的七个阶段 114

4.2.1parse阶段 115

4.2.2enter阶段 116

4.2.3process阶段 118

4.2.4attr阶段 118

4.2.5flow阶段 121

4.2.6desugar阶段 122

4.2.7generate阶段 126

4.3 小结 129

第5章 从字节码角度看 Kotlin语言 130

5.1Metadata 注解 130

5.2 顶层方法 132

5.3object 单例 133

5.4 扩展方法 134

5.5 接口默认方法 135

5.6 默认参数 137

5.7 高级 for 循环 140

5.8data class 142

5.9 多返回值 143

5.10 协程的实现原理 144

5.10.1CPS 介绍 145

5.10.2suspend 关键字 146

5.11 从字节码分析 Kotlin 编译器的bug 149

5.12 小结 153

第6章 ASM 和 Javassist 字节码操作工具 154

6.1ASM 介绍 154

6.1.1ASM Core API核心类 156

6.1.2ASM操作字节码示例 158

6.2Javassist 介绍 169

6.2.1Javassist核心API 169

6.2.2Javassist操作字节码示例 170

6.3 小结 174

第7章 Java Instrumentation 原理 175

7.1Java Instrumentation 简介 175

7.2Instrumentation 与 -javaagent启动参数 176

7.3JVM Attach API 介绍 180

7.3.1JVM Attach API基本使用 181

7.3.2JVM Attach API的底层原理 183

7.4 小结 190

第8章 JSR 269 插件化注解处理原理 191

8.1JSR 269 简介 191

8.2 抽象语法树操作 API 193

8.2.1Names介绍 193

8.2.2JCTree介绍 193

8.2.3TreeMaker介绍 198

8.2.4 自定义注解处理实战 202

8.3JSR 269 在常用框架上的应用 207

8.3.1 案例一:ButterKnife 207

8.3.2 案例二:Lombok 209

8.4 小结 212

第9章 字节码的应用 213

9.1cglib 动态代理原理分析 213

9.2字节码在 Fastjson 上的应用 218

9.3 字节码在 Dubbo 上的应用 221

9.4 字节码在 JaCoCo 代码覆盖率上的应用 222

9.5 字节码在 Mock 上的应用 225

9.6 小结 227

第10章 软件破解和防破解 228

10.1 反编译 228

10.2 软件破解 229

10.3 软件防破解 234

10.4 小结 250

第11章 全链路分布式跟踪与APM 251

11.1 全链路分布式跟踪介绍 251

11.2 见微知著之 APM 260

11.3 小结 273

第12章 Android字节码与 APM 274

12.1dex 文件结构 274

12.2Android字节码 288

12.3Gradle 插件编写 295

12.4Android字节码注入原理 297

12.5 小结 301

 

上下滑动查看

点击链接了解详情并购买

更多精彩回顾

书讯 | 6月书讯 (上)| 初夏已至,书香有约,六月宜静心读书

书讯 | 6月书讯 (下)| 初夏已至,书香有约,六月宜静心读书

上新 | 周志华领衔撰写,历时4年,宝箱书问世!
书单 | 创建字节跳动之前,张一鸣读过哪些硬核技术书?

干货 | G1垃圾回收算法概述

收藏 | TIOBE 5月榜单:时隔五年,C语言重返第一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值