前言
- 官方介绍:ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form.
- ASM是一个多用途的Java字节码操作和分析框架。它可以被用来修改现有类或动态生成的类,直接以二进制形式
- ASM 应该是 Assembly缩写(官方没有缩写介绍,个人理解)
哪些著名的框架使用了ASM
- Languages and AOP tools: AspectWerkz | AspectJ | BeanShell | CGLIB | dynaop | Clojure | Groovy
- Java ME: EclipseME | MicroEmulator Sun Java ME emulation for Java SE |
- Tools and frameworks: Fractal | Dr. Garbage | Proactive | Retrotranslator | RIFE | R-OSGi | Terracotta
- Persistence: EasyBeans | Ebean | JDBCPersistence | JPOX | OpenEJB | Oracle BerkleyDB
- Monitoring: BEA WebLogic | BTrace | Byteman | JiP | ByCounter | Limpid Log
- Testing and code analysis: Agitar | Cobertura | Eclipse | JCarder | SemmleCode | Structure101 | SonarJ
ASM特点
- 短小精悍、快速、健壮
- 具有很好的文档,并且还有eclipse\Idea插件
- 开源
ASM Core框架
ClassVisit接口实现
ClassReader实现
ClassWriter实现
例子1:类生成
jvm的命令行介绍
javap -verbose 查看类信息
javap -c 查看bytecode
使用 ASM 实现 Java 语言的“多重继承”
http://www.ibm.com/developerworks/cn/java/j-lo-asm/