JUnit 5 Design und Architektur eines Frameworks
|
|
- Maja Neumann
- vor 6 Jahren
- Abrufe
Transkript
1 JUnit 5 Design und Architektur eines Frameworks
2 @johanneslink johanneslink.net
3 Softwaretherapeut "In Deutschland ist die Bezeichnung Therapeut allein oder ergänzt mit bestimmten Begriffen gesetzlich nicht geschützt und daher kein Hinweis auf ein erfolgreich abgeschlossenes Studium oder auch nur fachliche Kompetenz." Quelle: Wikipedia
4 JUnit 5 Initiator - zusammen mit Marc Philipp - und Core-Committer im ersten Jahr jqwik: Externe JUnit5-Test-Engine für Property- Based Testing
5 themenübersicht JUnit 5: Vision einer Plattform Architektur der Plattform Wie gut funktioniert die Vision? Extensibility: Zwei Ansätze im Vergleich
6 Warum braucht die Welt ein neues JUnit?
7
8 A Brief History of JUnit Runner Rules 2015 JUnit Lambda Campaign 2017 JUnit 5.0.0
9
10 Wartbarkeit beta-1
11
12 JUnit 4 "Architektur"
13 Erfolg von JUnit 4 als Plattform verhindert Weiterentwicklung von JUnit 4 als Werkzeug!
14 JUnit-5 Design-Ziel Trennung der Aspekte JUnit als Testwerkzeug und JUnit als Plattform JUnit 4 und 5 nebeneinander, um Adaption und Migration zu erleichtern
15 DIY Architecture: Step by Step
16 Allgemein erwünschte Eigenschaften eines Frameworks Usability Separation of Concerns Freie Kombinierbarkeit mit anderen Frameworks und Bibliotheken Erweiterbarkeit Abwärts- und Aufwärtskompatibilität Keine oder wenig Abhängigkeiten
17 Schritt 1: Trennung von Framework- Nutzung und Framework-Anbindern Nutzung (API): IDE: Anzeigen, Auswahl und Anstoßen von Tests Programmierer: Schreiben/Spezifizieren von Tests Anbinder (SPI) Interpretation von Testspezifikationen
18 junit-platform-launcher junit-platform-engine Launcher TestPlan discover(discoveryrequest) void execute(testplan) <<interface>> TestEngine discover() void execute() junit-jupiter JupiterTestEngine myproject test1
19 Trennung von Entdecken und Ausführen
20 Trennung von Entdecken und Ausführen
21 Schritt 2: Ständiger Fortschrittsbericht eines Testlaufs Events / Nachrichten statt Rückgabe eines Ergebnisses
22 TestEngine execute(request) ExecutionRequest <<interface>> TestDescriptor <<interface>> EngineExecutionListener void executionstarted(testdescriptor) void executionfinished(testdescriptor, result) children TestExecutionResult <<enum>> Throwable Status Successful Failed Aborted
23
24 Execution Listener
25 Schritt 3: Gleichzeitiger Einsatz mehrerer Test-Engines Jede Test-Engine hat ihre eigene API zur Testfallspezifikation Sevice-Provider-Mechanismus von Java zur Registrierung einer Test-Engine
26 junit-platform-launcher ServiceLoaderTestEngineRegistry Launcher TestPlan discover(discoveryrequest) void execute(testplan) junit-platform-engine <<interface>> TestEngine discover() void execute() junit-jupiter-api <<annotation>> org.junit.jupiter.api.test create junit-jupiter-engine JupiterTestEngine junit-vintage-engine myproject VintageTestEngine test1 test1 junit-4.12 <<annotation>> org.junit.test
27 Schritt 4: Leichte Serialisierbarkeit aller SPI-Objekte Notwendig um Inter-Prozess-Kommunikation zur ermöglichen UniqueId als verbindendes Element TestDescriptor vs Testidentifier und TestPlan
28 junit-platform-launcher TestPlan Set<TestIdentifier> getroots(identifier) Set<TestIdentifier> getchildren(identifier) Optional<TestIdentifier> getparent(identifier) <<interface>> TestExecutionListener executionstarted(testidentifier) identifiers <<immutable>> ExecutionListenerAdapter TestIdentifier <<interface>> TestDescriptor <<immutable>> UniqueId UniqueId append(type, value) children AbstractTestDescriptor <<immutable>> Segment String type String value segments <<interface>> EngineExecutionListener executionstarted(testdescriptor) junit-platform-engine
29 VINTAGE JUPITER THIRD PARTY PLATFORM
30 THIRD PARTY JUPITER VINTAGE PLATFORM
31 Andere Architekturaspekte API Lifecycle-Management mit Mögliche Status: Stable, Maintained, Experimental, Deprecated, Internal Test auf Zyklenfreiheit mit degraph Strikte Formattierungsregeln via checkstyle
32 Platform Usability Test-Engines nutzen und selbst entwickeln
33 Warum braucht die Welt mehr als zwei Test-Engines? Andere JVM-Sprache Anderes Spezifikationsmodell Anderes Ausführungsmodell Für Erweiterungen des Test-Modells genügt häufig eine Jupiter-Extension
34 Test-Engine benutzen 1. TestCompile-Dependency hinzufügen: org.myorg:my-engine:x.y.z 2. Tests schreiben
35 Test-Engine benutzen 1. TestCompile-Dependency hinzufügen: org.myorg:my-engine:x.y.z org.junit.jupiter:junit-jupiter-engine: Tests schreiben
36 Test-Engine Kochrezept 1. Compile-Dependencies hinzufügen 2. TestEngine-Interface implementieren 3. Engine registrieren 4. Tests in IDE starten
37 DEMO Die kleinste Test-Engine der Welt
38 git clone cd jax2017/empty-engine/ gradle test
39 dependencies { compile("org.junit.platform:junit-platform-engine:1.0.0 ) compile("org.junit.platform:junit-platform-commons:1.0.0") // For writing integration tests testcompile("org.junit.platform:junit-platform-launcher:1.0.0") } // Only necessary to enable IntelliJ support testruntime("org.junit.jupiter:junit-jupiter-engine:5.0.0")
40 Test-Engine registrieren /META-INF/services/ org.junit.platform.engine.testengine nano.nanoengine
41
42 TestEngine-Interface implementieren 1. Create TestEngine class 2. Implement discover() 3. Implement execute()
43 Was fehlt zu stärkerer Test-Engine? Nano kann von IDE ausgeführt werden, aber ist sehr beschränkt Test-Spezifikation durch Klassen und Methoden
44 public class A_tiny_test { final int theanswer = 42; public boolean this_should_return_true() { } return theanswer == 42; public boolean this_returns_false() { return theanswer == 43; } }
45
46
47 Tests in IDE identifizieren Theoretisch ist jedes zur Laufzeit ermittelbare Spezifikationsmodell umsetzbar Aber: Alles immer zu kompilieren ist für (manche) IDEs nicht realisierbar <<annotation>> org.junit.platform.commons.annotation.testable Meta-Annotation <<annotation>> org.junit.jupiter.api.test <<annotation>> TinyTest
48 Was geht noch? Ausführen von Dateien, URLs, und anderen Ressourcen jqwik.net: Property Testen in Java Specsy: Alles mit Lambdas Wrapper für Cucumber, Spock, Fitnesse etc
49 Tool-Support: State of the Union erforderlich für Run-Symbol am Source-Code Gezielter Teststart nur für Klasse/Methode/Package und andere Unstimmigkeiten Eclipse Geplant für Gradle und Maven vom JUnit-Team gepflegt
50 Architekturbewertung der JUnit-5-Plattform git clone
51
52 Bewertungskriterien Usability Separation of Concerns Freie Kombinierbarkeit mit anderen Frameworks und Bibliotheken Erweiterbarkeit Auf- und Abwärtskompatibilität
53 JUnit 5 Architektur: Usability Für den Engine-Verwender denkbar einfach Für den Engine-Entwickler Einfache Schnittstellen IDE- und Build-Support bekommt man umsonst Viel Logik (Discovery + Execution) muss selbst implementiert werden - Support-Packages für Reflection, Classpath-Scanning, Exception- Handling und Hierarchische Testspecs
54 JUnit 5 Architektur: Separation of Concerns Gute Trennung von APIs, SPIs, Runnern, Engines, Build-Support Aber: Komplizierte Abhängigkeitsstruktur in Build-Files
55 JUnit 5 Architektur: Kombinierbarkeit mit anderen Frameworks Kaum Abhängigkeiten, dadurch kaum Konfliktpotenzial Aber: Die Plattform übernimmt den kompletten Ausführungslebenszyklus
56 JUnit 5 Architektur: Erweiterbarkeit Engines sind völlig unabhängig voneinander und frei miteinander kombinierbar Aber: Funktionalitätssharing zwischen Engines nicht vorgesehen
57 JUnit 5 Architektur: Auf- und Abwärtskompatibilität 99,9 % abwärtskompatibel mit JUnit 4.12 API Annotationen unterstützen bei der sinnvollen API-Nutzung Aber: Stabilität der API muss sich noch beweisen
58 Extensibility: Zwei Ansätze JUnit 4: Test-Runner: Übernimmt die komplette Testausführung Rules: Generic Statement Wrapping JUnit 5 Jupiter: Specialized Extension Points
59 JUnit 4 Statement Statement abstract void evaluate() throws Throwable class BlockJUnit4ClassRunner protected Statement methodblock(frameworkmethod method) { Object test; try { test = new ReflectiveCallable() protected Object runreflectivecall() throws Throwable { return createtest(); } }.run(); } catch (Throwable e) { return new Fail(e); } } Statement statement = methodinvoker(method, test); statement = possiblyexpectingexceptions(method, test, statement); statement = withpotentialtimeout(method, test, statement); statement = withbefores(method, test, statement); statement = withafters(method, test, statement); statement = withrules(method, test, statement); return statement;
60 JUnit 4 Rule <<interface>> TestRule Statement apply(statement) public class MyRule implements TestRule public Statement apply(final Statement base) { return new Statement() public void evaluate() throws Throwable { public class public MyRule myrule = new public void atest() { } } } } } }; // Do something before standard behaviour base.evaluate(); // Do something after standard behaviour
61 Vor- und Nachteile? + Einfache Abstraktion + Einfache Komponierbarkeit - Nur von Innen nach Außen komponierbar - Keine Möglichkeit die Schachtelung zu verändern - Seiteneffekte zwischen Rules nicht kontrollierbar
62 Jupiter Extension API
63 Jupiter Extensions
64 Jupiter Callbacks <<interface>> Extension <<interface>> BeforeEachCallback void beforeeach(extensioncontext)
65
66 Test Lifecycle Callbacks Conditional Execution Allgemeine Extensions BeforeAllCallback ContainerExecutionCondition ParameterResolver BeforeEachCallback TestExecutionCondition TestExecutionExceptionHandler BeforeTestExecutionCallback TestInstancePostProcessor AfterTestExecutionCallback AfterEachCallback AfterAllCallback
67
68 Extensions sind Komponierbar Zustandslos Können Zustand über einen Store transportieren und austauschen Namespaces Hierarchisch
69 Beispiel: Mockito-Extension public class MockitoExtension implements TestInstancePostProcessor, ParameterResolver public void postprocesstestinstance(object testinstance, ExtensionContext context) { MockitoAnnotations.initMocks(testInstance); public boolean supportsparameter(parametercontext parametercontext, ExtensionContext extensioncontext) { return parametercontext.getparameter().isannotationpresent(mock.class); public Object resolveparameter(parametercontext parametercontext, ExtensionContext extensioncontext) { return getmock(parametercontext.getparameter(), extensioncontext); } private Object getmock(parameter parameter, ExtensionContext extensioncontext) { Class<?> mocktype = parameter.gettype(); Store mocks = extensioncontext.getstore(namespace.create(mockitoextension.class, mocktype)); } } return mocks.getorcomputeifabsent(mocktype.getcanonicalname(), key -> mock(mocktype));
70 Beispiel: Spring-Extension public class SpringExtension implements BeforeAllCallback, AfterAllCallback, TestInstancePostProcessor, BeforeEachCallback, AfterEachCallback, ParameterResolver
71 Vor- und Nachteile? + Feingranulare Eingriffe in den Lebenszyklus möglich + Gute Komponierbarkeit unterschiedlicher Extensions + State nur wenn nötig - Zahlreiche unterschiedliche Callbacks notwendig - Komplexer Life-Cycle in der Testausführung - Nicht alle unerwünschten Interaktionen zwischen Extensions sind kontrollierbar
72 Links Artikel über JUnit-5-Architektur Artikel über Jupiter-Extension-Modell Framework Design Principles: JUnit 5: Jqwik-Engine:
Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch
Eclipse Runtime (OSGi) als Plattform eines Swing Rich Client Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Zu meiner Person
MehrEclipse 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
MehrModulare 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
MehrOliver 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
Mehram Beispiel von JUnit
Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern
MehrAuszug 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
MehrSpring 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
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrHandbuch 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
MehrJava 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?
MehrModerne Web- Anwendungen mit
Moderne Web- Anwendungen mit Oliver.Damm@akquinet.de September 2013 Web- Anwendungen mit Vaadin???
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrSystematisches Testen
Systematisches Testen SEP 136 Unit Testing Objektorientierte Entwicklung Entwicklung von vielen unabhängigen Einheiten (Klassen, Methoden), aus denen das Gesamtprogramm zusammengesetzt wird. Ziel: Wenn
MehrJAX-RS 2.0 REST mit Java EE 7
Enterprise Java, Web Services und XML JAX-RS 2.0 REST mit Java EE 7 Java User Group Darmstadt 13. Juni 2013 http://www.frotscher.com thilo@frotscher.com Vorstellung Freiberuflicher Softwarearchitekt und
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrWebentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo
Webentwicklung mit Vaadin 7 Theoretische und praktische Einführung in Vaadin 7 Christian Dresen, Michael Gerdes, Sergej Schumilo Agenda Allgemeines Architektur Client-Side Server-Side Vaadin UI Components
MehrSpring 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
MehrInfo: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen
Info: Standard DO-178B Zertifizierung Federal AviationAdministration (FAA), Software für Luftverkehrssysteme durch Standard DO-178B für requirement-based Tests and Code Coverage Analyse DO-178B-Levels
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrGerd Wütherich Nils Hartmann. OSGi Service Platform by example
Gerd Wütherich Nils Hartmann OSGi Service Platform by example Die OSGi Service Platform Das Buch» Detaillierte Einführung in OSGi-Technologie» April 2008, dpunkt.verlag» ISBN 978-3-89864-457-0» Website:
MehrAllgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen
5. Mocking Allgemein: Klassen testbar machen Wie werden Klassen testbar Entwicklung von Mocks mit der Hand Einführung in JMock Spezifikation von Mocks mit JMock Wann ist Mocking-Werkzeug sinnvoll Literatur:
MehrBean-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
MehrJava Batch Der Standard für's Stapeln
Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN
MehrOSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder
Michael Greifeneder OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder von Peter Kriens W-JAX Keynote 2007 und Neil Bartletts Getting Started with OSGi
MehrJava 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.
MehrEin Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen
Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen Tom Krauß Agenda Begriffsdefinition Verfahren Praktische Beispiele Vergleich und Bewertung Begriffsklärung
Mehr9.10.2014 JavaFX8 - JumpStart - JUGCH. file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128
file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128 Sven Ruppert speaking java since 1996 Principal IT Consultant Standort - München @SvenRuppert 3/128 file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1
MehrStruts 2 Das Imperium schlägt zurück?
Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software
MehrAnwendungsentwicklung mit Spring
Anwendungsentwicklung mit Spring Eberhard Wolff Managing Director Interface21 GmbH Interface21 - Spring from the Source Interface21 Produkte u.a. Spring Framework Spring from the Source Consulting, Training,
MehrSoftware 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
MehrReflection. Arthur Zaczek. Nov 2014
Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrJavadoc. 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
MehrGerd Wütherich Martin Lippert. OSGi Service Platform by example
Gerd Wütherich Martin Lippert OSGi Service Platform by example Die OSGi Service Platform Das Buch» Detaillierte Einführung in OSGi-Technologie» April 2008, dpunkt.verlag» ISBN 978-3-89864-457-0» Website:
MehrWie ich lernte die API zu lieben. 19. März 2013. bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell
Burp- Burp- Wie ich lernte die zu lieben 19. März 2013 bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell Burp- Was erwartet uns? Das erwartet euch Theorie:
MehrEinführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
MehrProgrammentwicklung 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
MehrAndroid Processes & Services
Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)
MehrDennis 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
MehrPersönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy
Über Ant und Maven zu SBT und Gradle Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy 07.04.2011 Speaker Andreas Hartmann [hartmann@adesso.de] Principal Software Engineer
MehrJava-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
MehrSoftware Engineering in
Software Engineering in der Werkzeuge für optimierte LabVIEW-Entwicklung Folie 1 Best Practices Requirements Engineering Softwaretest Versionsmanagement Build- Automatisierung Folie 2 Arbeiten Sie im Team?
MehrHivemind Ein leichtgewichteter Container
Hivemind Ein leichtgewichteter Container Manfred Wolff, wolff@manfred-wolff.de, www.manfred-wolff.de Container sind Laufzeitumgebungen für Objekte. Der mächtigste Container im Java-Umfeld der EJB Container
MehrJUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1
JUnit - Test Driven Development Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 Gliederung 1.Einleitung 1.1 Geschichte 1.2 Was sind Unit-Tests? 1.3 Failures/Errors 1.4 Ziele und Nutzen
MehrEntwicklungswerkzeuge
Entwicklungswerkzeuge Werner Struckmann & Tim Winkelmann 10. Oktober 2012 Gliederung Anforderungen Projekte Debugging Versionsverwaltung Frameworks Pattern Integrated development environment (IDE) Werner
MehrHöhere Programmierkonzepte Testklausur
Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
MehrWebtests und JMeter. Technologien: Überblick Funktionale Tests: Simplelenium Performance Messungen: JMeter Projekt Setup: Gradle, Jenkins
Webtests und JMeter Technologien: Überblick Funktionale Tests: Simplelenium Performance Messungen: JMeter Projekt Setup: Gradle, Jenkins Raimond Reichert Webtests: Motivation Erhöhte Regress-Sicherheit
MehrEinfü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:
MehrA very very very very short intro to. Testing
A very very very very short intro to Testing Testen ist Teil von V&V V&V Validierung und Verifikation Validierung Erstellen wir das richtige Produkt? Soll gewährleisten, dass das Softwaresystem die Kundenerwartungen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrIch liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
MehrMake-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm 25.6.2012
Make-loses Java für mehr Produktivität: Das z 2 -Environment Henning Blohm 25.6.2012 1 Z2 ist ein radikal neuer* Ansatz für System Life-Cycle Management in Java * jedenfalls für Java Oh je noch ein Tool?
MehrSchritt 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
MehrKomponentenbasierte Softwareentwicklung
Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies
MehrTesten von grafischen Benutzeroberflächen
Seminarvortrag 10: Testen von grafischen Benutzeroberflächen 2004 / 06 / 28 Clemens Sommer, Gerald Peter Übersicht Motivation GUI Allgemein Fehlerquellen und deren Auswirkungen GUI Testwerkzeuge JUnit
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrReversi: Server und manueller Spieler
Reversi: Server und manueller Spieler Plenum Programmierpraktikum 2006-12-14 Kodierung der Textdateien Einstellung für alle Projekte: Window Preferences Workspace Text file encoding. Auf UTF-8 stellen.
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrMVVM in Windows 8 und Windows Phone 8
Basel MVVM in Windows 8 und Windows Phone 8 Thomas Claudius Huber Trivadis AG Thomas Claudius Huber Principal Consultat bei Trivadis www.trivadis.com www.thomasclaudiushuber.com Trainer, Coach, Developer,
MehrInvoca Systems. Application Development Framework. Systemdokumentation. Vers. 1.2.2 / 08.02.2005. copyright (c) by Invoca Systems, 4304 Giebenach
Invoca Systems Application Development Framework Systemdokumentation Vers. 1.2.2 / 08.02.2005 Konzepte: Architektur (Backend Applicationserver Client) Java-Database Objectrelational Mapping (=> Doku) Java
MehrBenutzerauthentifizierung und Zugriffsschutz mit JAAS
Benutzerauthentifizierung und Zugriffsschutz mit JAAS Werner Eberling werner.eberling@mathema.de www.mathema.de Übersicht Altbekanntes kurz erwähnt Java Security Des Kaisers neue Kleider JAAS Zu Ihren
MehrMOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)
MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP) Oliver Steinhauer.mobile PROFI Mobile Business Agenda MOBILE ENTERPRISE APPLICATION PLATFORM AGENDA 01 Mobile Enterprise Application Platform 02 PROFI News
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 05: FXML & Scene Builder Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda FXML und Scene Builder Scene Builder installieren und Demo Controller
MehrSmartphone Entwicklung mit Android und Java
Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter
MehrCamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011. Statische Code-Analyse für Groovy & Grails mit CodeNarc
Statische Code-Analyse für Groovy & Grails mit CodeNarc CamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011 OPITZ CONSULTING GmbH 2011 Folie 1 Stefan Glase, OPITZ CONSULTING Software-Entwickler Java
MehrPraktisches API-Design
Praktisches API-Design Kai Spichale adesso AG 13.07.15 Eine API ist wie die Spitze eines Eisbergs.. 2 http://www.pixelio.de/media/685029 Klassische Funktionen einer API Entkopplung von Implementierung
MehrDer EMF-generierte Code. 7. November 2012
Der EMF-generierte Code 7. November 2012 Überblick Wie sieht der aus einem EMF-Modell generierte Code aus? Wie ist die Beziehung zwischen Modell und Code? Wie kann generierter Code durch handgeschriebenen
MehrÜ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
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrJava 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
MehrIntegration 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.
MehrJUnit 4.11 Die Neuerungen
JUnit 4.11 Die Neuerungen Marc Philipp VKSI Sneak Preview, 18. September 2013 Über JUnit Kent Beck: A programmer-oriented testing framework for Java. David Saff: JUnit is the intersection of all possible
MehrTesten von graphischen Benutzeroberflächen. 24. Juni 2015
Testen von graphischen Benutzeroberflächen 24. Juni 2015 Überblick Motivation für das automatische Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien für GUIs Capture / Replay Testmethode
MehrDas Interceptor Muster
Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster
MehrOhne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm 5.7.2012
Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment Henning Blohm 5.7.2012 1 Z2 ist ein radikal neuer* Ansatz für System Life-Cycle Management in Java * jedenfalls für Java Ein Builtool?
MehrCORBA. Systemprogrammierung WS 2006-2007
CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
MehrCORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu
CORBA Common Object Request Broker Architecture Eine kurze Einführung Ying Lu Verlauf der Präsentation Was ist CORBA CORBA-Architektur Ein Beispiel CORBA im Einsatz CORBA im Vergleich Was ist CORBA Begriffe
Mehr1 Welches Problem löst Maven?
1 Welches Problem löst Maven? Maven kann den kompletten Projektlifecycle verwalten und im Speziellen die internen und externen Abhängigkeiten eines Projekts managen. Im Wesentlichen geschieht dies über
MehrJava Remote Method Invocation (RMI)
Java Remote Method Invocation (RMI) Alexander Petry 13. Mai 2003 engl.: Entfernter Methodenaufruf 1 Übersicht 1. Einleitung 2. RMI Interfaces und Klassen 3. Parameterübergabe 4. Dynamisches Nachladen von
MehrProgrammieren in Java
Programmieren in Java Vorlesung 12: Metawissen Java Bibliotheken, Maven Robert Jakob Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Robert Jakob (Univ. Freiburg) Programmieren in Java JAVA 1 / 33
MehrInterfaces und Vererbung
Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren
MehrEinführung in ActionScript
Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung
MehrSchritt 5: Session Beans
Prof. Dr. Th. Letschert FB MNI JEE Schritt 5: Session Beans Session Beans Übersicht Session Beans dienen dazu serverseitige Geschäftsprozesse zu realisieren. Es gibt sie drei Zustands Varianten: Stateless
MehrDatenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg
Datenhaltung für Android Model First 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Agenda Datenhaltung in Android Motivation / Projektziele Projekt Umsetzung Stand der Entwicklung Fazit 2 Datenhaltung
MehrArchitektur iterativ auf Basis von OSGi entwickeln
Architektur iterativ auf Basis von OSGi entwickeln Ein Vortrag von Sven Jeppsson (syngenio AG) und Karsten Panier (Signal Iduna Gruppe) 1 Inhalt Motivation Architektur Architektur Evolution OSGi Refactoring
MehrBPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com
BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Was ist Prozessautomatisierung? Das Ganze ist ein BPMN Prozess Aber auch (und
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
Mehr09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)
Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)
MehrVorlesung Programmieren
Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)
MehrUnit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG
Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2 Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/
MehrWELTOFFEN EINSATZ DES TFS IN HETEROGENEN UMGEBUNGEN (.NET UND JAVA) - WIE MAN DEN TEAM FOUNDATION SERVER IN BEIDEN WELTEN NUTZEN KANN
WELTOFFEN EINSATZ DES TFS IN HETEROGENEN UMGEBUNGEN (.NET UND JAVA) - WIE MAN DEN TEAM FOUNDATION SERVER IN BEIDEN WELTEN NUTZEN KANN AGENDA Motivation TFS Überblick TFS Architektur & Clients Planung Entwicklung
MehrCross-Platform Mobile mit.net
Cross-Platform Mobile mit.net Mobile Entwicklungslandschaft Nativ Crosscompiled Hybrid Web Beste Usability? Überschaubare Kosten? Was ist Xamarin? Was ist Xamarin? 2011 Gegründet aus dem Ximian, Novell
MehrErfahrungsbericht zu JBoss SOA Platform 6 Tech Talk 2013, 17. Oktober 2013, Bern
Erfahrungsbericht zu JBoss SOA Platform 6 Tech Talk 2013, 17. Oktober 2013, Bern Daniel Tschan Technischer Leiter Michael Zaugg Software-Ingenieur Motivation Puzzle Through 2016, companies will continue
Mehr