栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Aop相关工具对比

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Aop相关工具对比

工具简介原理特点相关资源
aspectJAspectJ是一个基于Java语言的AOP框架,提供了强大的AOP功能,其他很多AOP框架都借鉴或采纳其中的一些思想。AspectJ在代码编译期间,将需要集成的代码插入到目标代码的前面或者后面,以实现代码的AOP。详解不能直接用于android,需要配置一些gradle1.Jake Warton开发的日志打印工具;2.面向切面变成
cglib + dexmakercglib是一个功能强大,高性能的代码生成包。在Java开发中,动态代码可以使用Proxy类来通过反射代理接口(interface)实现,但cglib不仅仅能够代理接口,它能够为类的非final方法提供代理,为JDK的动态代理提供了很好的补充。cglib原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。由于是通过子类来代理父类,因此不能代理被final字段修饰的方法。cglib在android中是不能使用的。不过,网上已经有人根据dexmaker框架(dex代码生成工具)来仿照cglib库动态生成.dex文件,实现了类似于cglib的AOP的功能将cglib动态代理思想带入Android开发
Javassist For AndroidJavassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶滋)所创建的。 关于java字节码的处理,目前有很多工具,如BCEL,ASM。不过这些都需要直接跟JVM的操作和指令打交道。相比而言,Javassist要简单的多,完全是基于Java的API,但其性能相比前二者要差一些。尽管如此,在性能要求相对低的场合,Javassist仍然十分有用Javassist的官网为:http://jboss-javassist.github.io/javassist/ ;Javassist的使用方法可以参考:用 Javassist 进行类转换 Java动态编程之javassist
epic + dexposed田维术的epic这个项目的AOP原理完全不同于以上几个方案,以上几个方案都是Java开发中已有的技术方案,只不过是移植到了Android中来。它们的根本原理是修改编译生成的字节码文件,对原本的代码进行替换,从而实现了方法的AOP。它们都是在编译时就对代码实现动态代理,而epic这个项目是在运行对代码实现动态代理的,是不是很牛逼!它的主要思想是在native层修改java method对应的native指针。论文地址 ; art上method aop的实现xposed->dexposed->epicartHoot源码
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号