首页 > 代码库 > Java字节码操作开源框架简介
Java字节码操作开源框架简介
avassist
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。
BCEL
Byte Code Engineering Library (BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分。BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。
ObjectWeb ASM
ObjectWeb ASM轻量级的Java字节码处理框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。ASM 提供了与 BCEL和SERP相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上。
cglib
cglib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。
Cojen
Cojen是一个动态Java字节码生成和分解工具。使用一个建造器来方便地生成代码,而不用再选择精确的指令。Cojen提供的工具类演示了代码生成器和加载器的使用。
JclassLib
JClassLib不但是一个字节码阅读器而且还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。
SERP
SERP字节码框架提供一组高级的APIs进行字节码各主方面的操作。SERP字节码框架能够使你不需要明白class文件格式与JVM 指令就可以轻松完成bytecode 操作
Trove Class File API
这个类文件API简化了Java class文件的创建。它允许你调用高级的方法来产生byte-code,不是直接编写byte-code。
Package gnu.bytecode
Package gnu.bytecode包含一些可以生成,读取,打印Java字节码文件的Java类。这个包是Kawa项目的一部分。
Classfile Reader & Writer
这个包使得读写java class文件变得很容易。它可以很容易得把class文件的内容显示给用户(除非你要统计Bug的输出数)与分解字节码。
Jiapi
Jiapi是一个用来改变正常Class装载过程的工具。Jiapi通过操作类的字节码来代替Class原来被装载的过程。被操作的Class传给一个可以把Class装载到Java虚拟机的类装载器。通过Jiapi工具被编译的Class可进行预处理操作并且可延缓执行被修改的Class在文件系统上序列化操作。
JBET
通过JBET(Java Binary Enhancement Tool )的API可对Class文件进行分解,重新组合,或被编辑。JBET也可以创建新的Class文件。JBET用一种结构化的方式来展现Javabinary (.class)文件的内容,并且可以很容易的进行修改。
Retroweaver
Retroweaver是一个字节码组织器,它能够让你用java1.4的虚拟机来运行用1.5的新特性所编写Class.Retroweaver的操作是把用1.5编译器编译的Class文件转换成可以在任何1.4虚拟机上运行Class文件.
Jen
Jen为字节码操作与生成提供一组高级API.利用它可以对Java classe进行重命名,把一个数据成员(Field)改成Public访问权限和新增一个构建函数等操作。Jen基于ASM2.1并完全支持Java5注释(annotations)与范型(Generics)。此外它还提供一组额外的工具类用于在运行期生成新的classes。
Soot
Soot是一个Java优化框架.它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。在2.0以上的版本Soot还包含一个Eclipse插件。
ReJava
ReJava提供一个类库用于操作class文件(包括bytecode)和一个GUI工具用于编辑,混淆,注入代码,搜索class文件。
jclazz
jclazz是一个Java字节码查看器与反编译工具。支持java1.4到1.6版本的字节码。