简介: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 工具用户列表中的贴子数量