Einfache Bean-Mappings mit MapStruct 1.2

Größe: px
Ab Seite anzeigen:

Download "Einfache Bean-Mappings mit MapStruct 1.2"

Transkript

1 t Frankfurt am Main Thomas Much Einfache Bean-Mappings mit MapStruct #ittage

2 Wer steht hier vorne? Thomas Much Agile Developer Coach & XP Coder (Java et al.) Mag coole kleine Tools & Libs (und erzählt gerne darüber #ittage

3 Java und Beans, eine lange Geschichte Form JPA Typsicheres, Beans DTOs POJOs Entities schnelles Bean-Mapping! JavaBeans JAXB Entities

4 Klassische Architekturen (J2EE)

5 Was Java EE & Co. versprechen

6 Die Realität

7 Moderne Realität! Domain Model A Transport Model A Domain Model B Bounded Context A Bounded Context B

8 Das = "CUSTOMERS") public class Customer { public class CustomerDTO Long id; long id; long customerid; String customerid; String name; String Title title; String title; getters and setters! getters and setters!

9 kann aufwendig werden DTO JPA Entity REST Entity JAXB Entity View Bean

10 Mapping-Implementation wie? Selber programmieren Alle Getter/Setter von Hand aufrufen Eigene Reflection-Routinen Reflection-basierte Bibliotheken: Apache BeanUtils, Dozer, Probleme: Aufwand, fehlende Typsicherheit, Performance

11 Performance Performance!

12 Annotationsprozessor, der Mapping-Code (Quelltext!) generiert. Keine Reflection! Typsicher und schnell. Mind. Java 6, spezielle Unterstützung für Java 8+ Minimale Laufzeitabhängigkeit (< 20 K) bzw. gar keine (je nach Komponentenmodell)

13 Versionen MapStruct 1.0 (2015) MapStruct 1.1 (2016) MapStruct 1.2 (2017)

14 JARs (Dependencies) Java 8+ Java 6 / 7 Java 6+, unnötig zur Laufzeit

15 Beispiel JPA-Entity = "CUSTOMERS") public class Customer { public class CustomerDTO Long id; long id; long customerid; String customerid; String name; String Title title; getters and setters! Alle public-properties sollen gemappt werden (auch aus Oberklassen) String title; getters and setters!

16 Wünsch dir was! public interface CustomerMapper { CustomerDTO customer2dto(customer customer);

17 Wünsch dir = "cdi") public interface CustomerMapper { CustomerDTO customer2dto(customer private CustomerMapper mapper; CustomerDTO dto = mapper.customer2dto( customer );

18 Die Implementation generieren Wie erzeugen wir aus dem Interface die Mapping-Implementation? Speichern z.b. in Eclipse. Genauer: Compiler aufrufen (z.b. via Maven/Gradle) Annotationsprozessor erledigt den Rest! Live Demo

19 @Generated( value = "org.mapstruct.ap.mappingprocessor", date = " T16:41: ", Generierter Quelltext comments = "version: Beta3, compiler: Eclipse JDT (IDE)..." public class CustomerMapperImpl implements CustomerMapper public CustomerDTO customer2dto(customer customer) { if (customer == null) { return null; Thread-sicher. CustomerDTO customerdto = new CustomerDTO(); customerdto.setcustomerid(string.valueof(customer.getcustomerid())); if (customer.getid()!= null) { customerdto.setid(string.valueof(customer.getid())); Clean Code. Leicht zu lesen. customerdto.setname(customer.getname()); if (customer.gettitle()!= null) { return customerdto; sind optional

20 Kein Injection-Container? Kein public interface CustomerMapper { CustomerMapper INSTANCE = Mappers.getMapper( CustomerMapper.class ); CustomerDTO customer2dto(customer customer); CustomerDTO dto = CustomerMapper.INSTANCE.customer2DTO( customer );

21 Typ- (& Wert-) Sicherheit WARN / ERROR / IGNORE Policy global setzen oder pro Mapper (oder Default verwenden)

22 Grundlegende public interface dateformat="dd.mm.yyyy") ) CustomerDTO customer2dto(customer customer);

23 Enum-Werte public interface CustomerMapper source="<any_unmapped>") DtoTitle title2dtotitle(title title); CustomerDTO customer2dto(customer customer); Siehe MappingConstants

24 Viele implizite Umwandlungen Primitive Datentypen Wrapper (inkl. null-checks) Number-Typen (incl. Big ) andere Number-Typen & Präzisionen String so ziemlich alles (inkl. Enums & Date/Number-Formate) Date/Calendar Joda Java 8 Date/Time JAXB Elemente, Collections

25 public interface CustomerMapper { CustomerDTO customer2dto(customer public class Customer { Das ist alles! Address address; other properties getters and setters!

26 Referenz-Mapping public interface CustomerMapper { CustomerDTO customer2dto(customer customer); AddressDTO address2dto(address address);

27 Andere Mapper public interface CustomerMapper { CustomerDTO customer2dto(customer public interface AddressMapper { AddressDTO address2dto(address address);

28 Eigener public interface CustomerMapper { CustomerDTO customer2dto(customer customer); default AddressDTO address2dto(address address) { AdressDTO dto = new AddressDTO(); custom mapping code return dto; Alternativ mit einer abstrakten Klasse

29 Alten Mapping-Code public interface CustomerMapper { CustomerDTO customer2dto(customer customer); public class LegacyAddressMapper { public AddressDTO address2dto(address address) { custom mapping code return dto; Default Constructor oder statische Mapping- Methode nötig.

30 Mehrere public interface PrintLabelMapper source="address.city") PrintLabelDTO customeraddress2dto( Customer customer, Address address); Pfad-Ausdrücke können generell in "source" und "target" verwendet werden.

31 Updates & public interface CustomerMapper { CustomerDTO customer2dto(customer customer); Alternativ void updatecustomerdto(customer CustomerDTO dto); Target-Typ als Max. Rückgabe Customer dto2customer(customerdto dto);

32 Mappings public interface CustomerMapper ) CustomerDTO customer2dto(customer void updatecustomerdto(customer CustomerDTO Customer dto2customer(customerdto dto);

33 Context-Parameter Aufruf eigenem Code public interface CustomerMapper { CustomerDTO customer2dto(customer Locale locale); Wird in der generierten Implementation durchgereicht! AddressDTO address2dto(address Locale locale);

34 Eigene Mapper mit public class JpaEntityMapper private EntityManager manager; public <T extends BaseEntity> T resolve(long Class<T> entityclass) { return (id!= null)? manager.find(entityclass, id) : null;

35 Bean-Fabriken public class DtoFactory { public CustomerDTO createcustomerdto() { return new CustomerDTO(); public class EntityFactory { public <T extends BaseEntity> T createentity(@targettype Class<T> entityclass) { return entityclass.newinstance();

36 Streams & Collections von public interface CustomerMapper { CustomerDTO customer2dto(customer customer); List<CustomerDTO> list2list(list<customer> customer); List<CustomerDTO> array2list(customer[] customer); CustomerDTO[] set2array(set<customer> customer); List<CustomerDTO> stream2list(stream<customer> cust); Stream<CustomerDTO> set2stream(set<customer> cust);

37 Streams & Collections von public interface StreamCollectionMapper { Set<Long> int2long(stream<integer> stream); Stream<Long> int2long(list<integer> List<String> date2string(list<date> Map<String,String> map2map(map<long,date> map);

38 Exceptions Jede Checked Exception, die nicht an der Mapping-Methode deklariert ist, wird als RuntimeException weitergeworfen.

39 In Mapping-Aufrufe wird mitgeliefert aber besser CDI-Decorators verwenden.

40 MapStruct SPI Accessor Naming Strategy (Zugriffsmethoden) anpassen z.b. Fluent API statt Getter/Setter Mapping-Ausnahmen Bestimmte Typen vom automatischen Mapping ausschließen

41 Viele weitere Möglichkeiten Konstante Werte & Java-Ausdrücke als "source". Default-Werte, wenn die Quelle null ist. Reihenfolge von Setter-Aufrufen ("dependson"). Angepasste null-prüfungen & Default-null-Werte. Zentrale Mapping-Konfigurationen Auswahl mehrdeutiger Mapping-Methoden per Qualifier oder Name

42 Integration in Build-Tools javac SPI MapStruct einfach auf den Classpath packen! Maven, Ant, Gradle MapStruct-Dokumentation enthält (einfache) Setup-Anleitung: MapStruct-Dependency hinzufügen, Annotationsprozessor aktivieren.

43 Eclipse Plug-in Code Completion Quick Fixes

44 IntelliJ Plug-in Code Completion Goto Declaration Find Usages

45 Neu in MapStruct 1.2 Unterstützung für Java 8 Streams. Mappings für public-felder. Automatische Generierung von Sub-Mapping-Methoden. Integration mit Project Lombok. Unterstützung für Java 9 (experimentell).

46 Lombok vs. public interface CustomerMapper { CustomerDTO customer2dto(customer public class CustomerDTO { private long id; private String customerid; private = "CUSTOMERS") public class Customer Long id; private String title; Getter und Setter!

47 Lombok vs. public interface CustomerMapper { Manipuliert AST- Bytecode CustomerDTO customer2dto(customer customer); Generiert public class CustomerDTO { private long id; private String customerid; private String = "CUSTOMERS") public class Customer Long id; private String title; Getter und Setter!

48 MapStruct Fazit Hervorragend produktiv einsetzbar! Generierter Code ist schnell, einfach und lesbar. Flexible (Custom-)Mappings. Einfache Einbindung in div. Komponentenmodelle. Ausführliche und gut geschriebene Dokumentation.

49 Neugierig geworden?

50 Die Entwickler: Danke!

51 t Frankfurt am Main Vielen Dank! #ittage

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS?

WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS? WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS? Gerrit Brehmer, Karlsruhe Auf der Arbeit: Software-Entwickler/Architekt ( / Projektleiter) bei der inovex GmbH In der Freizeit: Smart Home BEAN-MAPPING: EINSATZ

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Bean-Mapping mit MapStruct Thomas Much @thmuch www.muchsoft.com www.jughh.de 1 Java und Beans, eine lange Geschichte 1995 Form Beans 1998 DTOs 1999 POJOs 2000 JPA- Entities 2006 Typsicheres, schnelles

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring? oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Auszug aus JAX-WS Folien

Auszug aus JAX-WS Folien Auszug aus JAXWS Folien Dieses Dokument ist ein Auszug aus unserem Skript zur Java Web Services Schulung. Es dient lediglich als Beispiel für unsere Kursunterlagen. Thomas Bayer Hauptstraße 33 75050 Gemmingen

Mehr

Persistenz. Ralf Gitzel

Persistenz. Ralf Gitzel Persistenz Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Grundkonzepte Entity Beans Meine erste Entity Entity-Manager Lernziele Übungsaufgabe 3 Grundkonzepte

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

Mit Java von der Datenbank in den Browser Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart

Mit Java von der Datenbank in den Browser Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart Mit Java von der Datenbank in den Browser Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH

Mehr

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Modulare Anwendungen und die Lookup API Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Die Notwendigkeit modularer Anwendungen Die Notwendigkeit modularer

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

Eclipse und EclipseLink

Eclipse und EclipseLink Eclipse und EclipseLink Johannes Michler Johannes.Michler@promatis.de PROMATIS, Ettlingen Zugriff auf Oracle Datenbanken aus Eclipse RCP Anwendungen via EclipseLink 18.09.2009 1 Gliederung Eclipse als

Mehr

Java Beans. http://java.sun.com/beans/

Java Beans. http://java.sun.com/beans/ Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Gregor Raschke 2008 HIBERNATE. Eine Einführung 1 HIBERNATE Eine Einführung Inhalt 2 Einleitung Beispielkonfiguration Die hibernate.cfg.xml Eine Beispieltransaktion Abfragemöglichkeiten JPA und Hibernate Ressourcen und Quellen Einleitung (1) - Geschichtliches

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 1 von 43 Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 27.11.11 Agenda Einleitung Ist-Zustand Bookstore Was ist Hibernate? Wie funktioniert Hibernate? Was ist Spring? Architektur

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Project Lombok in Action , Vitaly Markin

Project Lombok in Action , Vitaly Markin Project Lombok in Action 25.08.2012, Copyright 2012 2008 anderscore GmbH whoami Diplom-Informatiker (Uni Bonn) Seit > 12 Jahren Java-Programmierer Software Engineer bei anderscore GmbH Unternehmen mit

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold Codegeneratoren mit Xtend2 11.04.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was ist Xtend2? 2. Xtend2 Konzepte 3. Hands On! 3 4 8 20 2 Was ist Xtend2? Funktionale, objektorientierte Sprache

Mehr

Multimedia im Netz Wintersemester 2012/13

Multimedia im Netz Wintersemester 2012/13 Multimedia im Netz Wintersemester 2012/13 Übung 10 Ludwig-Maximilians-Universität München Multimedia im Netz WS 2012/13 - Übung 10-1 Lösung zu Übungsblatt 08 Ludwig-Maximilians-Universität München Multimedia

Mehr

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle Dominik Helleberg inovex GmbH Auf Augenhöhe mit Android Studio und Gradle Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+ The new Dream Team Gradle + Android

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

Übung 1: Object Inspector

Übung 1: Object Inspector Übung 1: Object Inspector Es ist ein System zu entwickeln, mit dem man Objektstrukturen bezüglich ihrer Properties analysieren und dann in einem Tree Viewer (JTree) anzeigen und bearbeiten kann. Properties

Mehr

Operation am offenen Herzen

Operation am offenen Herzen Operation am offenen Herzen Case Study zur erfolgreichen JEE-7 Migration Dirk Ehms, GameDuell GmbH GameDuell Plattform Topologie Classic Platform Social Platform 64x Frontend Server OpenMQ 16x Frontend

Mehr

Einführung in die Modelltransformation mit Xtend

Einführung in die Modelltransformation mit Xtend Einführung in die Modelltransformation mit Xtend 12. Dezember 2012 Taentzer Modellgetriebene Softwareentwicklung 297 Überblick Xtend: Eine statisch getypte Sprache, die zur Modellzu-Text-Transformation

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Software Engineering II

Software Engineering II Software Engineering II Wintersemester 12/13 Fachgebiet Software Engineering Installation der MWE Plugins Von der Juno Update Site installieren (falls noch nicht vorhanden): MWE SDK Xpand SDK 2 TFD Projekt

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

RAP vs. GWT vs. GAE/J + jquery. Web Technologien im Verlgeich

RAP vs. GWT vs. GAE/J + jquery. Web Technologien im Verlgeich RAP vs. GWT vs. GAE/J + jquery Web Technologien im Verlgeich RAP vs GWT vs jquery Dominik Wißkirchen 30. Oktober 2010 Abkürzungen RAP AJAX RWT Rich AJAX Platform Asynchronous JavaScript and XML RAP Widget

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Validation und Quick Fixing mit Xtend. 3. Dezember 2014

Validation und Quick Fixing mit Xtend. 3. Dezember 2014 Validation und Quick Fixing mit Xtend 3. Dezember 2014 175 Überblick Tuning der Xtext-generierten Editoren Validierung mit OCL auf der abstrakten Syntax mit Xtend auf der konkreten Syntax Quick Fixes mit

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Moderne Web- Anwendungen mit

Moderne Web- Anwendungen mit Moderne Web- Anwendungen mit Oliver.Damm@akquinet.de September 2013 Web- Anwendungen mit Vaadin???

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke Quellcode-Repräsentation in Eclipse Seminarvortrag PG Reclipse Jan Rieke Gliederung Motivation Architektur von Eclipse Quelltext-Repräsentation in Eclipse Java-Modell Java DOM/AST Zusätzliche Konzepte

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Codegenerierung mit Xtend. 21. Januar 2015

Codegenerierung mit Xtend. 21. Januar 2015 Codegenerierung mit Xtend 21. Januar 2015 Überblick Xtend bietet einen Template-basierten Ansatz zur Codegenerierung Xtend enthält eine spezielle Template-Sprache. Das Modell kann beliebig benutzt werden,

Mehr

Poseidon for UML. Einführung. Andreas Blunk

Poseidon for UML. Einführung. Andreas Blunk Poseidon for UML Einführung Andreas Blunk Gliederung 1) Editionen/Lizenzen 2) Die Programmoberfläche 3) Modelle speichern 4) Einführung am lebenden Objekt 5) Generierung (Doc & Code) 6) Funktionsumfang

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

10. OLAPLINE-Anwendertreffen

10. OLAPLINE-Anwendertreffen 10. OLAPLINE-Anwendertreffen 26. und 27. April 2017 Schloss Garath Düsseldorf Zwei Tage Weiterbildung und Networking integriert: Vorträge, Workshops und Erfahrungsaustausch rund um TM1 JAVA EXTENSIONS

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Florian Rappl. TypeScript

Florian Rappl. TypeScript Florian Rappl TypeScript Profil Freiberuflicher IT-Berater Doktorand Theoretische Physik Microsoft MVP für Visual C# CodeProject MVP Kurzer Abriss Aufschwung von JS Vielzahl von Bibliotheken / Code Größere

Mehr

Überblick. Java 5. Java 6. Java 7. Referenzen. neue Sprachfeatures Erweiterungen Klassenbibliothek. Erweiterungen Klassenbibliothek

Überblick. Java 5. Java 6. Java 7. Referenzen. neue Sprachfeatures Erweiterungen Klassenbibliothek. Erweiterungen Klassenbibliothek Neuerungen in Java 5/6/7 Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen Klassenbibliothek Java 7 Java wird Open Source Referenzen Stefan Bühler für InfoPoint

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Feature-Komposition auf Bytecode-Ebene

Feature-Komposition auf Bytecode-Ebene Feature-Komposition auf Bytecode-Ebene Claus Hunsen Sergiy Kolesnikov Sven Apel FOSD-Treffen 2012 Feature-Komposition Quellcode-Komposition Feature-Module (Quellcode) ➊ Komposition Variante (Quellcode)

Mehr

Artem Eger. Build-Systeme in java Maven & ANT

Artem Eger. Build-Systeme in java Maven & ANT Artem Eger Build-Systeme in java Maven & ANT Gliederung (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven (5) Praxisbeispiel Maven (6) Ausblick 2/31 (1) Motivation

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

Rapid Java wie mit Forms

Rapid Java wie mit Forms DOAG Konferenz 2011 Rapid Java wie mit Forms Java aktuell: XDEV 3 ist die erste professionelle Java IDE für Rapid Application Development. Viele RAD-Funktionen und die Arbeitsweise damit erinnern sehr

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

als Alternative zu REST Manuel

als Alternative zu REST Manuel als Alternative zu REST Manuel Mauky @manuel_mauky Single-Page-Apps und mobile Apps API Wie kommen die Daten zum Client? API? Klassisch: REST/Hypermedia zahlreiche Ressourcen, jeweils über URIs erreichbar

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Programmieren I. Strategie zum Entwurf von Klassen. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Objektorientierte Sichtweise: Mit welchen Objekten habe ich es in einem Programm

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Das Model View Controller (MVC) Konzept

Das Model View Controller (MVC) Konzept Das Model View Controller (MVC) Konzept Ziel: Erhöhung der Flexibilität und Reduktion der Komplexität von GUI-Programmen durch Standard- Struktur (MVC-Pattern). Geht zurück auf Smalltalk. View 1 View 2

Mehr

Hibernate und Elasticsearch Von 0 auf 100 in 40 Minuten

Hibernate und Elasticsearch Von 0 auf 100 in 40 Minuten 1 Hibernate und Elasticsearch Von 0 auf 100 in 40 Minuten Gunnar Morling, Red Hat 2 Gunnar Morling Opensource-Softwareentwickler bei Red Hat Div. Hibernate-Projekte Spec Lead für Bean Validation 2.0 Andere

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Geschäftskomponenten mit EJB 3.1

Geschäftskomponenten mit EJB 3.1 Geschäftskomponenten mit EJB 3.1 Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Kurt Fastner Sommersemester 2012 Inhalt Was ist EJB Die verschiedenen EJB-Typen/Komponenten Applikationsserver,

Mehr

Es wird das Struts <html:options> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Es wird das Struts <html:options> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht. Struts Code Peaces Element Es wird das Struts Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht. Allgemeines Autor: Sascha Wolski Sebastian Hennebrüder

Mehr

Überblick. Klassen Optionale Typen DOM. Optionale Parameter Klassen. Einführung. 2 Motivation 3 Werkzeuge 4 Demonstration 5 Dart

Überblick. Klassen Optionale Typen DOM. Optionale Parameter Klassen. Einführung. 2 Motivation 3 Werkzeuge 4 Demonstration 5 Dart Eine kurze Lehrstuhl für Datenmanagement und -exploration RWTH Aachen Proseminar SS 2012 1 / 17 Überblick 1 2 3 4 5 6 7 8 2 / 17 1 -basierte Programmiersprache für Webanwendungen Entwickelt von Google

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Marc Philipp. Senior Software Karlsruhe. JUnit Maintainer seit Web:

Marc Philipp. Senior Software Karlsruhe. JUnit Maintainer seit Web: JUnit 5 Marc Philipp Senior Software Engineer @ Karlsruhe JUnit Maintainer seit 2012 Twitter: @marcphilipp Web: http://www.marcphilipp.de Programmiermodell DEMO Meta Annotations Annotationen können miteinander

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Fragen Arthur Zaczek. Okt 2017

Fragen Arthur Zaczek. Okt 2017 Arthur Zaczek Okt 2017 1 Ihre Fragen 2017 2 Allgemeines 2.1 Map vs. Dictionary Was ist der Unterschied zwischen einer Map und einer Dictionary? Laut Doku soll ein Dictionary typesafe sein, jedoch nahm

Mehr