What is JAsCo?
JAsCo is an advanced aspect-oriented programming (AOP or AOSD) language originally tailored for the component-based field. The main contributions of the JAsCo language are its highly reusable aspects and its strong aspectual composition mechanism for managing combinations of aspects. The JAsCo technology excels at providing dynamic integration and removal of aspects with a minimal performance overhead. The JAsCo language is an aspect-oriented extension of Java that stays as close as possible to the original Java syntax and concepts and introduces two new concepts: aspect beans and connectors:
An aspect bean is highly reusable because it allows describing crosscutting concerns independently of concrete component types and APIs.
A connector on the other hand deploys one or more aspect beans within a concrete component context and allows specifying an explicit combination of their aspectual behavior.
The JAsCo technology is based on a genuine run-time weaver that allows to add, alter and remove aspects while the application is running. The run-time performance of this weaver is even able to improve on AspectJ.
JAsCo is an advanced AOP approach that supports a wide range of AOP concepts: AspectJ-like pointcuts, independent aspects, explicit deployment in connectors, expressive aspect combinations, aspectual polymorphism, stateful aspects, virtual mixins and adaptive programming. A drawback of all this is that the learning curse of JAsCo is harder than e.g. AspectWerkz’s. Therefore if you are new to AOP, we recommend to start experimenting with AspectJ or AspectWerkz first to get the basics.
Main benefits of JAsCo AOP
Language features:
Independence and reusability of Aspect Beans. Aspect Beans do not hard-code the concrete context where the advice has to apply.
Aspect Beans support aspectual polymorphism.
Avdanced Aspect Deployment:
Advanced Aspect Composition:
Explicit instance-based precedence strategies in a connector. As such, aspects do not have to hard-code precedence relationships and the precedence of several cooperating aspects is able to change over different applications of these aspects.
Explicit combination strategies in a connector that are able to manage the combined behavior of set of cooperating aspects.
Adaptive Programming using traversal connectors.
Stateful Aspects, i.e. aspects that specify protocol based pointcuts.
Technology and tools features:
Dynamically applying and removing aspects at run-time by compiling or removing connectors.
Remote aspect application and removal.
Fully portable over all Java enabled systems (
JDK compilant). Furthermore, a JAsCo version for the .NET platform is available
JAsCo introduces a real run-time weaver which is able to compete with AspectJ performance-wise, while allowing dynamic AOP. More info
here.
Stable implementation, compatibility mode for running JAsCo in application servers (0.8+)
Easy to use IDE as a plugin of Eclipse
Eclipse Concern Manipulation Environment integration for identifying conerns, extracting concerns to JAsCo artifacts and composing concerns (work in progress)