This page is intended to list tools suitable for use in production systems.
The page is divided into two parts: the first part lists tools known to have a significant number of commercial users; the second part lists tools that do not yet have a significant number of commercial users, but are nonetheless of suitable quality for production use.
You may also want to explore the tools described as Research Projects.
Tools with a Significant User Base
AspectJ is a seamless aspect-oriented extension to Java that enables the modular implementation of a wide range of crosscutting concerns.
AspectWerkz is a dynamic, lightweight and high-performant AOP/AOSD framework for Java. (from March 2005 Aspectwekz has been merged with AspectJ)
JBoss-AOP is the Java AOP architecture used for the JBOSS application server.
Spring's approach to AOP differs from that of most other AOP frameworks. The aim is not to provide the most complete AOP implementation (although Spring AOP is quite capable); it is rather to provide a close integration between AOP implementation and Spring IoC to help solve common problems in enterprise applications.
Glassbox is an open source application troubleshooting tool for developers that uses AspectJ and includes pre-built aspects and an extensible aspect-oriented framework for application monitoring.
Other Development Quality Tools
abc, the AspectBench Compiler, is a full implementation of the AspectJ language, with an emphasis on extensibility and optimisations. It is used by over 10 research groups around the world.
ARJ unifies aspect-oriented programming and stepwise software development. It extends AspectJ with language constructs for aspect refinement and mixin-based aspect inheritance and composition.
AspectC++ is an aspect-oriented extension to the C++ programming language.
AspectDNG is a .NET multi-language aspect weaver.
Aspyct is an AOP module for Python. It is intended to be powerful while being easy to use. Aspyct uses Python syntax, functions, classes so that no new knowledge is needed. Creating aspect classes is possible, as well as simple function advices. Works from Python 2.4 up to (and including) 3.0
phpaspect is a PHP language extension which implements aspect-oriented programming for PHP 5.
[AspectS] is an AOP framework for Smalltalk. There are two versions: one for Visual Works, and another for Squeak.
AspectXML is an attempt to sound out, brainstorm, and generally try out the aspect oriented approach in relation to XML.
Aquarium is a full-featured AOP toolkit for Ruby which seeks to provide "enterprise-class" capabilities like AspectJ. It seeks to create a rich, user-accessible pointcut language and to promote aspects as a tool for implementing Domain-Specific Languages (DSL's). Recent enhancements include preliminary support for advising Java classes when using JRuby!
C-mol is a method oriented programming language that is compatible to and can be used together with any C++ code.
Using C-mol, programs can be developed and implemented the method oriented way. It supports concepts similar to the aspect oriented concepts, resulting in smaller, non-redundant and well-separated, comprehensive program code—but without breaking the encapsulation that is provided by object oriented programming.
C-mol and the method oriented development concepts are very easy to learn since they are along the lines of object oriented concepts and do not introduce tons of new terminology and syntax.
Contract4J supports Design by Contract © for Java 5. Contract tests are embedded in Java 5 annotations. At runtime, AspectJ aspects evaluate the expressions to enforce the contract.
Eos is an aspect-oriented extension to C# for .NET Framework. Eos supports a very simple unified model of AOP.
FeatureC++ supports feature-oriented and aspect-oriented programming in C++. The highlight of FeatureC++ is the combination of FOP and AOP concepts.
JAC is a Java framework for aspect-oriented distributed programming.
LOOM.NET is a static aspect weaver that operates on binary .NET assemblies. The RAPIER-LOOM.NET library is a dynamic aspect weaver.
Motorola WEAVR is an Aspect-Oriented Modeling add-in to Telelogic TAU. It performs weaving of UML 2.0 state machines before code generation.
Nanning is an Aspect Oriented Framework for Java based on dynamic proxies and aspects implemented as ordinary Java-classes.
ObjectTeams/Java (OT/J) is a language for modular aspect-oriented programming with roles and collaborations (=teams). The Object Teams Development Tooling is a feature rich and thoroughly tested IDE for OT/J based on Eclipse. The OTDT itself is built using OT/J and the OT/Equinox technology.
PAT (Persistent Applications Toolkit) is a persistence aspect for plain, Java objects.
PostSharp is a post-compiler for Microsoft .NET. It ships with a complete module reader/writer, code object model and a low-level code weaver. It can serve as a base to build weavers of higher abstraction. PostSharp Laos, for instance, uses custom attributes to define aspects.
SetPoint is an aspect-oriented tool based on semantic pointcuts, developed using Microsoft's .NET framework.
Sophus is an .NET platform high performance and easy to use AOP framework. It is simple and fast.
XWeaver is an extensible, customizable and minimally intrusive aspect weaver for C/C++ — it generates source code which differs as little as possible from the base code (preserves layout and comments).
Teddy's Aspect Weaver is an AOP framework resulting a static aspect weaver based on AspectDNG's ILML library and provides easier configuration format (both meta xml way and custom attribute way) and more advice types support.
MFAOPHP is a simple implementation of AOP in PHP, it supports JoinPoints, PointCuts and the before, after and around Aspects. No pre-PHP processor, but real-time Aspect Weaving. Download your own free version under GPL licence.
AOP Library for PHP This download-free (GPL licence) package can be used to implement Aspect Oriented Programming (AOP) by executing the code of classes that enable orthogonal aspects at run-time.
DotSpect (.SPECT) is a .NET, Compile-time (Static-injection), Language-Independent Aspect Weaver. It provides a language similar to AspectJ with some additional syntactic elements. Advice code can be written in any language. By default, there is support for C# and VB.NET. It also provides an IDE for writing and testing aspects.
A detailed description of how to edit can be found on the Help:Editing page.