|
Open Source Aspect-Oriented Frameworks in Java
AspectJ is a seamless aspect-oriented extension to the Java programming language, Java platform compatible and easy to learn and use. AspectJ enables the clean modularization of crosscutting concerns such as: error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, multi-object protocols. |
Go To AspectJ
AspectWerkz is a dynamic, lightweight and high-performant AOP framework for Java. AspectWerkz offers both power and simplicity and will help you to easily integrate AOP in both new and existing projects. AspectWerkz utilizes runtime bytecode modification to weave your classes at runtime. It hooks in and weaves classes loaded by any class loader except the bootstrap class loader. It has a rich and highly orthogonal join point model. Aspects, advices and introductions are written in plain Java and your target classes can be regular POJOs. You have the possibility to add, remove and re-structure advice as well as swapping the implementation of your introductions at runtime. Your aspects can be defined using either an XML definition file or using runtime attributes. |
Go To AspectWerkz
Nanning Aspects is a simple yet scaleable aspect-oriented framework for Java. |
Go To Nanning
JBoss-AOP allows you to apply interceptor technology and patterns to plain Java classes and Dynamic Proxies. It includes:
* Java Class Interception. Field, constructor, and method interception, public, private, protected, and package protected, static and class members.
* Fully compositional pointcuts caller side for methods and constructors, control flow, annotations.
* Aspect classes Advices can be incapsulated in scoped Java classes
* Hot-Deploy. Interceptors can be deployed, undeployed, and redeployed at runtime for both dynamic proxies and classes.(working)
* Introductions. The ability to add any arbitrary interface to a Java class. Either an interceptor or a 'mixin' class can service method calls for the attached interfaces.
* Dynamic Proxies. The ability to define a dynamic proxy and an interceptor chain for it. Proxies can either be created from an existing class, or from a set of interfaces ala java.lang.reflect.Proxy.
* Metadata and Attribute Programming. The ability to define and attach metadata configuration to your classes or dynamic proxies. Interceptors can be triggered when metadata is added to a class. We also have Metadata Chains, the ability to define defaults at the cluster and application level, as well as the ability to override configuration at runtime for a specific method call.
* Dynamic AOP. All aspected objects can be typecasted to an AOP api. You can do things like add/remove new interceptors to a specific instance or add/remove instance configuration/metadata at runtime. |
Go To JBossAOP
dynaop, a proxy-based Aspect-Oriented Programming (AOP) framework, enhances Object-Oriented (OO) design in the following areas:
code reuse
decomposition
dependency reduction |
Go To dynaop
CAESAR is a new aspect-oriented programming language compatible to Java, that is, all Java programs will run with CAESAR. |
Go To CAESAR
Event-based Aspect-Oriented Programming (EAOP) for Java. EAOP 1.0 realizes the EAOP model through the following characteristics:
* Expressive crosscuts: execution points can be represented by events and crosscuts can be expressed which denote arbitrary relations between events.
* Explicit aspect composition: Aspects may be combined using a (extensible) set of aspect composition operators.
* Aspects of aspects: Aspects may be applied to other aspects.
* Dynamic aspect management: Aspects may be instantiated, composed and destroyed at runtime. |
Go To EAOP
JAC (Java Aspect Components) is a project consisting in developing an aspect-oriented middleware layer. |
Go To JAC
Open Source Libraries for High Performance Scientific and Technical Computing in Java |
Go To Colt
DynamicAspects enables you to do aspect-oriented programming in pure Java. Using the \"instrumentation\" and \"agent\" features introduced with Sun JDK 1.5, aspects can be installed and deinstalled during runtime! |
Go To DynamicAspects
The PROSE system (PROSE stands for PROgrammable extenSions of sErvices) is a dynamic weaving tool (allows inserting and withdrawing aspects to and from running applications)
PROSE aspects are regular JAVA objects that can be sent to and be received from computers on the network. Signatures can be used to guarantee their integrity. Once an aspect has been inserted in a JVM, any occurrence of the events of interest results in the execution of the corresponding aspect advice. If an aspect is withdrawn from the JVM, the aspect code is discarded and the corresponding interception(s) will no longer take place. |
Go To PROSE
The Azuki Framework is a java application framework, designed to reduce the development, deployment and maintenance costs of software systems.
The Azuki Framework provides also an unique combination of powerful design patterns (decorator, injection, intercepter, command, proxy...).
It provides a rapid application assembly from known components in order to build large systems.
The software conception is split into two main stages :
* Creation of independent components (technical & business service).
* Definition of component dependencies (weaving)
|
Go To Azuki Framework
CALI is a framework to prototype and compose Aspect-Oriented Programming Languages on top of Java.
It is based on an abstract aspect language that its extensible to implement new AOPL.
As proof of approach and methodology, the following language have been implemented:
-AspectJ (Dynamic part of AspectJ, where intertype declartion can be implemented using regular AspectJ);
-EAOPJ : An implementation of Event-Based AOP for Java;
-COOL: A DSAL for coordination;
-Decorator DSAL.
You can use CALI to implement your new AOPL and compose it with existing implementation or using existing
implementation to write your applications with aspects form different AOPL.
|
Go To CALI
|
|