小册介绍
也许你写了无数行代码,会用很多炫酷的语法糖和高级的框架,但你未必了解这些高级语言背后的执行过程。即使对于一名经验丰富的 Java 程序员,在阅读 Java 字节码的时候也会感到很枯燥。我们为什么需要深入了解如此底层的信息呢?
0x01 知其然到知其所以然,理解花里胡哨语法糖背后的实现原理
- 有没有深究过「finally 代码块一定会执行」这个耳熟能详的规则背后真实的原因?
- 有没有好奇过 Kotlin 的 when 语法、Coroutine 是如何实现的?
- 有没有研究过 Spring AOP 背后的实现原理?
0x02 可以实现各种JVM 黑科技
- ZeroTurnaround 公司开发的 JRebel 插件实现了热部署,XRebel 插件实现了开发调试阶段的性能分析利器;
- fastjson 使用字节码改写技术避免了反射的开销,大大提高了反序列化的性能;
- 不修改原始 jar 包的情况下,实现软件的破解?
0x03 无侵入应用性能监控(APM)的基石
从国外的 NewRelic 到国内大火的听云、OneAPM,到最近微信和 360 都开源的安卓端 APM,都是基于字节码改写来实现了强大的探针监控功能,可以在不改一行代码的情况下,实现移动端到后端的全链路监控,通过慢交互、慢加载、调用链等,快速查明故障域,定位性能瓶颈
作者介绍
我是挖坑的张师傅,vim 党。从事 Java 开发六年多,做过安卓,现在深耕后台开发,在 CVTE 担任技术经理,带一个 20 多人的开发团队做教育相关的产品。
因为喜欢保持简单,自己花了一些时间造了很多轮子,比如 REST 服务端框架、数据库连接池、SQL 执行框架、类 Dubbo 的 RPC 调用框架、自己实现 Gossip 协议、延时队列等。
曾有一段时间花了半年一个人吭哧吭哧做了一个无侵入的字节码注入的 APM
平台(跟听云、newrelic
一样的项目),对整个后端调用栈做了监控。把字节码操作玩的炉火纯青,顺手无侵入的破解了一系列 Java
系软件。
这是我写的第一本小册,第二本 TCP 小册 也上架了,有兴趣的话也可以了解一下,
你会学到什么?
- 剖析 Java 虚拟机运行机制;
- 理解语法糖背后的原理了解: Kotlin 等新兴语言;
- 面试陷阱题背后真正的原因;
- 用 Java 字节码黑科技来做一些有意思的事情,比如破解软件等;
- 如何从零到一实现一个基于字节码注入的 APM 系统。
适宜人群
- 对 Java 有了初步了解,想深入学习内部运行细节的同学;
- 想对 Java 面试题有深刻理解的同学;
- 想了解如何实现 APM 的同学。
关于答疑
有任何问题,可以加我微信讨论「zhangya_no1]
另外我还维护了一个公众号「张师傅的博客」,里面会发一些分布式理论、Java 原理、Go 语言汇编、MySQL 原理相关的知识
更新进度
- 2019.03.30:添加《 lambda 表达式背后的字节码原理》章节,已经写作完毕;
- 2019.07.27:添加《补充内容:javac 源码调试》章节,已经写作完毕;
- 2019.09.21:补充内容《心有 Java 细嗅 Kotlin —— 字节码细数 Kotlin 优雅的语法糖》章节,已经写作完毕;
- 2019.09.21:补充内容《字节码调教的入口 —— JVM 的寄生插件 javaagent 那些事》章节,已经写作完毕;
- 2019.09.21:补充内容《字节码操作的手术刀 —— 工业级的字节码改写框架 ASM 与 Javassist》章节,已经写作完毕;
- 2019.09.27:补充内容《褪下类文件的外衣 —— 抽丝剥茧看 class 文件内部结构》章节,已经写作完毕;
购买须知
- 本小册为图文形式内容服务,共计 28 节;
- 文章已全部更新完毕;
- 购买用户可享有小册永久的阅读权限;
- 购买用户可进入小册微信群,与作者互动;
- 掘金小册为虚拟内容服务,一经购买成功概不退款;
- 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任;
- 在掘金小册阅读过程中,如有任何问题,请邮件联系 xiaoce@xitu.io