Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XDoclet ETIS SS05. Reflection API2 ETIS SS05 - Nadine Fröhlich Gliederung Motivation Allgemeines Ablauf der Code-Generierung Aufbau Templates Beispiel.

Ähnliche Präsentationen


Präsentation zum Thema: "XDoclet ETIS SS05. Reflection API2 ETIS SS05 - Nadine Fröhlich Gliederung Motivation Allgemeines Ablauf der Code-Generierung Aufbau Templates Beispiel."—  Präsentation transkript:

1 XDoclet ETIS SS05

2 Reflection API2 ETIS SS05 - Nadine Fröhlich Gliederung Motivation Allgemeines Ablauf der Code-Generierung Aufbau Templates Beispiel Zusammenfassung

3 Reflection API3 ETIS SS05 - Nadine Fröhlich Motivation - Code Generierung I Problem: –immer komplexere Software aufgrund wachsender Anforderungen (Verteilung, Sicherheit, GUIs) Lösung-Stichworte: –Abstraktion –Separation of concerns –Komponentenorientierte Softwareentwicklung (lose Kopplung / Kohäsion) - z.B. EJBs Lösung-Probleme: –redundante Informationen in verschiedenen Dateien (z.B. EJB remote/home interface, deployment-Descriptor,...)

4 Reflection API4 ETIS SS05 - Nadine Fröhlich Motivation - Code Generierung II Lösung (eine gute :) –Schreiben einer Ressource (+ Annotationen) –Generierung der restlichen notwendigen Artefakte Vorteile: –schnellere Entwicklung –bessere Qualität, da Entwickler: –sich auf Business Logik konzentrieren können und –von fehleranfälligen, langweiligen Routinearbeiten befreit –Wiederverwendbarkeit –Änderungen an einer Stelle, d.h. schnelle Reaktion auf Probleme oder veränderte Anforderungen möglich

5 Reflection API5 ETIS SS05 - Nadine Fröhlich Allgemeines I Open source Tool, aus Javadoc hervorgegangen Code getriebenes Code-Generierungswerkzeug –Input: Java Source Code (+ Annotationen) –Output: Code, z.B. Java Code, SQL Scripte, Deployment Descriptoren, … ermöglicht attributorientierte Programmierung für Java, d.h.: –Javadoc-Kommentar mit XDoclet-Attributen (Metadaten) angereichert –XDoclet- Attribute: Javadoc Erweiterungen (sehen aus, arbeiten wie Javadoc-Attribute)

6 Reflection API6 ETIS SS05 - Nadine Fröhlich Allgemeines II Javadoc vs. XDoclet-Tags: –Javadoc besteht aus Name + Beschreibung etisAuthor */ –XDoclet erweitert Javadoc um parametrisierte Tags (erhöhen die Ausdrucksstärke drastisch) generator-class=uuid.string */ Metadaten im Code - Vorteile: –Metadaten und Code sind nicht getrennt –Metadaten sind menschen- und maschinenlesbar

7 Reflection API7 ETIS SS05 - Nadine Fröhlich Ablauf der Code-Generierung XDoclet parst Quellcode –Zugriff auf Attribute und Struktur der Quellen –übergibt Ergebnis Templates –daraus Code generiert Source files XDoclet Temp- late Merge files Output File(s)

8 Reflection API8 ETIS SS05 - Nadine Fröhlich Aufbau I Framework + Tasks (Generierungsanwendungen) –nur aus Ant zu starten Task –besteht aus Subtasks –Ant-Task –Beispiele: – Subtask –Erledigt eigentliche Code- Generierung durch Aufruf von Templates subtask XDoclet Ant task subtask Ant subtask XDoclet Ant task...

9 Reflection API9 ETIS SS05 - Nadine Fröhlich Aufbau II Subtask –Beispiel Subtasks von ejbdoclet besteht u.a. aus: – –Subtasks eines Tasks: –teilen oft Funktionalität –nutzen oft selbe Tags im Code

10 Reflection API10 ETIS SS05 - Nadine Fröhlich Templates I Muster / Prototypen des zu generierenden Codes Template-Dateien ähnlich JSP-Dateien –Enthalten Text und XML Tags XDoclettags beginnend mit XDt + Namensraum –Contenttags: produzieren Text public class { } –Bodytags: haben Text zwischen Anfang und Ende

11 Reflection API11 ETIS SS05 - Nadine Fröhlich Templates II Nutzerdefinierte Erweiterungen / Anpassungen der Templates durch mergepoints möglich –Einfügen von Templatefragmenten (ebenfalls xdt-Dateien) zur Laufzeit möglich Manchmal reichen vordefinierte Tasks nicht aus: –Template Engine erweiterbar –einfach eigene Tags zu schreiben (mit Java) –Konzept ähnelt Tag-Libraries in JSP

12 Reflection API12 ETIS SS05 - Nadine Fröhlich Beispiel - TODO soll maschinenlesbar werden vorher: public void motivate(){ // TODO motivate students } in von XDoclet lesbarer Form /** motivate students */ public void motivate(){ // … }

13 Reflection API13 ETIS SS05 - Nadine Fröhlich Beispiel - Ant-Script I

14 Reflection API14 ETIS SS05 - Nadine Fröhlich Beispiel - Ant-Script II

15 Reflection API15 ETIS SS05 - Nadine Fröhlich Beispiel - Ausgabe

16 Reflection API16 ETIS SS05 - Nadine Fröhlich Zusammenfassung Attributorientierter Code Generator für Java Metadaten im JavaDoc-Kommentar Leicht zu handhaben, pragmatisch, trotzdem mächtig erweiterbar Hinweis: –Codegenerierung nur sinnvoll, wenn nicht zu wenig Code –Nichts generieren, was man nicht versteht (bei Fehlern: Was ist Design Problem? Was ist Problem des Generators?)

17 Reflection API17 ETIS SS05 - Nadine Fröhlich Quellen Walls, C., Richards, N., XDoclet in Action, Manning Publications Co., Greenwich, 2004 Die XDoclet-Seite:


Herunterladen ppt "XDoclet ETIS SS05. Reflection API2 ETIS SS05 - Nadine Fröhlich Gliederung Motivation Allgemeines Ablauf der Code-Generierung Aufbau Templates Beispiel."

Ähnliche Präsentationen


Google-Anzeigen