1. Java Agent是什么
Java Agent是JDK 1.5引入的技术,其通常表现形式是一个Jar文件,它的核心作用就是进行bytecode instrumentation。
那么,bytecode instrumentation是什么意思呢?就是对字节码(bytecode)进行修改(instrumentation),让原有的类增加一份额外的功能。
一般来说,Java Agent要配合着字节码类库(例如,ASM、ByteBuddy和Javassist)一起使用:
bytecode instrumentation = Java Agent + Java ASM等字节码类库
形象的来说,将一个运行的JVM想像成一个密闭的房子,房子里有各种各样的物品(正在加载的类、已经加载的类);
Java Agent就是为这个密闭的房子打开了一扇门,允许我们访问那些物品(正在加载的类、已经加载的类);
但是,真正修改物品(正在加载的类、已经加载的类)的操作是由Java ASM等操作字节码的类库来完成的。
那么,Java Agent有哪些具体的应用呢?
Java Agent是Arthas使用的技术,是Skywalking使用的技术,也是Crack Java软件过程要用到的技术。
因此,Java Agent是一项十分有用的技术。
2. 选题原因
在此之前,市面上并没有针对Java Agent进行系统介绍的课程。
通过搜索引擎查找,会发现与Java Agent相关的内容大多是个人知识总结分享的内容。
这些内容有如下特点:
- 内容质量不一
- 详略程度不一
- 学习难度千差万别
总体上来说,学习者很难有一个整体认知、系统学习的过程。
3. 课程知识体系
《Java Agent基础篇》课程,现已经在51CTO发布,课程地址:https://edu.51cto.com/course/30137.html
在构思课程内容时,本课程带有以下目标:
- 课程学习梯度:从简单到复杂,让学习者有一个循序渐进的理解过程。
- 构造完整、统一的知识体系:不是零散的知识点堆砌,而是有一个统一的贯穿始终的知识框架。
- 具有可操作性的代码示例,不只是讲概念,更注意于实践。
本课程通过四章内容对Java Agent相关知识进行讲解:
- 第一章,介绍Agent Jar的三个组成部分:Manifest、Agent Class和ClassFileTransformer。
- 第二章,介绍Agent Jar的两种启动方式:从命令行启动和使用Attach机制启动。
- 第三章,介绍如何利用Instrumentation API来实现Agent Jar的功能。
- 第四章,Java Agent的应用与技巧。
4. 讲师介绍
我叫刘森,南京师范大学研究生毕业,2015年获得信息系统项目管理师(高级),2014年获得系统集成项目管理工程师(中级)。
目前,我的课程都是围绕着“Java字节码”技术展开:
- 《Java Agent基础篇》是在一个运行JVM当中提供修改字节码的机会
- 《Java ASM系列》(免费课程)是一个操作字节码的类库
- 《Java 8 ClassFile》专注于字节码的理论知识,入选为“51CTO数字化人才证书项目认证课程”
因此,大家想学习字节码的技术可以找我:字节码技术找刘森,轻松学习又省心~~~
5. 附赠资料
Java ASM课程的视频,我已经上传到网盘,有兴趣的同学可以自行下载:
JavaASM系列(百度网盘)
链接:https://pan.baidu.com/s/1P9_ja4VXYXw99cadRV97eg
提取码:fsnf
JavaASM系列(阿里云盘)
链接:https://www.aliyundrive.com/s/HKGRaTSFV3N
提取码: dt64
另外,我用Java Agent写了一个mini-jn项目,有兴趣的同学可以看一下:
https://gitee.com/lsieun/mini-jn
6. 寻求合作
如果有想帮我推广课程的同学,可以通过51CTO私信联系我哟。
想购买课程的同学,也可以通过51CTO私信我,领取优惠券哟。
7. 结语
《Java Agent基础篇》是2022年刚出的课程,是一份“热乎乎”的课程,你是否打算“尝尝鲜”呢?
- 学习Java Agent,是一份增值性的知识,何不趁着闲暇的时光为自己充充电,让自己的知识技能增加一个魂环!
- 学会了Java Agent的知识之后,与不会Java Agent的小伙伴比起来,也就更具一份竞争优势!
- 如果你担心学不会,大可放心;如果学习过程中,遇到任何问题,可以随时联系我;只要我看到消息,就会尽早回复的。
最后,感谢大家花费时间阅读这篇文章!