AOPI (AOP Interfaces) are a standard specification of a set of useful or mandatory componants for aspect-oriented systems.

The idea is to have a common set of abstract components specifications, distributed under a Public Domain licence, that will help all the projets to communicate and reuse components coming from other projects.

The AOPI project is a joint project between several software engineering people who are interested in AOP or some other related projects.

Overview

Motiviations

AOP is a new programming paradigm and set of techniques that allows better separation and modularization of concerns.

Several projects now provide AOP-related techniques such as generic proxies, interceptors, or bytecode translators. Thus, we can see a lot of new components or systems arising to perform AOP or AOP-releated stuffs:

All these projects have their onw goals and speficities. However, several common basic components are still usefull (and sometimes required) to build a full AO system. For instance, a component that is able to add metadata on the base components, a component that is able to perform code translation in order to advice the classes, a weaver component, a configuration component, and so on.

To us, it would be great to be able to reuse different components coming from different projects to build a full AO system, and for three main reasons.

For these reasons, we think that a standarization of the interfaces of the aspect-oriented components would be great and will bring great simplifications for the entire AOSD community, but also for all the communities that will to use AOP in a close future (e.g. JBoss).