电脑技术学习

代码动态生成利器ASM 3.0发布

dn001
ObjectWeb ASM 3.0 beta2 版本发布了.

ASM是一套JAVA字节码生成架构。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。ASM 提供了与 BCEL( http://jakarta.apache.org/bcel)和SERP( http://serp.sourceforge.net/ )相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上。ASM一贯的设计思想就是将其应用于动态生成领域,因此小巧和快捷一直是这个产品的设计和实现的指导思想。

ASM的最终目标是创建一个生成工具,可以被用来执行对任何类的处理操作(不像一些工具,比如Javassit,它只支持预先定义的类操作,然而在许多场合这一功能是有局限性的)。

新版本的提升包括:
visit*Annotation methods can now return null
COMPUTE_MAXS now works with all subroutines, even very weird ones that cannot be produced by javac
new getters in ClassReader, SKIP_DEBUG now skips visitSource
new methods in Type: getObjectType, getConstructorDescriptor
InsnList now supports ListIterator interface
new insertBefore() and insert*() methods in InsnList class
improved Analyzer API, support for abstract and native methods
improved Method class behavior with default package
minor bug fixes
305716 bug in floating point constant handling in constant pool writing
305917 optimizer.ClassConstantsCollector generates an invalid class constant
306058 FieldNode.accept() cannot handle ClassVisitors yielding null as FieldVisitor
new tests
javadoc improvements

官方站点:
http://www.objectweb.org/

标签: