AspectJ е аспектно-ориентирано разширение на програмният език Java създадено в Xerox PARC от Крис Маеда.Работата на Xerox групата бе интегрирана в продукта на фондация Еклипс през декември 2002. Това допринесе AspectJ да се превърне в един от най-широко разпространените аспектно-ориентирани езици.
   През март 2005, AspectWerkz се сля с AspectJ в единен език.
   Всички валидни Java програми са и валидни AspectJ програми, но AspectJ позволява на програмистите да дефинират специални конструкции наречени аспекти. Аспектите могат да съдържат няколко възможности недостъпни в стандартните класове. Те са:

inter-type declarations — позволяват на програмиста да добавя методи, полета или интерфейси в съществуващи класове отвътре на аспекта. Този пример добавя acceptVisitor метод към Point клас:
aspect VisitAspect { Point.acceptVisitor(Visitor v) { v.visit(this); } }

pointcuts — позволяват на програмиста да дефинира множество от съединени точки. Всички точки са логически изрази, които изчисляват истина всеки път, когато точката на съединяване се срещне. Този pointcut прихваща всички изпълнения на всеки метод, който започва със set в обекта от тип Point:

pointcut set() : execution(* *.set*(..) ) && this(Point);

advice — позволява на програмиста да специфицира какво действие да се изпълни когато pointcut е пресметнат като истина. Действията могат да се изпълнят преди, след или около точката на съединяване. В примера advice рефрешва дисплея всеки път, когато нещо в Point изпълнява set, използвайки pointcut-а деклариран по-нагоре:

after () : set() { Display.update(); }

   Компилирането на AspectJ програма включва и допълнителен етап в сравнение с не-аспектно-ориентираните езици. Този етап се нарича уейвинг . Уейвинга се среща след като нормалната компилация на неаспектен или базов код приключи. Уейвинг процеса взема аспектите и определя къде advice може да се приложи най-подходящо в кода. Уейвинга може да се появи веднага след компилацията или този процес може да се забави докато класовете се заредят в JVM. Този процес е познат като load-time weaving.
   Най-широко използвания и ефикасен компилатор за AspectJ се поддържа в AspectJ проекта, но има и друг – по-обширен и ориентъран към научноизследователска дейност компилатор, нарича се Aspect Bench Compiler, или abc.
AspectJ
Чети още за :
Машинните езици
Асемблери
Forth
ALGOL
PILOT
Apl
PL/1
LOGO
Pascal
Prolog
Ada
MODULA - 2
C
C++
Perl
Bach
HTML и XHTML
Python
Visual Basic
Java
PHP
Delphi
AspectJ
Приложения - ABC