JAVA字节码操作库 BCEL

fmms 13年前

Byte Code Engineering Library (BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分。BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。

使用示例代码:

JavaClass clazz = Repository.lookupClass("java.lang.String");    System.out.println(clazz);    printCode(clazz.getMethods());    ...    public static void printCode(Method[] methods) {      for(int i=0; i < methods.length; i++) {        System.out.println(methods[i]);          Code code = methods[i].getCode();        if(code != null) // Non-abstract method          System.out.println(code);      }    }

Java编译过程:

JAVA字节码操作库 BCEL

Java的Class文件结构:

JAVA字节码操作库 BCEL

项目主页:http://www.open-open.com/lib/view/home/1335065634656