Aspekt J

AspectJ ist eine Aspekt-orientierte Erweiterung, die an PARC für die javanische Programmiersprache geschaffen ist. Es ist in Eklipse-Fundament-Projekten der offenen Quelle verfügbar, sowohl eigenständig als auch in die Eklipse einheitlich. AspectJ ist die weit verwendete allgemeine Norm für AOP durch das Hervorheben der Einfachheit und Brauchbarkeit für Endbenutzer geworden. Es verwendet Java ähnliche Syntax und hat IDE Integrationen eingeschlossen, um crosscutting Struktur seit seiner anfänglichen öffentlichen Ausgabe 2001 zu zeigen.

Einfache Sprachbeschreibung

Alle gültigen javanischen Programme sind auch gültige Programme von AspectJ, aber AspectJ erlaubt auch Programmierern, spezielle Konstruktionen genannt Aspekte zu definieren. Aspekte können mehrere zu Standardklassen nicht verfügbare Entitäten enthalten. Diese sind:

  • Zwischentyp-Behauptungen — erlauben einem Programmierer, Methoden, Felder oder Schnittstellen zu vorhandenen Klassen aus dem Aspekt hinzuzufügen. Dieses Beispiel trägt bei (sieh Besuchermuster) die Methode zur Klasse:

Aspekt VisitAspect {\

leerer Point.acceptVisitor (Besucher v) {\

v.visit (das);

}\

}\

</Quelle>

  • pointcuts - erlauben einem Programmierer anzugeben schließen sich Punkten an (bestimmte Momente in der Ausführung eines Programms, wie Methode-Anruf, wenden Sie instantiation oder variablen Zugang ein). Alle pointcuts sind Ausdrücke (Quantifizierungen), die bestimmen, ob ein gegebener Verbindungslinie-Punkt zusammenpasst. Zum Beispiel, das Punkt-geschnittener vergleicht die Ausführung jeder Beispiel-Methode in einem Gegenstand des Typs, dessen Name beginnt mit:

Pointcut-Satz : Ausführung (* Satz * (..)) && dieser (Punkt);

</Quelle>
  • Rat - erlaubt einem Programmierer, Code anzugeben, um an einem durch einen pointcut verglichenen Verbindungslinie-Punkt zu laufen. Die Handlungen können vorher, danach, oder um den angegebenen Verbindungslinie-Punkt durchgeführt werden. Hier erfrischt der Rat die Anzeige jedes Mal, wenn etwas darauf mit dem pointcut gesetzt wird, der oben erklärt ist:

danach : Satz {\

Display.update ;

}\</Quelle>

AspectJ unterstützt auch beschränkte Formen der mit Sitz in pointcut statischen Überprüfung und des Aspekt-Wiedergebrauchs (durch das Erbe). Sieh AspectJ Handbuch für eine detailliertere Beschreibung der Sprache Programmieren.

Vereinbarkeit von AspectJ und Durchführungen

AspectJ ist entworfen worden, um auf viele Weisen, einschließlich der Quelle - oder das Bytecode-Weben und direkt im VM (virtuelle Maschine) durchgeführt zu werden. In allen Fällen wird das Programm von AspectJ in ein gültiges javanisches Programm umgestaltet, das in Java VM geführt ist. Irgendwelche durch Aspekte betroffenen Klassen sind mit den ungekünstelten Klassen binär-vereinbar (um Vereinbarkeit mit irgendwelchen Klassen aufrechtzuerhalten, die mit den ungekünstelten Originalen kompiliert wurden). Das Unterstützen vielfacher Durchführungen erlaubt der Sprache zu wachsen, als sich Technologie ändert, und mit Java vereinbar zu sein, Plattform-Verfügbarkeit sichert.

Der Schlüssel zu seinem Erfolg ist Technik gewesen, und Sprachentscheidungen haben vorgehabt, die Sprache verwendbar und Programme deployable zu machen. Die ursprüngliche Xerox-Durchführung von AspectJ hat das Quellweben verwendet, das Zugang zum Quellcode verlangt hat. Als Xerox den Code beigetragen hat, um Zu verfinstern, wurde AspectJ mit der Eklipse javanischer Bearbeiter und ein bytecode auf BCEL gestützter Weber wiederdurchgeführt, so konnten Entwickler Aspekte für den Code im binären (.class) Form schreiben. In dieser Zeit wurde die Sprache von AspectJ eingeschränkt, um eine Musterhauptsache pro Klasse für die zusätzliche Kompilation und Ladezeit zu unterstützen, webend. Das hat IDE Integrationen so antwortend gemacht wie ihre javanischen Kollegen, und es hat Entwicklern ermöglicht, Aspekte einzusetzen, ohne den bauen Prozess zu verändern. Das hat zu vergrößerter Adoption geführt, weil AspectJ verwendbar für ungeduldige javanische Programmierer und Unternehmensniveau-Aufstellungen geworden ist. Seitdem hat die Eklipse-Mannschaft Leistung und Genauigkeit vergrößert, hat die Sprache von AspectJ befördert, um Java 5 Spracheigenschaften wie generics und Anmerkungen und integrierte mit der Anmerkung artige Aspekte von reinem Java von AspectWerkz zu unterstützen.

