ASM
文章平均质量分 74
summer85
这个作者很懒,什么都没留下…
展开
-
Java字节码操纵框架ASM小试
Java字节码操纵框架ASM 本文主要内容:ASM是什么 JVM指令Java字节码文件ASM编程模型ASM示例参考资料汇总JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。Java class被存储在严格格式定义的.class文件里,这些类...原创 2015-03-06 10:26:49 · 227 阅读 · 0 评论 -
ASM的ASMifer eclipse插件直接看bytecode
直接编码ASM其实对于新手来说是很困难的事,但幸运的是ASM给我们提供了ASMifer工具。一般我们会使用ASM的ASMifer工具生成ASM结构来对比,使用命令: java -classpath "asm.jar;asm-util.jar;yourjar.jar" org.objectweb.asm.util.ASMifier org.domain.package.YourClass...原创 2015-03-09 14:43:48 · 698 阅读 · 0 评论 -
ASM动态操作方法(增改)
下面基于4.2版本的一个使用示例,演示了对类Foo进行修改方法名称,增加方法,修改方法内容等 package myASM; public class Foo { public void execute(){ System.out.println("test changed method name"); } public void changeMethodCo...原创 2015-03-10 13:54:56 · 820 阅读 · 0 评论 -
ASM动态创建类
一、什么是ASM ASM是一个JAVA字节码分析、创建和修改的开源应用框架。在ASM中提供了诸多的API用于对类的内容进行字节码操作的方法。与传统的BCEL和SERL不同,在ASM中提供了更为优雅和灵活的操作字节码的方式。目前ASM已被广泛的开源应用架构所使用,例如:Spring、Hibernate等。 二、ASM能干什么 分析一个类、从字节码角度创建一个类、修改一个已经被...原创 2015-03-11 14:02:33 · 1369 阅读 · 0 评论 -
ASM Java类的基本表述
如何使用ASM生成一个简单的JAVA类,里面使用到了很多的基本概念,比如:方法描述、引用描述等,下面将一一介绍。 一、类版本: 一个Java二进制的类文件,都有一个版本,因此ASM中提供了几个常量来指定一个类的版,这些常量定义在org.objectweb.asm.Opcodes接口中,如下: Java代码 int V1_1 = 3 << 16 |...原创 2015-03-11 14:17:02 · 173 阅读 · 0 评论 -
ASM的操作类属性
我们看到了ASM中的Core API中使用的是XXXVisitor操作类中的对应部分。本文将展示如何使用ASM中的Core API对类的属性的操作。 首先,我们定义一个原类Student,如下: public class Student { public String name = "Jimmy"; public String address = "China"; }...原创 2015-03-11 15:20:45 · 734 阅读 · 0 评论 -
关于修改class后reload需要解决的几个问题
我们要解决的问题就是当一个类(例如Worker)已经在虚拟机里面使用了,比如有程序Test引用到了Worker,这时候,Worker修改过了(Work'),字节码更新过了,我们需要在不重新启动jvm的情况下,让Test新发起的调用都使用到Work'的代码。我们怎么处理呢? 我们的方案:虚拟机起来的时候,在Test里,发现(TODO1)要使用Worker类,我们装载一个WorkerVers...原创 2015-04-15 10:00:38 · 852 阅读 · 0 评论