Sie befinden sich hier: Home » Seminare » Java » ASPECTJ

Aspektorientierte Programmierung mit AspectJ

Kursziele

Die Einheit der Modularisierung in der Objektorientierung ist eine Klasse (Daten und Verhalten), aber nicht alle Belange sind mit diesem Konstrukt sauber zu modularisieren; in der Praxis kommen weitere querschneidende Verantwortlichkeiten dazu. Einige typische Beispiele sind Logging, Observierung und Transaktionsmanagement. Symptomatisch sind vor allem ähnliche oder identische Codefragmente, die sich in der gesamten Anwendung wiederholen und Fragmente mit unterschiedlichen Verantwortlichkeiten, die innerhalb einer Klasse vermischt sind. Das Resultat ist eine zerstörte Modularisierung, die Verständlichkeit, Wartung und Wiederverwendung erschwert. Die Modularisierungslücken können durch Aspekt-orientierte Programmierung (AOP), eine Weiterentwicklung der objektorientierten Programmierung (OOP), geschlossen werden. Die Kursteilnehmer erlernen, Aspekte in eigenen Projekten zu erkennen und mit Hilfe der AOP-Technologie sauber zu modularisieren. Das AOP-Seminar baut auf der aktuellen Version von AspectJ 5 auf, einer aspektorientierten Erweiterung der Programmiersprache Java. Als Entwicklungsumgebung kommt Eclipse mit AspectJ Development Tools (AJDT) zum Einsatz.

Zielgruppe

Software-Entwickler

Inhalte

  • Einführung in die Aspektorientierung
    • Crosscutting Concerns (Querschnittsbelange) am Beispiel von Logging
    • Probleme in OOP: Tangling und Scattering
    • Join-Point (Verbindungspunkt)
    • Pointcut (Schnittpunkt)
    • Advice (Empfehlung)
    • AOP als Erweiterung von OOP
    • Symmetrischer/Asymmetrischer Ansatz
    • Frameworks: AspectJ, JBoss AOP, AspectWerkz, Spring AOP
  • AspectJ
    • AspectJ über Kommandozeile (ajc-Compiler) und Ant
    • @Aspect-Annotationen
    • Eclipse und die AspectJ Development Tools (AJDT)
    • Generics in Java 5 und AspectJ 5
  • Join-Points in AspectJ
    • Strukturelle und Kontrollflussbezogene Join-Points
    • call(), execution, Unterschiede
    • Setter/Getter Operationen: get()/set()
    • Exception-Jandler Join-Point handler()
    • initialization(), preinitialization(), staticinitialization()
    • Join Point Modifizierer
    • Wildcards in AspectJ
    • Operatoren Oder (||), Und (&&) und Nicht (!)
    • Signaturen der Typen, Methoden, Ausnahmen
    • Kontextzugriff (thisJoinPoint(), thisJoinPointStaticPart(), getSourceLocation()
    • Kovarinante Methoden und Join-Point-Matching
  • Pointcuts in AspectJ
    • this, target, args
    • Argumente, Autoboxing und variable Argumentlisten (Varargs)
    • cflow(), cflowbelow(), withincode(), within(), if(), adviceexecution()
    • Pointcut Parameter
    • Anonyme Pointcuts
  • Advice und Kontexte
    • Advice-Typen: Before-Advice, After-Advice, Around-Advice
    • Vorrangregeln bei Advices und zirkuläre Abhängigkeiten
    • Intertype Deklarationen
    • Aufzählungstypen (Enums).
  • Technische Realisierung und Metadaten
    • Load-Time Weaving
    • Runtime-Proxies
    • AjTypeSystem
    • Utility-Klasse Aspects und aspectOf(), hasAspect()
  • AspectJ in der Anwendung, Chancen und Risiken
    • Aspekte und Zustand
    • Konfigurationsmanagement
    • Classpath-Fragen
    • Aspekte und Wiederverwendbarkeit
    • Aspekte und Stabilität
    • Dynamische Aktivierung von Aspekten
    • Aspekte in Web-Anwendungen und Web-Services
    • Optimierungen und Laufzeitprobleme
    • Aspekte testen
    • Aspekte einführen und Refactoring
    • Aspect-oriented software design (ASOD)
    • Aspekte in Spring und Spring AOP
    • ajdoc: AspectJ-Doc Generator

Voraussetzungen

Der Kurs ›Java für Fortgeschrittene‹ oder ›Java für Umsteiger‹.

Seminarunterlagen

Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat.

Software

Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.4 eingesetzt (Paket Eclipse IDE for Java EE Developers). Auf Wunsch auch NetBeans oder andere Entwicklungsumgebungen.

Empfohlene Dauer

2 Tage, insgesamt 12 Zeitstunden