`

Javassist 学习总结/1.动态创建新类或新接口的二进制字节码 2. 动态扩展现有类或接口的二进制字节码(使用javassist动态注入代码)

    博客分类:
  • java
 
阅读更多
要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略:
1.      动态编译
2.      动态生成二进制字节码(.class)
对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能:
1.      动态创建新类或新接口的二进制字节码
2.      动态扩展现有类或接口的二进制字节码
其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库;而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令;相比而言,Javassist要简单的多,完全是基于Java的API,但其性能相比前二者要差一些。
尽管如此,在性能要求相对低的场合,Javassist仍然十分有用,如JBoss中就调用了Javassist。


摘自:http://blog.csdn.net/sadfishsc/article/details/9999169
      http://www.iteye.com/topic/53740
分享到:
评论

相关推荐

    javassist-3.20.0-GA.zip

    Java字节码是Java虚拟机(JVM)能够理解的二进制指令集,它在程序编译后生成。Javaassist提供了API,允许开发者读取、修改和创建字节码,从而实现对Java类的动态操作。这对于AOP(面向切面编程)、代理、代码生成...

    JAVA字节码操作库 BCEL

    2. **字节码生成**:BCEL提供了一套接口和类,使得开发者可以动态地生成字节码,这对于创建动态代理、AOP(面向切面编程)等场景非常有用。 3. **代码优化**:通过修改字节码,BCEL可以实现代码的优化,例如去除...

    jclasslib与javassist案例.doc

    `javassist`是一个强大的Java字节码操作库,它允许我们动态地修改或创建类。在给定的案例中,我们使用`javassist`来改变 HelloWorld 类中输出的"Hello, world!"字符串。首先,我们需要添加`javassist`和`jclasslib`...

    javassist.jar

    ava 字节码以二进制的形式存储在 .class 文件中,每一个 .class 文件包含一个 Java 类或接口。Javaassist 就是一个用来 处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,...

    修改字节码 jclasslib

    在Java编程中,字节码是JVM(Java虚拟机)执行的中间语言,它是由Java编译器将源代码编译成的一种二进制格式。理解并操作字节码对于优化程序性能、调试、逆向工程以及插桩技术等具有重要意义。jclasslib是一款强大的...

    javassist3150gajar_jb51

    4. **字节码级别的操作**:通过 CtClass、CtMethod 和 CtField 等类,Javaassist 提供了丰富的接口来处理字节码,使得开发者能够直接操作类文件的二进制表示。 5. **反射增强**:Javaassist 可以帮助扩展反射功能,...

    一个牛逼的 Java 字节码类库!(csdn)————程序.pdf

    Java 字节码是Java平台的一种低级表示形式,它是由JVM(Java虚拟机)理解和执行的二进制代码。字节码使得Java程序具有跨平台性,因为不同的操作系统上的JVM可以解析并运行相同的字节码。在Java中,我们可以通过API来...

    字节码编程和操作系统等知识文档

    字节码编程是Java技术领域中的一个重要组成部分,它涉及到Java类文件的二进制表示形式,即Java字节码。Java虚拟机(JVM)在运行Java程序时,实际上是在解释和执行这种字节码。字节码编程允许开发者在类加载到JVM之前...

    Javassist入门手册

    Javassist是一款用于操作Java字节码的类库,它允许开发者在运行时动态修改类的结构和行为,其核心功能是读取、修改和保存Java的.class文件,也即字节码文件。.class文件是一种二进制文件,每一个文件代表一个Java类...

    javassist-rel_3_22_0

    1. 类的动态加载和修改:Javaassist允许你在程序运行时加载新的类,或者修改已经加载的类的字节码。这可以通过`ClassPool`对象来实现,它是一个类的集合,你可以从中获取或添加类。 2. 字节码操作:Javaassist提供...

    JAVAAssist jar包 ,最新发布,4月16号更新

    JavaAssist是一个强大的Java字节码操作库,它允许开发者在运行时动态地修改或创建新的Java类。这个jar包的最新版本是在4月16日更新的,提供了最新的功能和改进,对于需要进行字节码操作的Java开发工作尤其有用。 在...

    asm-3.2-bin.zip

    ASM-3.2-bin.zip是一个包含ASM库3.2版本的二进制分发包,它提供了对Java字节码的直接操作能力,允许开发者深入到JVM的底层机制。 在ASM-3.2版本中,主要包含以下关键知识点: 1. **字节码生成**:ASM库提供了一种...

    androidjava源码-android-source-browsing.platform--external--javassist:自动从

    2. 字节码操作:提供了API来直接操作字节码,包括添加、删除或修改方法、字段以及类结构。 3. 类转换:能够将Java源代码转换为字节码,反之亦然,这在分析和调试代码时非常有用。 4. 类池操作:允许开发者管理类池,...

    JVM之用Java解析class文件共10页.pdf.zi

    我们主要关注的是标题所提及的"JVM之用Java解析class文件"这一主题,这涉及到Java程序编译后的二进制表示以及JVM的类加载机制。 首先,让我们了解class文件的结构。一个Java源文件被编译后会生成对应的class文件,...

    hibernate+Struts2包

    5. Javassist:`javassist-3.11.0.GA.jar`是一个开源的Java字节码处理库,允许在运行时动态修改类或者创建新的类。在Hibernate中,Javassist用于动态生成代理类,支持延迟加载(Lazy Loading)等特性。 6. Commons ...

    org.hibernate.ejb-library-3.4.0.GA-A

    2. `com.springsource.javassist-3.15.0.GA.jar`:这是一个Java字节码操作和分析框架,Hibernate使用它来实现动态代理和类的增强。 3. `...

    struts2+hibernate常用jar包.rar

    7. **javassist-3.15.0-GA.jar** 和 **javassist-3.11.0.GA.jar**:这两个版本的Javassist库都是用于运行时修改类和方法的字节码工具,被Hibernate用作动态代理和类增强,以实现延迟加载等特性。 8. **antlr-2.7.7....

    03 - ASM和ClassFile - 简书1

    首先,ClassFile是Java编译器生成的字节码文件的结构,它以二进制形式存储了类或接口的所有元数据。ClassFile的结构严格遵循《Java Virtual Machine Specification》中定义的Class File Format。这个结构包括了一些...

Global site tag (gtag.js) - Google Analytics