java动态字节码生成
关于java字节码的处理,目前有很多工具,如javassist
,bcel
,asm
,cglib
,以及jdk6引入的JavaCompiler
等。
其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库;而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令。这些实现都需要直接跟虚拟机指令打交道。如果你不想了解虚拟机指令。
javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。如果你不想了解虚拟机指令,可以采用javassist。
另外JDK6引入的JavaCompiler类,也可以帮助我们动态生成字节码对象。
很多框架都使用了动态字节码技术,例如mybatis,hibernate,spring,Struts2,dubbo等。
评论 (0)