It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users.
It uses Java-like syntax, and included IDE integrations for displaying crosscutting structure since its initial public release in All valid Java programs are also valid AspectJ programs, but AspectJ lets programmers define special constructs called aspects. Aspects can contain several entities unavailable to standard classes.
These are:. AspectJ also supports limited forms of pointcut-based static checking and aspect reuse by inheritance. See the AspectJ Programming Guide for a more detailed description of the language.
About the Project
AspectJ can be implemented in many ways, including source-weaving or bytecode-weaving , and directly in the virtual machine VM. Classes affected by aspects are binary-compatible with unaffected classes to remain compatible with classes compiled with the unaffected originals.
Supporting multiple implementations allows the language to grow as technology changes, and being Java-compatible ensures platform availability. Key to its success has been engineering and language decisions that make the language usable and programs deployable.
Compile Dependencies (0)
The original Xerox AspectJ implementation used source weaving, which required access to source code. When Xerox contributed the code to Eclipse, AspectJ was reimplemented using the Eclipse Java compiler and a bytecode weaver based on BCEL , so developers could write aspects for code in binary. At this time the AspectJ language was restricted to support a per-class model essential for incremental compilation and load-time weaving.
This made IDE integrations as responsive as their Java counterparts, and it let developers deploy aspects without altering the build process.
This led to increased adoption, as AspectJ became usable for impatient Java programmers and enterprise-level deployments.
Since then, the Eclipse team has increased performance and correctness, upgraded the AspectJ language to support Java 5 language features like generics and annotations , and integrated annotation-style pure-java aspects from AspectWerkz. The Eclipse project supports both command-line and Ant interfaces.
Academic interest in the semantics and implementation of aspect-oriented languages has surrounded AspectJ since its release.
The leading research implementation of AspectJ is the AspectBench Compiler , or abc ; it supports extensions for changing the syntax and semantics of the language and forms the basis for many AOP experiments that the AspectJ team can no longer support, given its broad user base.
A sister Spring project, Spring Roo , automatically maintains AspectJ inter-type declarations as its principal code generation output. He coined the term crosscutting.
... and your code gets untangled
Fourth on the team, Chris Maeda coined the term aspect-oriented programming. Jonas Boner and Alex Vasseur engineered the AspectWerkz project, and later contributed to the AspectJ project when it merged in the AspectWerkz annotation style and load-time weaving support.
Unlike AspectJ prior to version 5, AspectWerkz did not add any new language constructs to Java, but instead supported declaration of aspects within Java annotations. It utilizes bytecode modification to weave classes at project build-time, class load time, as well as runtime. Aspects can be defined using either Java annotations introduced with Java 5 , Java 1.
What is AOP - Aspect Oriented Programming
AspectWerkz provides an API to use the very same aspects for proxies, hence providing a transparent experience, allowing a smooth transition for users familiar with proxies. AspectWerkz is free software.
From Wikipedia, the free encyclopedia. Redirected from Aspect j. Aspect-oriented software development. Eclipse Foundation.
Part 1 Understanding AOP and AspectJ
License Eclipse Public License Website www. Retrieved Categories : Programming languages Aspect-oriented programming Aspect-oriented software development Cross-platform software Eclipse software Eclipse software Eclipse technology Java programming language family Software distribution Software using the Eclipse license Programming languages created in software Cross-platform free software High-level programming languages. Hidden categories: All Wikipedia articles needing clarification Wikipedia articles needing clarification from September Namespaces Article Talk.