(1) ObjectWeb
ASM轻量级的Java字节码处理框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。ASM 提供了与 BCEL和SERP相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上。
该项目主页:
http://asm.objectweb.org/
(2)
cglib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。
该项目主页:
http://cglib.sourceforge.net/
(3)Byte Code Engineering Library (
BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分。BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。
该项目主页:
http://jakarta.apache.org/bcel/
(4)
SERP字节码框架提供一组高级的APIs进行字节码各主方面的操作。SERP字节码框架能够使你不需要明白class文件格式与JVM 指令就可以轻松完成bytecode 操作
该项目主页:
http://serp.sourceforge.net
(5)
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。
该项目主页:
http://www.csg.is.titech.ac.jp/~chiba/javassist/
实际例子,可参考
http://yonglin4605.iteye.com/blog/1396494
分享到:
相关推荐
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class ...
Java 字节码的执行是由 JVM 负责的,它将字节码翻译成机器代码,并执行相应的操作。 Java 字节码的特征包括: * 一 byte 一操作码(opcode) * 指令字节对齐,除了 tableswitch 和 lookupswitch 是字对齐的 * “有...
3. **字节码指令集**:Java字节码指令集包括许多单字节或双字节的指令,如`aload_0`(加载局部变量0到操作数栈)、`iconst_1`(将整数1压入操作数栈)等。这些指令控制程序的流程,进行数据处理。 4. **字节码优化*...
Java字节码文件由多个部分组成,包括魔数、版本号、常量池、访问标志、类和父类索引、接口索引集合、字段表集合、方法表集合以及属性表集合。 - **魔数**:标识文件是否为合法的Java字节码文件。 - **版本号**:...
1. **ASM框架**: ASM是一个Java字节码操控和分析框架,常用于动态代理、AOP(面向切面编程)和代码生成。通过ASM,程序员可以直接操作字节码,生成和转换Java类。ASM提供了一套详细的API,允许开发人员在字节码级别...
- **目标**: 提供一套全面的工具集合,用于操作 Java 字节码,支持分析、生成和转换等功能。 - **核心能力**: - 分析已有的 Java 类文件。 - 动态生成新的 Java 类。 - 修改现有的 Java 类。 #### 4. 架构与组织...
Teavm是一个开源项目,它的主要目标是将Java字节码直接编译成JavaScript,使得开发者可以使用Java语言编写Web应用程序,而无需依赖传统的Java虚拟机(JVM)。这个项目对于那些希望利用Java丰富的库和工具生态系统...
Procyon是另一个强大的Java反编译器,它不仅能够反编译Java字节码,还能处理Java的字节码注解和Java 5及更高版本的语法。Procyon提供了一个命令行工具,可以用于批量处理反编译任务,并且可以与IDE集成,如Eclipse或...
Java的泛型在运行时是通过类型擦除实现的,这意味着在编译后的字节码中,所有的泛型信息都会被替换为Object,但编译器会在编译时进行类型检查。 10. **通配符**: 泛型中可以使用通配符如`?`来表示任意类型,但...
ASM是一个强大的、低级别的Java字节码框架,它允许开发者动态生成和修改类和方法。ASMTools就是基于ASM框架提供的一系列工具,用于帮助开发者对字节码进行调试、分析和实验。然而,"不适合认真使用"的描述可能意味着...
Java 虚拟机 (JVM) 是运行 Java 字节码的虚拟执行环境。JVM 架构包括: - **类加载器子系统**:负责加载和验证 Java 类。 - **运行时数据区**:包括方法区、堆、栈等区域。 - **执行引擎**:解释和执行字节码。 - **...
5. **Java类库**:JDK包含了丰富的Java标准类库,如java.lang、java.io、java.nio、java.util、java.net等,为开发者提供了大量预先定义好的功能,如字符串处理、集合框架、网络通信等。 6. **平台兼容性**:JDK的...
JVM(Java Virtual Machine,Java虚拟机)是执行Java字节码的虚拟机,它提供了一个独立于硬件的抽象计算机环境。JVM主要由类加载子系统、运行时数据区、执行引擎和本地接口等组成。其中,运行时数据区包括方法区、堆...
Java虚拟机(Java Virtual Machine,JVM)是Java平台的核心组件,它负责将Java字节码转换为机器码并执行。JVM包括以下几个部分: * 程序计数器(PC Register):每个线程都有一个程序计数器,用于记录当前执行的...
Java程序由Java源代码编写,经过编译后生成Java字节码文件,然后在Java虚拟机上运行。 Java程序通常包括一个或多个类,每个类都包含了属性和方法。Java程序的入口点是一个特殊的类,它包含了一个名为main的方法,这...
JVM是Java程序运行的基石,它负责解析字节码并执行。理解JVM的工作原理,包括类加载机制、内存管理(堆、栈、方法区等)、垃圾收集(GC)策略以及性能优化,对于提升Java程序的效率至关重要。了解JVM调优技巧,如...
- **验证**:验证阶段确保类文件的合法性,包括文件格式、元数据、字节码和符号引用的验证,以保证安全性和正确性。 - **准备**:为类的静态变量分配内存并初始化为默认值,实例变量在对象实例化时分配。 - **...