AOP@Work: AOP工具比较,第1部分-语言机制

简介:AOP 技术的时代已经来临,但是怎样才能为项目选择正确的工具呢?在 新推出的 AOP@Work 系列的第一篇文章中,面向方面(aspect-oriented)的编程 专家 Mik Kersten 将比较 4 个领先的 AOP 工具(AspectJ、AspectWerkz、 JBoss AOP 和 Spring AOP),帮助大家判断应该选择哪一个工具。本文由两个部 分组成,在文中,作者将重点介绍这些工具的语言机制和不同技术的优劣。他分 别用 4 种工具编写同一个示例,让读者感觉到它们之间的高级区别。他还将讨论 每种工具的语法技术对 AOP 语义产生的效果。在文章结束时,作者将对工具的核 心语言机制(例如切入点匹配和组合、通知的格式、连接点上下文)进行深入比 较。注意,本文将解释最近宣布的 AspectJ 和 AspectWerkz 项目合并的意义。

面向方面编程(AOP)在 Java 平台上变得日益流行。随着 AOP 出版物和会议的增加,这项技术的工具与实现越来越多。虽然人们很清楚 AOP 是 面向对象技术的补充,但是 Java 开发人员该如何评估当前的 AOP 工具,特别是 每项新技术实现的优劣,这方面则相对不那么清楚。

本文有两部分,而且 本文还是 developerWorks 上一个新的 AOP 系列的第一篇文章。在本文中,将概 述 AOP 工具当前的技术状况,比较对于该技术而言最成熟的一些方法:AspectJ 、AspectWerkz、JBoss AOP、和 Spring AOP,并对比与每种方法的采用有关的问 题。文中还会解释最近宣布的 AspectJ 和 AspectWerkz 项目合并的意义(请参 阅参考资料)。

本文无意作为 AOP 的介绍或某个特定 AOP 实现的入门读 物。而是将对目前使用最普遍的 AOP 技术进行概述。对每个工具的语言机制和工 具支持的内在优劣进行探讨,将有助于为项目选择最合适的技术。这里定义的指 标还会让读者更加容易地评估即将推出的 AOP 工具和特性。关于 developerWorks 上介绍 AOP 的最新文章列表,请参阅参考资料。

请注意 本文有两个部分,为了方便读者,两部分同时发布。第 1 部分侧重于这 4 个领 先工具各自的 AOP 语言机制处理技术,其中包括工具的方面语法(aspect syntax)和切入点的表示、用来声明方面的机制范围等主题。第 2 部分继续深入 介绍领先的 AOP 实现如何与现有的开发环境、工具和库进行集成。这一部分包括 以下主题:方面设计器、IDE 插件、可伸缩性和 AOP 工具将来的发展方向,还包 括对最近 AspectJ 和 AspectWerkz 项目合并的关注。

选择成熟的工具

AOP 是一项新技术,所以,并不是现有的所有工具都已经成熟到适用于商 业开发。判断成熟度的一个主要因素是用户的采用程度。在考虑把一项新编程技 术应用到商用之前,这项技术必须从活跃的用户社区的反馈中得到强化。表 1 显 示了 aosd.net 上列出的目前可以使用的 AOP 工具(请参阅参考资料)。每个工 具的用户列表贴子数量可以表明它的用户基数(省略了贴子的实际数量,因为单 独一个月的统计可能给读者造成误解)。

表 1. 在 2004 年 11 月 AOP 工具用户列表中的贴子数量

时间: 2024-11-02 21:33:17

AOP@Work: AOP工具比较,第1部分-语言机制的相关文章

AOP@Work: AOP工具比较,第2部分-开发环境

