ASM 是什么?
ASM是一个操作java字节码的类库。
操作对象:java字节码
如何操作:“拆分-修改-合并”
ASM 与 java 版本对照
ASM Release | Release Date | Java Support |
---|---|---|
2.0 | 2005-05-17 | Java 5 language support |
3.2 | 2009-06-11 | support for the new invokedynamic code. |
4.0 | 2011-10-29 | Java 7 language support |
5.0 | 2014-03-16 | Java 8 language support |
6.0 | 2017-09-23 | Java 9 language support |
6.1 | 2018-03-11 | Java 10 language support |
7.0 | 2018-10-27 | Java 11 language support |
7.1 | 2019-03-03 | Java 13 language support |
8.0 | 2020-03-28 | Java 14 language support |
9.0 | 2020-09-22 | Java 16 language support |
9.1 | 2021-02-06 | Java 17 language support |
ASM可以做什么
- 对已有class进行分析
- 构建新的class
- 修改已有的class
依赖 ASM 的技术
- Spring框架AOP功能的
CGLib
实现 - Java 8版本中
Lambda
表达式的调用 - Android应用的混淆工具
Proguard