JUGM 07 - AspectJ
Upcoming SlideShare
Loading in...5
×
 

JUGM 07 - AspectJ

on

  • 1,083 views

 

Statistics

Views

Total Views
1,083
Views on SlideShare
1,077
Embed Views
6

Actions

Likes
0
Downloads
9
Comments
0

1 Embed 6

http://www.slideshare.net 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

JUGM 07 - AspectJ JUGM 07 - AspectJ Presentation Transcript

  • Bessere Software durch aspektorientierte Programmierung mit Java und AspectJ Stand: 26.11.2007
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Sprachumfang im Überblick Hello World Demo © Bessere Software durch AOP mit Java und AspectJ 26.11.2007 - Seite 10
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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