简介:在这个由两部分构成的 AOP 工具比较的第 2 部分中,面向方面专家 Mik Kersten 将把重点放在工具与开发环境的集成以及构建过程上,包括对 AOP 工具 IDE 特性的逐点比较.为了帮助制定最终决策,在进行总结的时候,作者将 介绍这些快速发展的工具近期的发展情况,并提供每种工具优缺点的总结.注意 ,本文将解释最近宣布的 AspectJ 和 AspectWerkz 项目合并的意义. 在这个由两部分构成的 AOP 工具比较的第 1 部分 中,介绍了 4 种领先的 AOP 工具(Asp

AOP@Work: AOP和元数据:完美的匹配,第1部分

元数据增强的AOP的概念和结构 简介:在这篇由两个部分组成的系列文章的第 1 部分中,作者 Ramnivas Laddad 将对新的元数据功能进行概念性介绍,并展示在加入了元数据注释后, AOP 可以在什么地方获得最大的好处.然后他将分五步完成一个设计改造,从一 个无元数据的 AOP 实现开始,最终得到一个结合了 Participant 设计模式与注 释者-供应者(annotator-supplier)方面的 AOP. 新的 Java 元数据功能(facility)是 J2SE 5.0 的一部分

AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口

简介:在这篇由两部分组成的关于组合使用元数据和 AOP 的系列文章的第二 部分中,作者及 AOP 实践者 Ramnivas Laddad 将推荐一种把元数据视为多维关 注点空间中的签名的全新方法.他还将介绍有效组合使用元数据与 AOP 的一组准 则,并讨论元数据注释将如何影响面向方面的编程的应用. 在本文的第一部分 中,我介绍了新的 Java 元数据功能,并说明了如何以及 在什么地方可以用元数据注释最有效地增强 AOP 的连接点模型.我还概括三种最 重要 AOP 系统对元数据的已有支持,这三种系

c语言中十进制转二进制显示小工具的实现代码_C 语言

计算器在显示二进制位数时候,如果开头是0.是不会显示的,对于在单片机混的人,这个有时候很麻烦,所以写个小工具. 功能就是输入十进制数字,然后显示出2进制,每显示4位一次空格,可以调整位数范围(8的倍数) 如果有谁能知道linux下类似win7的那个计算器,麻烦回复告知一下吧.很是感谢~ 例如: $ dec2bin 1 135Num 8 Binary is : 0B1000 0111done!=============================== $ dec2bin 2 135Num 16

使用 AOP 来维护遗留 Java 应用程序

程序 处理复杂和不熟悉 Java 代码的技术级别:中级 Abhijit Belapurkar(abhijit_belapurkar@infosys.com)高级技术架构师,Infosys Technologies Limited2004 年 3 月 如果您曾经接管并且必须维护某个基于 Java 的应用程序,那么本文就是为您准备的.作者 Abhijit Belapurkar 将向您展示如何使用面向方面编程(aspect-oriented programming,AOP)来对即使最不透明的遗留应用程

Emit学习-实战篇-实现一个简单的AOP框架(三)

今天来介绍配置文件的定义和加载,先给出配置文件的内容,然后在详细介绍里面各节的含义,以及如何用程序加载配置文件,内容如下: 配置文件 <?xml version="1.0" encoding="utf-8" ?> <AOP> <Regeisty> <IPreProcess> <Aspect id="AddPreProcessLog" value="YQL.TestProject:YQ

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见的横切关注点有日志.事务和安全等. 将横切关注点抽离形成独立的类,即形成了切面.切面主要由切点和通知构成,通知定义了切面是什么,以及何时执行何种操作:切点定义了在何处执行通知定义的操作. http://ju.outofmemory.cn/entry/216839 引子: AOP(面向方面编程:Asp

动态代理方式实现AOP

摘要:面向对象的思想强调"一切皆是对象",在面向对象的程序中我们使用真实概念的模型思考问题,使得整个软件系统开发可以像搭建房屋一样有条不紊.然而面向对象也并非完美无缺的,它更注重于对象层次结构方面的东西,对于如何更好的管理对象行为内部结构,还存在着些许不足.那么我们如何使这个问题的得到更完美的解决呢?答案就是AOP. 主要内容: AOP简述 利用动态代理实现AOP 总结 一.AOP简述 AOP的概念早在上个世纪九十年代初就已经出现了,当时的研究人员通过对面向对象思想局限性的分析研究出了

Spring中的AOP(一)——AspectJ的基本使用

    AOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充,当前已经成为一种比较成熟的编程思想,其实AOP问世的时间并不长,甚至在国内的翻译还不太统一(另有人翻译为"面向方面编程").AOP和OOP(Object Orient Programming,面向对象编程)互为补充,OOP将程序分解成各个层次的对象,而AOP则将程序运行过程分解成各个切面.可以这样理解:OOP是从静态角度考虑程序结构,而AOP则从动态角度考虑程序运行过程