展开全部

主编推荐语

从原理和应用深入剖析字节码,揭示Java性能优化、软件破解、APM黑科技。

内容简介

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

目录

  • 版权信息
  • 前言
  • 第1章 深入剖析class文件结构
  • 1.1 初探class文件
  • 1.2 class文件结构剖析
  • 1.2.1 魔数
  • 1.2.2 版本号
  • 1.2.3 常量池
  • 1.2.4 Access flags
  • 1.2.5 this_class、super_name、interfaces
  • 1.2.6 字段表
  • 1.2.7 方法表
  • 1.2.8 属性表
  • 1.3 使用javap查看类文件
  • 1.4 小结
  • 第2章 字节码基础
  • 2.1 字节码概述
  • 2.2 Java虚拟机栈和栈帧
  • 2.3 字节码指令
  • 2.3.1 加载和存储指令
  • 2.3.2 操作数栈指令
  • 2.3.3 运算和类型转换指令
  • 2.3.4 控制转移指令
  • 2.3.5 for语句的字节码原理
  • 2.3.6 switch-case底层实现原理
  • 2.3.7 String的switch-case实现的字节码原理
  • 2.3.8 ++i和i++的字节码原理
  • 2.3.9 try-catch-finally的字节码原理
  • 2.3.10 try-with-resources的字节码原理
  • 2.3.11 对象相关的字节码指令
  • 2.4 小结
  • 第3章 字节码进阶
  • 3.1 方法调用指令
  • 3.1.1 invokestatic指令
  • 3.1.2 invokevirtual指令
  • 3.1.3 invokespecial指令
  • 3.1.4 invokeinterface指令
  • 3.1.5 invokedynamic指令
  • 3.2 Lambda表达式的原理
  • 3.3 泛型与字节码
  • 3.4 synchronized的实现原理
  • 3.5 反射的实现原理
  • 3.5.1 反射方法源码分析
  • 3.5.2 反射的inflation机制
  • 3.6 小结
  • 第4章 javac编译原理简介
  • 4.1 javac源码调试
  • 4.2 javac的七个阶段
  • 4.2.1 parse阶段
  • 4.2.2 enter阶段
  • 4.2.3 process阶段
  • 4.2.4 attr阶段
  • 4.2.5 flow阶段
  • 4.2.6 desugar阶段
  • 4.2.7 generate阶段
  • 4.3 小结
  • 第5章 从字节码角度看Kotlin语言
  • 5.1 Metadata注解
  • 5.2 顶层方法
  • 5.3 object单例
  • 5.4 扩展方法
  • 5.5 接口默认方法
  • 5.6 默认参数
  • 5.7 高级for循环
  • 5.8 data class
  • 5.9 多返回值
  • 5.10 协程的实现原理
  • 5.10.1 CPS介绍
  • 5.10.2 suspend关键字
  • 5.11 从字节码分析Kotlin编译器的bug
  • 5.12 小结
  • 第6章 ASM和Javassist字节码操作工具
  • 6.1 ASM介绍
  • 6.1.1 ASM Core API核心类
  • 6.1.2 ASM操作字节码示例
  • 6.2 Javassist介绍
  • 6.2.1 Javassist核心API
  • 6.2.2 Javassist操作字节码示例
  • 6.3 小结
  • 第7章 Java Instrumentation原理
  • 7.1 Java Instrumentation简介
  • 7.2 Instrumentation与-javaagent启动参数
  • 7.3 JVM Attach API介绍
  • 7.3.1 JVM Attach API基本使用
  • 7.3.2 JVM Attach API的底层原理
  • 7.4 小结
  • 第8章 JSR 269插件化注解处理原理
  • 8.1 JSR 269简介
  • 8.2 抽象语法树操作API
  • 8.2.1 Names介绍
  • 8.2.2 JCTree介绍
  • 8.2.3 TreeMaker介绍
  • 8.2.4 自定义注解处理实战
  • 8.3 JSR 269在常用框架上的应用
  • 8.3.1 案例一:ButterKnife
  • 8.3.2 案例二:Lombok
  • 8.4 小结
  • 第9章 字节码的应用
  • 9.1 cglib动态代理原理分析
  • 9.1.1 cglib核心API介绍
  • 9.1.2 cglib原理分析
  • 9.2 字节码在Fastjson上的应用
  • 9.3 字节码在Dubbo上的应用
  • 9.4 字节码在JaCoCo代码覆盖率上的应用
  • 9.5 字节码在Mock上的应用
  • 9.6 小结
  • 第10章 软件破解和防破解
  • 10.1 反编译
  • 10.2 软件破解
  • 10.2.1 破解方式一:直接修改class文件
  • 10.2.2 破解方式二:javaagent无痛破解
  • 10.3 软件防破解
  • 10.3.1 自定义ClassLoader
  • 10.3.2 JNI隐藏核心逻辑
  • 10.3.3 基于JVMTI的加密方案
  • 10.3.4 混淆
  • 10.4 小结
  • 第11章 全链路分布式跟踪与APM
  • 11.1 全链路分布式跟踪介绍
  • 11.1.1 什么是全链路分布式跟踪
  • 11.1.2 OpenTracing基本术语
  • 11.1.3 分布式跟踪的实现和上下文传递
  • 11.2 见微知著之APM
  • 11.2.1 APM基本概念
  • 11.2.2 APM的字节码注入实现
  • 11.2.3 其他平台的APM实现
  • 11.3 小结
  • 第12章 Android字节码与APM
  • 12.1 dex文件结构
  • 12.1.1 header
  • 12.1.2 string_ids
  • 12.1.3 type_ids
  • 12.1.4 proto_ids
  • 12.1.5 field_ids
  • 12.1.6 method_ids
  • 12.1.7 class_defs
  • 12.1.8 data
  • 12.1.9 link_data
  • 12.2 Android字节码
  • 12.2.1 Android字节码概述
  • 12.2.2 常见的字节码指令介绍
  • 12.3 Gradle插件编写
  • 12.3.1 自定义Gradle插件
  • 12.3.2 独立的Gradle插件项目
  • 12.4 Android字节码注入原理
  • 12.4.1 Transform API介绍
  • 12.4.2 字节码注入代码实现
  • 12.5 小结
展开全部

评分及书评

评分不足
2个评分
  • 用户头像
    给这本书评了
    2.0

    感觉更像一本工具书

      转发
      评论
      用户头像
      给这本书评了
      4.0

      想了解 jvm 字节码细节,读此书

        转发
        评论

      出版方

      机械工业出版社有限公司

      机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。