Java动态编程初探——Javassist
来源:互联网 发布:淘宝客qq推广 编辑:程序博客网 时间:2024/04/28 07:36
我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Javassit。
Javassit其实就是一个二方包,提供了运行时操作Java字节码的方法。大家都知道,Java代码编译完会生成.class文件,就是一堆字节码。JVM(准确说是JIT)会解释执行这些字节码(转换为机器码并执行),由于字节码的解释执行是在运行时进行的,那我们能否手工编写字节码,再由JVM执行呢?答案是肯定的,而Javassist就提供了一些方便的方法,让我们通过这些方法生成字节码。
类似字节码操作方法还有ASM。几种动态编程方法相比较,在性能上Javassist高于反射,但低于ASM,因为Javassist增加了一层抽象。在实现成本上Javassist和反射都很低,而ASM由于直接操作字节码,相比Javassist源码级别的api实现成本高很多。几个方法有自己的应用场景,比如Kryo使用的是ASM,追求性能的最大化。而NBeanCopyUtil采用的是Javassist,在对象拷贝的性能上也已经明显高于其他的库,并保持高易用性。实际项目中推荐先用Javassist实现原型,若在性能测试中发现Javassist成为了性能瓶颈,再考虑使用其他字节码操作方法做优化
http://blog.csdn.net/mousebaby808/article/details/37696371#comments
http://www.cnblogs.com/hucn/p/3636912.html
- Java动态编程初探——Javassist
- Java动态编程初探——Javassist
- Java动态编程初探——Javassist
- Java动态编程初探——Javassist
- Java动态编程初探——Javassist
- Java动态编程之javassist
- java基础(20)--java动态编程-Javassist
- JAVA中如何利用javassist实现动态编程
- webx—javassist动态创建class文件
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
- Java 编程的动态性, 第4部分: 用 Javassist 进行类转换
- Java 编程的动态性, 第四部分: 用 Javassist 进行类转换
- Java 编程的动态性, 第4部分: 用 Javassist 进行类转换
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
- Java 编程的动态性, 第四部分: 用 Javassist 进行类转换
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
- java动态代理(JDK, CGLIB, Javassist)
- Java Agent初探——动态修改代码
- 动态调用WCF的工具类库
- 《择天记》--一个关于改命的故事
- 数据结构---线性表--静态链性存储
- mac上安装xgboost
- Android基本功:Handler消息传送机制
- Java动态编程初探——Javassist
- Ext创建自定义窗口显示html内容
- v
- JAVA面试题
- 迹,最大平均差异,核函数等基本概念理解
- 概念模型转换成物理模型并生成sql语句创建数据库 链接
- Java的IO输入输出
- 几种加密方式
- Codeforces Magnets