Diplomarbeit Tracing von Java-Anwendungen mit Hilfe aspektorientierter Programmierung Alvin Limengka 1 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Ablauf der Präsentation Motivation und Ziel Tracingansätze Tracing mit Hilfe aspektorientierter Programmierung Prototyp Fallbeispiel Zusammenfassung und Ausblick Diskussion 2 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Motivation und Ziel Ziel: Kamera Anw endung Anw endung Benutzer-ComputerInteraktion Fortfahren ? Fortfahren ? < Zurück Benutzer < Zurück Weiter > Weiter > Die im Programm durch die Benutzer-Interaktionen entstehenden Objekte und deren Dynamik sollen zur Laufzeit verfolgt und aufgezeichnet werden. (mit Hilfe aspektorientierter Programmierung) Mic Ziel: 00:01:30:118 computer 3 Hochschule für angewandte Wissenschaften Hamburg Die aufgezeichneten Informationen sollen anhand einer Zeitmarke referenziert werden können. Alvin Limengka 24.3.2004 Tracingansätze Interne Vorgänge eines Programms zur Laufzeit zu protokollieren Tracingansätze in Java Methode Code-Instrumentierung invasiv Modifizierung der Java-LaufzeitBibliothek Java Platform Debugger Architecture (JPDA) Aspektorientierte Programmierung (AOP) 4 Hochschule für angewandte Wissenschaften Hamburg Nicht invasiv Alvin Limengka 24.3.2004 Tracingansätze: Code-Instrumentierung Explizite Instrumentierung. z.B. mit eingefügten „Print“ Anweisungen im Quellcode public void Method() { System.out.print (….); // usw… Tracing-Information } public void Method() { Einbindung in ein LoggingFramework logger.info(….); // usw… Tracing-Information z.B. Log4J LoggingFramework Nachteile: - Quellcode muss verfügbar sein. - Anpassung bei Programmänderungen. - Es existiert kein allgemeiner Standard für den Inhalt der Tracingdaten. } 5 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracingansätze: Modifizierung der Java-Laufzeitbibliothek Instrumentierung der Java-Laufzeitbibliothek Java-Laufzeitbibliothek z.B. die Datei rt.jar im Verzeichnis jre/lib vom Java-JDK 6 Nachteile: - Quellcode der Bibliothek muss verfügbar sein. - Nur Bibliotheksaufrufe können verfolgt werden. - Wartbarkeit. - Es existiert kein allgemeiner Standard für den Inhalt der Tracingdaten. Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracingansätze: Java Platform Debugger Architecture (JPDA) Das Überwachende Programm Das Überwachte Programm JDI JVMDI Frontend Backend JDWP JVM1 JPDA besteht aus 2 Interfaces: Seit Java-SDK v1.3. Nachteil: Tracing mit JPDA: -Überwachung Java Virtual Machine Debug Interface der Anwendung Laufzeit-performanz Das überwachte Programm wird (JVMDI) ohne Instrumentierung. ausgeführt und Interface vom überwachenden - Java Debug (JDI) Programm über den JPDA zur Laufzeit beobachtet. Die Vorgänge 1 Protokoll: auf dem Debug überwachten Programm - Java Wire Protokoll (JDWP) werden dabei erfasst und aufgezeichnet. und 2 Software-Komponente: - Frontend - Backend JVM2 7 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracing mit AOP: Aspektorientierte Programmierung (AOP) Neue Programmierparadigmen Ergänzt die bestehenden Paradigmen Motivation: Modularisierung in komplexen Softwaresystemen zu verbessern 8 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracing mit AOP: Problem: Modularisierung Beispiel: Anwendungsbereich „Bankgeschäfte“ Konto Kunde Angestellter Common Concerns Crosscutting Concerns (Server side) Crosscutting Concerns (Client side) Die Rot-Farbe stellt die relevanten Codeabschnitte zum Aufrufen der Logging-Dienste (cross-cutting concerns) Kopplung Logging 9 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracing mit AOP: Modularisierung mit AOP OOP Ein Modul (z.B. eine Klasse) AOP Ein Modul (z.B. eine Klasse) Funktionaler Code Aspekt AspektCode kapselt Crosscutting concern Crosscutting concern Common concern 10 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracing mit AOP: AspectJ Erweiterung der Programmiersprache Java und implementiert den AOP Ansatz durch neue Konzepte und Sprachkonstrukte . AOP Ein Modul (z.B. eine Klasse) Aspekt Funktionaler Codes AspektCodes AspektWeber AspectJ-Sprache 11 Anwendung (Class-datei) AspectJ-Compiler Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Tracing mit AOP: Konzept Keine manuelle Instrumentierung Java-Anwendung .class -Dateien im JAR-Format 12 Gute Wartbarkeit + Trace-Aspekt AspektWeber Der Quellcode kann in der Binärform vorliegen. Hochschule für angewandte Wissenschaften Hamburg Java-Anwendung + Tracing – Funktionalität Optimierter Byte-Code Alvin Limengka 24.3.2004 Tracingansätze: Zusammenfassung Code-Instrumentierung Modifizierung der JavaLaufzeitbibliothek JPDA Ziele zu verfolgen: - Tracing ohne vorherige Instrumentierung - Bessere Wartbarkeit - Standard für den Inhalt der Tracingdaten Ziel zu verfolgen: Tracing mit AOP erfüllt alle der verfolgten Ziele - Performanterer Tracingansatz 13 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Prototyp: Systemarchitektur Java-Anwendung Konzept: Tracing mit AOP Schreiben der Tracingdaten in eine Log-Datei Log-Datei Java-Anwendung + Tracing-Funktionalität Input Statische Struktur analysieren Ergebnis Echtzeit Monitoring Funktion Die statische Struktur einer Java-Anwendung = Aufbau einer Java-Anwendung Java-Anwendung Analyzer Filter Java-Anwendung + Code Methoden Funktionalität Steuert Klassen Input Steuert Steuert Templates generieren Aspect Generator Pakete + AspectJ Tracer Compiler Tracing – Monitor TraceAspektAspect Weber TraceTrace-Aspekt AOP Tracing Prototyp 14 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Fallbeispiel Ereignisse Symbol Beschreibung Beschreibung | preinitialization >> initialization Aufrufstack Preinitialisierung eines Objekts bei Aufruf eines Kontruktors Eintritt eines Ereignisses Initialisierung eines Objekts bei Aufruf eines Konstruktors << call Austritt Constructor Aufrufeines einesEreignisses Konstruktors (x) execution Eintritt einer Ausnahmebehandlung Constructor Ausführung eines Konstruktors Method call Aufruf einer Methode Method execution Ausführung einer Methode Field get Lesende Zugriff auf einer Variabel Field set Schreibende Zugriff auf einer Variabel Exception handler Ausnahmebehandlung 15 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Fallbeispiel Übermittelte Information Fortlaufende Nummer Anw endung Zeit der Ausführung des Ereignisses, gemessen vom Start der Anwendung Typ des Ereignisses + Signatur Fortfahren ? Lokation im Code Übergabewert Rückgabewert < Zurück Weiter > Name der Klasse des Sendersobjekts Name der Klasse des Empfängersobjekts Senderzustand Empfängerzustand 00:01:30:118 Threadname Paketname 16 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Zusammenfassung & Ausblick • Problem: Mengen an Tracingdaten. Tracing große mit Code-Instrumentierung, modifizierte JavaLaufzeitbibliothek und JPDA Nachteile • Abhilfe: feinere Filterfunktion Abhilfe Tracing mit AOP • Nächste Version des AspectJ-Compilers: Ein lauffähiger Prototyp wurde implementiert erfolgreich - Ohne Kompilierung der Aspektcodes und der und funktionalen erprobt Codes. Nicht nurPerformanz auf den Aufruf die Ausführung einer Methode / - Bessere undund Speicherverbrauch. eines Konstruktors beschränkt. Aus den Tracingdaten können Botschaftenfluss von JavaObjekten rekonstruiert werden + Zustandsänderungen der Objekte zu verfolgen. 17 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Diskussion Jetzt können Fragen gestellt werden ☺ 18 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004 Ende Vielen Dank für Ihre Aufmerksamkeit 19 Hochschule für angewandte Wissenschaften Hamburg Alvin Limengka 24.3.2004