Bessere Software durch
aspektorientierte Programmierung
mit Java und AspectJ
                         Stand: 26.11.2007
Gliederung


                 I.     Einleitung


                 II.    Was ist AOP?
                            Motivat...
Einleitung



    Vorstellung
     Heiko Seeberger
     36 Jahre
     Market Unit Manager of Enterprise Architecture bei m...
Gliederung


                 I.     Einleitung


                 II.    Was ist AOP?
                            Motivat...
Motivation



    Seperation of Concerns
      Herausforderung: Komplexität
      Ansatz: Problemstellung in überschaubare...
Motivation



    Modularisierung broken
      OO vermag i.d.R. nicht, alle Belange zu modularisieren.
      Manche Belang...
AOP-Konzepte



    AOP modularisiert Cross-cutting Concerns
     AOP führt neben Klassen Aspekte ein.
     Cross-cutting ...
AOP-Konzepte



    Weaving
     Herausforderung: Die separierten Belange wieder zusammenführen.
     Ansatz: Dieser Vorga...
Gliederung


                 I.     Einleitung


                 II.    Was ist AOP?
                            Motivat...
Sprachumfang im Überblick



    Hello World




                                                                         ...
Sprachumfang im Überblick



    Anatomie von Aspekten



                1        Dynamic cross-cutting



              ...
Dynamic cross-cutting



    Dynamische Aspekte von Aspekten
     Joinpoints sind Programmstellen, an denen Weaving ansetz...
Static cross-cutting



    Klassen „aufbohren“
     Hinzufügen von Feldern, Methoden und Konstruktoren.
     „Gewöhnliche...
Static cross-cutting



    Eltern adoptieren
     Typen erweitern, d.h. neue extends hinzufügen.
     Interfaces implemen...
Static cross-cutting



    Default-Implementierungen für Interfaces
     Hinzufügen von Feldern und Methoden-Implementier...
Static cross-cutting



    Eigene Compiler-Meldungen
     Anhand von statischen Pointcuts gibt der AspectJ-Compiler Fehle...
Gliederung


                 I.     Einleitung


                 II.    Was ist AOP?
                            Motivat...
Performance-Logging



    Ein Praxisbeispiel
     Reporting von Performance-Kennzahlen aus dem laufenden Betrieb.
     Me...
Design by Contract



    Verbindliche Schnittstellen
     Design by Contract: Klare Vorgaben, was vom API erwartet und ge...
Design by Contract



    ContractJ (www.aspectbrains.org/contractj)
     Bessere Lösung:
       Annotations markieren Con...
Design by Contract



    ContractJ
     Annotations sind ausdrucksstark. => Klare Kommunikation der Contracts.
     Annot...
JavaBeans Bound Properties



    PropertyChanges kommunizieren
     JavaBeans definieren PropertyChangeListener:
       „...
JavaBeans Bound Properties



    Active Beans (www.aspectbrains.org/activebeans)
     Einfachere Lösung:
       Annotatio...
Gliederung


                 I.     Einleitung


                 II.    Was ist AOP?
                            Motivat...
Fazit



    AOP bzw. AspectJ ist sehr nützlich
     AOP ermöglicht volle Seperation of Concerns und führt dadurch zu bess...
Herzlichen Dank!
                                                                       metafinanz
                       ...
Upcoming SlideShare
Loading in...5
×

JUGM 07 - AspectJ

