前言
- ASM 是什麼
- 官方介紹: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/
插件ByteCode Outline使用介紹
轉載于:https://www.cnblogs.com/oldtrafford/p/6736675.html