Das Eklipse-Projekt unterstützt sowohl Befehl-Linie als auch Ameise-Schnittstellen. Ein zusammenhängendes Eklipse-Projekt hat die Eklipse IDE Unterstützung (AJDT) für AspectJ und andere Versorger der crosscutting Struktur fest verbessert. Die IDE Unterstützung für emacs, NetBeans und JBuilder ist gesunken, als Xerox sie in die offene Quelle gestellt hat, aber die Unterstützung für den JDeveloper des Orakels ist wirklich erschienen. IDE Unterstützung ist Schlüssel zum javanischen Programmierer-Verwenden AspectJ und Verstehen crosscutting Sorgen gewesen.

BEA hat beschränkte Unterstützung in einem VM für Aspekt-orientierte Erweiterungen angeboten, aber für im ganzen javanischen VM'S zu unterstützende Erweiterungen würde Abmachung durch den javanischen Gemeinschaftsprozess der Sonne verlangen (sieh auch das java.lang.instrument Paket verfügbar seit Java SE 5, der eine Art Übereinstimmungsbereich für die JVM Ladezeit-Instrumentierung ist).

Akademisches Interesse sowohl an der Semantik als auch an Durchführung von Aspekt-orientierten Sprachen hat AspectJ seit seiner Ausgabe umgeben. Die Hauptforschungsdurchführung von AspectJ ist der Bearbeiter von AspectBench oder Alphabet; es unterstützt Erweiterungen, für die Syntax und Semantik der Sprache zu ändern, und bildet die Basis für viele AOP-Experimente, dass die Mannschaft von AspectJ in Anbetracht seiner breiten Benutzerbasis nicht mehr unterstützen kann.

Viele Programmierer entdecken AspectJ als eine Ermöglichen-Technologie für andere Projekte, die sie, am meisten namentlich Spring AOP verwenden. Ein Projekt der Schwester Spring, Spring Roo, erhält automatisch Zwischentyp-Behauptungen AspectJ als seine Hauptcodegenerationsproduktion aufrecht.

Geschichte und Mitwirkende

Gregor Kiczales hat angefangen und hat Xerox PARC Mannschaft geführt, die schließlich AspectJ entwickelt hat; er hat den Begriff "crosscutting" ins Leben gerufen. Viert auf der Mannschaft hat Chris Maeda den Begriff "Aspekt-orientierte Programmierung ins Leben gerufen." Jim Hugunin und Erik Hilsdale (Xerox PARC Gruppenmitglieder 12 und 13) waren der ursprüngliche Bearbeiter und die Weber-Ingenieure, Mik Kersten hat die IDE Integration durchgeführt und hat die Eklipse AJDT Projekt mit Adrian Colyer (aktuelle Leitung des Projektes von AspectJ) und Andrew Clement (aktueller Bearbeiter-Ingenieur) angefangen.

Jonas Boner und Alex Vasseur haben das Projekt von AspectWerkz konstruiert, und haben später zum Projekt von AspectJ beigetragen, als es sich mit dem Anmerkungsstil von AspectWerkz und der Ladezeit-Webunterstützung verschmolzen hat.

Der Bearbeiter von AspectBench wurde entwickelt und wird als eine gemeinsame Anstrengung von Programming Tools Group an der Universität Oxford Rechenlaboratorium, Sable Research Group an der Universität von McGill und dem Institut für die Grundlagenforschung In der Informatik (BRICS) aufrechterhalten.

Bibliografie

Siehe auch

  • Aspekt-orientierte Programmierung
  • AspectWerkz
  • Frühlings-AOP (ein Teil des Frühlingsfachwerks)
  • Aspekt-orientierte Softwareentwicklung

Außenverbindungen

http://www.eclipse.org/aspectj/doc/released/progguide/index.html http://www.ibm.com/developerworks/java/library/j-aspectj

Quotient-Raum / Fahrzeugregistrierungsteller
Impressum & Datenschutz