523

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
523
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JUGM 07 - AspectJ

  1. 1. Bessere Software durch aspektorientierte Programmierung mit Java und AspectJ Stand: 26.11.2007
  2. 2. Gliederung I. Einleitung II. Was ist AOP? Motivation Konzepte und Begriffe III. Überblick über AspectJ „Hello World“ Sprachumfang im Überblick Tools IV. AspectJ in der Praxis Performance-Logging Design by Contract JavaBeans Bound Properties V. Optional: AspectJ Load Time Weaving und Eclipse Plug-ins VI. Fazit und Diskussion © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 2
  3. 3. Einleitung Vorstellung Heiko Seeberger 36 Jahre Market Unit Manager of Enterprise Architecture bei metafinanz OO-Kenntnisse seit 1993, Java seit 1999 Schwerpunkte: AspectJ, Eclipse und SOA Aktiver Open Source Contributor © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 3
  4. 4. Gliederung I. Einleitung II. Was ist AOP? Motivation Konzepte und Begriffe III. Überblick über AspectJ „Hello World“ Sprachumfang im Überblick Tools IV. AspectJ in der Praxis Performance-Logging Design by Contract JavaBeans Bound Properties V. Optional: AspectJ Load Time Weaving und Eclipse Plug-ins VI. Fazit und Diskussion © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 4
  5. 5. Motivation Seperation of Concerns Herausforderung: Komplexität Ansatz: Problemstellung in überschaubare und disjunkte „Häppchen“ (Belange) zerlegen. Ergebnis: Verständliche Anforderungen Klare Konzepte Hochwertige Lösungen Höherer Grad an Wiederverwendung => Modularisierung ist gut! Objektorientierung (OO) fördert Modularisierung: Packages Klassen Methoden … © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 5
  6. 6. Motivation Modularisierung broken OO vermag i.d.R. nicht, alle Belange zu modularisieren. Manche Belange durchsetzen die OO-Module: Cross-cutting Concerns. ClassA ClassB ClassC ConcernX ConcernX ConcernX Scattering: Belange sind auf mehrere Module verteilt. Tangling: Module enthalten mehrere Belange. => Die Software könnte noch besser (verständlicher, wartbarer , wiederverbendbarer etc.) sein. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 6
  7. 7. AOP-Konzepte AOP modularisiert Cross-cutting Concerns AOP führt neben Klassen Aspekte ein. Cross-cutting Concerns werden von Klassen in Aspekte verlagert. ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX => Jedes Modul behandelt genau einen Belang => Vollständige Modularisierung. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 7
  8. 8. AOP-Konzepte Weaving Herausforderung: Die separierten Belange wieder zusammenführen. Ansatz: Dieser Vorgang wird mit Weaving („Weben“) bezeichnet. ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX Ergebnis: Die vormals separierten Belange „spielen wieder zusammen“. Mehrere Strategien: Precompiler. Compile-time Weaving: Beim/nach dem Compilieren (Java). Load-time Weaving: Beim Class Loading (Java). © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 8
  9. 9. Gliederung I. Einleitung II. Was ist AOP? Motivation Konzepte und Begriffe III. Überblick über AspectJ „Hello World“ Sprachumfang im Überblick Tools IV. AspectJ in der Praxis Performance-Logging Design by Contract JavaBeans Bound Properties V. Optional: AspectJ Load Time Weaving und Eclipse Plug-ins VI. Fazit und Diskussion © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 9
  10. 10. Sprachumfang im Überblick Hello World Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 10
  11. 11. Sprachumfang im Überblick Anatomie von Aspekten 1 Dynamic cross-cutting 2 Static cross-cutting © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 11
  12. 12. Dynamic cross-cutting Dynamische Aspekte von Aspekten Joinpoints sind Programmstellen, an denen Weaving ansetzen kann, z.B. Methoden-Aufrufe, Feldzugriffe, Instantiierung etc. Pointcuts definieren bestimmte Mengen von Joinpoints, z.B. „alle Methoden-Aufrufe“ oder „alle Methoden-Aufrufe der Klasse X mit einem Parameter“ oder … Advices enthalten die Belange und steuern unter Bezug auf Pointcuts das Weaving, z.B. „Vor PointcutX soll dieser Belang eingewoben werden“. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 12
  13. 13. Static cross-cutting Klassen „aufbohren“ Hinzufügen von Feldern, Methoden und Konstruktoren. „Gewöhnliche“ Syntax mit vorangestelltem Klassennamen. Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 13
  14. 14. Static cross-cutting Eltern adoptieren Typen erweitern, d.h. neue extends hinzufügen. Interfaces implementieren, d.h. neue implements hinzufügen. Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 14
  15. 15. Static cross-cutting Default-Implementierungen für Interfaces Hinzufügen von Feldern und Methoden-Implementierungen zu Interfaces! Demo Macht gemixte Methoden direkt zugreifbar. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 15
  16. 16. Static cross-cutting Eigene Compiler-Meldungen Anhand von statischen Pointcuts gibt der AspectJ-Compiler Fehler oder Warnungen aus. Nützlich für die Qualitätssicherung: Nutzung von unerwünschtem Code verhindern. Einhalten von Richtlinien sicherstellen. Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 16
  17. 17. Gliederung I. Einleitung II. Was ist AOP? Motivation Konzepte und Begriffe III. Überblick über AspectJ „Hello World“ Sprachumfang im Überblick Tools IV. AspectJ in der Praxis Performance-Logging Design by Contract JavaBeans Bound Properties V. Optional: AspectJ Load Time Weaving und Eclipse Plug-ins VI. Fazit und Diskussion © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 17
  18. 18. Performance-Logging Ein Praxisbeispiel Reporting von Performance-Kennzahlen aus dem laufenden Betrieb. Messung der Ausführungsdauer von Anwendungsfällen. Kommt im Kernsystem der Allianz Versicherung zum Einsatz. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 18
  19. 19. Design by Contract Verbindliche Schnittstellen Design by Contract: Klare Vorgaben, was vom API erwartet und geliefert wird. Preconditions definieren die Erwartungshaltung. Postconditions beschreiben die Liefergarantien. Erfolgsfaktoren: Contracts müssen klar kommuniziert werden => Nutzer des API wissen Bescheid. Contracts dürfen nicht gebrochen werden können => Herausgeber des API kann sich verlassen. Die Umsetzung muss einfach sein. „Zweitbeste“ Lösung: Contracts in JavaDoc beschreiben. => Vollständig? Refactoring? Demo Contracts in den Implementierungen umsetzen, d.h. durch den Nutzer. => Verlässlichkeit? Mühsame Ansatz, oft redundanter Code. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 19
  20. 20. Design by Contract ContractJ (www.aspectbrains.org/contractj) Bessere Lösung: Annotations markieren Contracts. Aspekte implementieren Contracts. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 20
  21. 21. Design by Contract ContractJ Annotations sind ausdrucksstark. => Klare Kommunikation der Contracts. Annotations identifizieren und beschreiben Contracts gleichzeitig. => Vollständig und konsistent. Aspekte liegen in der Hoheit des API-Herausgebers. => Hohes Maß an Verlässlichkeit. Weiterführende Informationen siehe Eclipse Magazin Vol. 12 „Design by Contract“: http://www.metafinanz.de/fileadmin/Dokumente/Kontakt/2007_08_hsr_eclipse.pdf Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 21
  22. 22. JavaBeans Bound Properties PropertyChanges kommunizieren JavaBeans definieren PropertyChangeListener: „A PropertyChange event gets fired whenever a bean changes a bound property. You can register a PropertyChangeListener with a source bean so as to be notified of any bound property updates.“ Implementierung sehr mühsam, da viel „Glue Code“ zu schreiben: Listener registrieren und deregistrieren. Für jede Bound Property muss ein PropertChangeEvent gefeuert werden. Demo Trotz Hilfsklasse PropertyChangeSupport viel „Handarbeit“ erforderlich. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 22
  23. 23. JavaBeans Bound Properties Active Beans (www.aspectbrains.org/activebeans) Einfachere Lösung: Annotations markieren Klassen, deren Properties gebunden werden sollen. Demo Aspekte fügen mittels Static und Dynamic Cross-cutting den Glue Code ein. © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 23
  24. 24. Gliederung I. Einleitung II. Was ist AOP? Motivation Konzepte und Begriffe III. Überblick über AspectJ „Hello World“ Sprachumfang im Überblick Tools IV. AspectJ in der Praxis Performance-Logging Design by Contract JavaBeans Bound Properties V. Optional: AspectJ Load Time Weaving und Eclipse Plug-ins VI. Fazit und Diskussion © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 24
  25. 25. Fazit AOP bzw. AspectJ ist sehr nützlich AOP ermöglicht volle Seperation of Concerns und führt dadurch zu besserer Software. AspectJ ist eine reife und sehr mächtige AOP-Sprache für Java. Vorschlag für schrittweise Einführung: Eigene Compiler-Meldungen verwenden. Fertige Aspekte bzw. Aspekt-Libraries für Standard-Szenarien einsetzen. Eigene Aspekte für individuelle Cross-cutting Concerns erstellen. => Nutzen Sie AspectJ! Fragen und Antworten … © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 25
  26. 26. Herzlichen Dank! metafinanz Informationssysteme GmbH Leopoldstr. 146 80804 München phone: +49 89 360531-0 fax: +49 89 360531-15 kontakt@metafinanz.de www.metafinanz.de © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 26
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×