一、字节码操控的基础
1、java动态性的两种常见实现方式
1)字节码操作
2)反射
2、运行时操作字节码可以实现:
1)动态生成新的类
2)动态改变某个类的结构(添加删除修改 新的属性和方法)
字节码操作比反射开销小,性能高
3、常见的操作字节码的技术
1)BCEL:Byte code engineering library ,在实际的JVM指令层次上进行操作,拥有丰富的JVM指令级支持。
2)ASM:轻量级的java字节码操控框架,直接涉及到JVM底层的指令和操作。可以在类被加载到虚拟机前动态改变类的行为,Java class 被存储在 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
3)CGLIB:code generate library,高性能code生成类库,基于ASM
4)javassist:分析、编辑创建字节码的类库,比ASM性能差,与CGLIB差不多,使用简单。
本文探讨了Java动态性实现的两大方式:字节码操作与反射,重点介绍了字节码操作的优势及其在动态生成类和修改类结构的应用。文中详细讲解了四种主流的字节码操作技术:BCEL、ASM、CGLIB与javassist,对比了它们的特点与适用场景。

2675

被折叠的 条评论
为什么被折叠?



