XDoclet ETIS SS05.

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Forschungszentrum Informatik
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
E-Commerce Shop System
Modellgetriebene Softwareentwicklung
Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Reflection API ETIS SS04.
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Seminar Modellgetriebene Softwareentwicklung Einführung Seminar modellgetriebene Softwareentwicklung WS 05/06 Dipl.-Inf. Nadine Fröhlich Prof. Dr.-Ing.
Eclipse - Entwicklungsumgebung und mehr ETIS SS05.
Das Test-Framework JUnit
Reflection API ETIS SS05.
Business Logik als EJB-Applikation Gruppe pea19 Raed IssaChristian KubanekHonoré Tiako.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Remote Methode Invocation (RMI)
Software Design Patterns Extreme Programming (XP).
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
Abstrakte Klassen, Interface
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Systementwicklungsprojekt:
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
08. September 2010Entwicklungsstrategien in Liferay 1 Christian Krause, URZ FSU Jena, IDM-Arbeitsgruppe.
Vortrag D. Braun, Praktikum. Übersicht Pleopatra API Pleopatra Tools Twitter Demonstration Ausblick.
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Flexible Datenstrukturen
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Eclipse Modeling Framework (EMF)
EPROG Tutorium #4 Philipp Effenberger
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Hibernate (OR-Mapping)
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Plugin Design Patterns in
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
AOP Lösung für Querschnittsaufgaben. Was ist AOP ? AOP ist kein Ersatz für OOP AOP ergänzt OOP AOP beinhaltet die Behandlung von Querschnittsaufgaben.
Lightning Talk von Andreas Güntzel Model Driven Software Development CODE GENERIERUNG MIT ANY.
Text Encoding Initiative Universität zu Köln Daten- und Metadatenstandards Seminarleitung: Patrick Sahle Seminarleitung: Patrick Sahle Referentin: Anna.
Tag-Libraries1 seit JSP Version 1.1 Sammlung selbst definierter Tags (Custom Tags) Tagdefinition: Body Tags halten sich an XML-Konvention Präfix bezeichnet.
Benutzerdefinierte Tags
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
MDA – Model Driven Architecture
Software - Testung ETIS SS05.
Karsten Risseeuw Filemaker Module FileMaker Konferenz 2014 Winterthur Filemaker Module Einführung in die Vorteile modularer.
Continuous Integration
, Claudia Böhm robotron*SAB Anwendungsentwicklung mit dem Java und XML basierten Framework robotron*eXForms Simple Application Builder.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
 Präsentation transkript:

XDoclet ETIS SS05

Gliederung Motivation Allgemeines Ablauf der Code-Generierung Aufbau Templates Beispiel Zusammenfassung Reflection API 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,...) Reflection API 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 Kosten sparen Einheitlicher Code durch Generierung Lernen, Lizenzkosten sind teuer Reflection API 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) Reflection API ETIS SS05 - Nadine Fröhlich

Allgemeines II Javadoc vs. XDoclet-Tags: Metadaten im Code - Vorteile: Javadoc besteht aus Name + Beschreibung /** @author etisAuthor */ XDoclet erweitert Javadoc um parametrisierte Tags (erhöhen die Ausdrucksstärke drastisch) /** @hibernate.id generator-class=“uuid.string“ */ Metadaten im Code - Vorteile: Metadaten und Code sind nicht getrennt Metadaten sind menschen- und maschinenlesbar Reflection API 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 Output File(s) XDoclet Merge files Temp- late Reflection API ETIS SS05 - Nadine Fröhlich

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

Aufbau II Subtask Beispiel Subtasks von ejbdoclet besteht u.a. aus: <localhomeinterface> <remoteinterface> <deploymentdescriptor> Subtasks eines Tasks: teilen oft Funktionalität nutzen oft selbe Tags im Code Reflection API 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 <XDtClass:className/>{ } Bodytags: haben Text zwischen Anfang und Ende <XDtMethod:forAllMethods> <XDtMethod:methodName/> </XDtMethod:forAllMethods> Reflection API 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 Reflection API ETIS SS05 - Nadine Fröhlich

Beispiel - TODO soll maschinenlesbar werden vorher: public void motivate(){ // TODO motivate students } in von XDoclet lesbarer Form /** * @todo motivate students */ // … Ejb.relation (Konvention namespace.tagname für Attribute) Reflection API ETIS SS05 - Nadine Fröhlich

Beispiel - Ant-Script I <!- - in init-Target gehören alle benutzten XDoclet-Tasks - -> <target name=“init“> <!- - benutzerdefinierter Task - -> <taskdef name = “documentdoclet“ classname=“xdoclet.modules.doc.DocumentDocletTask“ classpathref=“xdoclet.lib.path“ </target> Reflection API ETIS SS05 - Nadine Fröhlich

Beispiel - Ant-Script II <! - - eigentlcher XDoclet Task - - > <target name=“todo“ depends=“init“> <documentdoclet destdir=“todo“> <fileset dir=“${dir.src}“> <include name=“**/*.java“/> </fileset> <! - - subtask, macht die eigentliche Arbeit - -> <info/> </documentdoclet> </target> Reflection API ETIS SS05 - Nadine Fröhlich

Beispiel - Ausgabe Reflection API 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?) Reflection API ETIS SS05 - Nadine Fröhlich

Quellen Walls, C., Richards, N., XDoclet in Action, Manning Publications Co., Greenwich, 2004 Die XDoclet-Seite: http://xdoclet.sourceforge.net/xdoclet/ Reflection API ETIS SS05 - Nadine Fröhlich