java动态代理汇总
逛知乎,有篇关于fastjson如此快为什么国外还是喜欢用Jackson的问题,高票答案中有一点提到了fastjson有很多写死的地方,也不太适合像spring这种依赖AOP的框架使用,顺便提到了ASM,一个可以动态的生成java字节码的框架。兴趣使然,顺便也巩固下已经荒废很久的主业。哦,对了,fastjson没有网络盛传的说比Jackson快很多,我听到同事说的是快了10倍。
https://www.zhihu.com/question/44199956
1.关于asm
一个只专注java字节码操作和分析的框架,可被用于修改已存在的类文件或则动态的生产类,是通过字节码结构的方式来完成的。http://asm.ow2.org/
2.关于javassist
一个让java字节码操作简单的库。小日本写的,现在已经并入jboos应用下 http://jboss-javassist.github.io/javassist/
3.
类似字节码操作方法还有ASM。几种动态编程方法相比较,在性能上Javassist高于反射,但低于ASM,因为Javassist增加了一层抽象。在实现成本上Javassist和反射都很低,而ASM由于直接操作字节码,相比Javassist源码级别的api实现成本高很多。几个方法有自己的应用场景,比如Kryo使用的是ASM,追求性能的最大化。而NBeanCopyUtil采用的是Javassist,在对象拷贝的性能上也已经明显高于其他的库,并保持高易用性。实际项目中推荐先用Javassist实现原型,若在性能测试中发现Javassist成为了性能瓶颈,再考虑使用其他字节码操作方法做优化。
参考:
http://blog.csdn.net/luanlouis/article/details/24589193
http://www.cnblogs.com/hucn/p/3636912.html
轮子不在多,只是区分好场景,都是好轮子,另外在此基础上,接入cglib和原生java 动态,挺赞的。
可以作为下个分享会的题材了
时间赶,先这样吧,未完待续^^