解决什么问题,值不值得学

Java Agent 主要解决的是“在不改业务源码的前提下,动态介入程序运行”的问题。它常用于线上接口耗时排查、无侵入式链路追踪、热更新代码以及各类诊断工具的底层实现。很多开发者在排查偶发性线上故障时,往往只能靠看日志盲人摸象,或者必须改代码重新发版才能加探针。这门基础篇就是帮你弄懂这套机制,把“黑盒运行”的程序变成可被外部挂载、可观测的对象。如果你平时做的是纯业务增删改查,没碰过底层诊断或字节码插桩,学它相当于补齐 JVM 层面的运行时干预能力。这门课不讲虚的概念,而是从打包规则到代码编写,带你把一个 Agent Jar 实际跑起来,属于非常务实的底层基础。

适合什么基础,建议先看哪几块

这套资料不适合零基础转码者,你需要具备扎实的 Java 语法基础,能独立用构建工具配置工程依赖,且对 JVM 类加载机制有基本概念。资料编排遵循从概念到手工实操的递进逻辑,建议先看前几个讲概念的部分,搞清楚 Agent Jar 的三个组成部分,以及 Manifest 属性里各项配置的实际含义。之后重点跟练手工打包的几个示例,不要跳过。很多人用构建工具一键打包,却连里面包含什么文件都不清楚,一旦遇到打包报错或类找不到就完全无从下手。先手工打包再学自动化构建,能帮你建立对底层结构的直观认知,排查问题时定位会更准。

学完能做什么,资料怎么配合练

学完这门基础内容,你能独立写出一个最基础的 Agent 程序,完成打包并成功挂载到目标进程上,执行简单的类加载拦截或方法增强。在练习时,不要只用眼睛看视频,必须开着开发环境同步操作。建议自己建一个空的业务工程作为被挂载目标,再建一个 Agent 工程跟着资料一步步写。遇到手工打包部分,务必自己敲一遍打包指令,观察生成的清单文件内容。等手工流程彻底跑通,再去对照资料里的自动化构建配置,把手工步骤替换掉。这样学下来,你掌握的是一套能直接用到实际排障和监控组件开发的基础能力,而不是停留在概念层面。


从简单到复杂的讲解,具有可操作性的代码,构建完整Java Agent知识体系

课程目录

*   01 Agent Jar三个组成部分/

  *   01 课程介绍.mp4 11:57

  *   02 Java Agent是什么.mp4 04:35

  *   03 Instrumentation分类.mp4 03:28

  *   04 如何编写代码.mp4 05:12

  *   05 启动JavaAgent.mp4 09:12

  *   06 如何学习Java Agent.mp4 07:16

  *   07 Agent Jar的三个组成部分.mp4 04:18

  *   08 Manifest属性.mp4 14:50

  *   09 Agent Class.mp4 07:16

  *   10 手工打包示例一.mp4 23:42

  *   11 手工打包示例二.mp4 27:11

  *   12 手工打包示例三.mp4 20:30

  *   13 使用Maven一.mp4 23:40

  *   14 使用Maven二.mp4 26:23

  *   15 第一章总结.mp4 06:51

*   02 Agent Jar两种启动方式/

  *   01 Load-Time的agentArgs参数.mp4 20:30

  *   02 Load-Time的inst参数.mp4 15:03

  *   03 Dynamic Attach API.mp4 20:36

  *   04 Dynamic Attach API示例.mp4 17:03

  *   05 第二章总结.mp4 05:15

*   03 Instrumentation API/

  *   01 Instrumentation API介绍.mp4 25:12

  *   02 isXxxSupported.mp4 08:55

  *   03 添加和移除Transformer.mp4 24:13

  *   04 redefineClasses示例一.mp4 17:06

  *   05 redefineClasses示例二.mp4 15:42

  *   06 retransformClasses示例一.mp4 14:09

  *   07 retransformClasses示例二.mp4 19:41

  *   08 对比redefine和retransform.mp4 08:42

  *   09 xxxClasses.mp4 22:16

  *   10 getObjectSize.mp4 17:20

  *   11 appendToXxxClassLoaderSearch一.mp4 20:55

  *   12 appendToXxxClassLoaderSearch二.mp4 18:46

  *   13 setNativeMethodPrefix.mp4 24:14

  *   14 redefineModule.mp4 06:54

  *   15 InstrumentationImpl.mp4 11:23

  *   16 ClassFileTransformer一.mp4 24:45

  *   17 ClassFileTransformer二.mp4 18:04

  *   18 ClassFileTransformer三.mp4 17:34

  *   19 多个代码示例.mp4 14:40

  *   20 第三章总结.mp4 10:30

*   04 应用与技巧/

  *   01 对比Load-Time和Dynamic.mp4 18:05

  *   02 不修改字节码的Agent.mp4 08:28

  *   03 多个Agent.mp4 24:01

  *   04 检测Agent修改的内容.mp4 16:32

  *   05 Self Attach.mp4 18:28

  *   06 JMX Connector一.mp4 17:14

  *   07 JMX Connector二.mp4 22:40

  *   08 JMX management-agent.mp4 14:26

  *   09 JMX和Instrumentation.mp4 24:20

  *   10 ja-netfilter分析一.mp4 20:08

  *   11 ja-netfilter分析二.mp4 17:09

*   05 结课考试/

  *   01 结课考试