Trotz Java agil entwickeln. David Burkhart, Marc Philipp XP Days Germany 2014

Ähnliche Dokumente
Java 8. Guild42, 18. November Stephan Fischli Dozent BFH, Software-Architekt ISC-EJPD

Java 8 Lambdas und Streams

Java 8. Die wichtigsten Neuerungen. W3L AG

Java 8: Lambdas, Streams & Co

Java 8 Die Neuerungen

JUGS Java 8 Hands On Übungen

Java 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck

Java 8. Lambdas und Streams

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Neuerungen in Java 8. Wichtige neue Features im Überblick. Folie Michael Inden

Java 8 Date Time API mit PostgreSQL. Swiss PGDay 2016

Bean-Mapping mit MapStruct

Java Einführung Collections

Ich liebe Java && Ich liebe C# Rolf Borst

Neue Features in C# 2.0

Java-Schulung Grundlagen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Java 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

Java Einführung Abstrakte Klassen und Interfaces

Java - Programmierung - Objektorientierte Programmierung 1

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

JAX-RS 2.0 REST mit Java EE 7

Einführung in ActionScript

Frontend Migration from JSP to Eclipse Scout

Funktionale Programmierung und Streams in Java

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert Christoph Knabe

Theorie zu Übung 8 Implementierung in Java

"Functional Thinking" -

Back to the Future Eine Zeitreise von C# 1.0 zu C# 7.0

Java I Vorlesung 6 Referenz-Datentypen

Gebundene Typparameter

Einstieg in die Informatik mit Java

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Entwicklertreffen vom : Java Development Kit 8. Andri Feldmann, Lorenzo Pafumi, Linus Eberhard

C# im Vergleich zu Java

Innere Klassen in Java

Musterlösungen zur Klausur Informatik 3

Javaaktuell. Mit Lambda-Ausdrücken einfacher programmieren. ijug. Go for the Money Währungen und Geldbeträgen in Java

REST-Schnittstellen Dokumentation und Testing. Adrian Moos Technology Advisor Bedag Informatik AG

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

Software-Architektur Reactive Streams

Höhere Programmierkonzepte Testklausur

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Java 8. Programmiermethodik. Eva Zangerle Universität Innsbruck

AuD-Tafelübung T-B5b

Algorithmen und Datenstrukturen

Einführung und Vorstellung: Grundlagen der Java- Programmierung. paluno

Distributed Computing Group

JAVA - Methoden

Schritt 4: Hallo Enterprise Bean

1. Der Einstieg in Java. Was heißt Programmieren?

Scalaz Einführung für Java Programmierer Bernhard Huemer IRIAN

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)

Verteilte Systeme CS5001

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

Einführung in Javadoc

Java für C++ Programmierer

Computeranwendung und Programmierung (CuP)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Android Processes & Services

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Übungen zur Android Entwicklung

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

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

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

JAVA - Zufallszahlen

Programmieren in Java

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Enumerations und innere Klassen

Übung 1: Object Inspector

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester / 32

Primitive Datentypen

5. Übung zu Software Engineering

Praktisches API-Design

SQL und MySQL. Kristian Köhntopp

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

versus Christian Grobmeier

Java Programmierung Aufbau

Die Alternative zum Web-Form Modell

Agenda. (1) Einleitung (2) neo4j. (3) Beispiel + Demo

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Factory Method (Virtual Constructor)

Hivemind Ein leichtgewichteter Container

Schieberegler und analoge Anzeigen

Einführung in die Java- Programmierung

5.4 Klassen und Objekte

Software Engineering Klassendiagramme Einführung

Hadoop I/O. Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen Prof. Dr. Christian Herta 1/29

Javakurs für Anfänger

Agile Testautomatisierung im XING Mobile Team

Transkript:

Trotz Java agil entwickeln David Burkhart, Marc Philipp XP Days Germany 2014

2 The Road to Lambda... Java

3 Java 8 Intro

4 Demo SortierungDemo1-9.java

5 FuncDonal Interface = Interface mit genau einer Methode Beispiele: Comparator Runnable Callable FileFilter

6 Lambda- Ausdruck = Kurzschreibweise einer anonymen ImplemenDerung eines FuncDonal Interface Comparator<Person> comparator = new Comparator<Person>() { @Override public int compare(person a, Person b) { return a.getnachname().compareto(b.getnachname()); ; Comparator<Person> comparator = (a, b) - > a.getnachname().compareto(b.getnachname());

7 Lambda- Schreibweise Parameterliste - > Body (Person a, Person b) - > { return a.getnachname().compareto(b.getnachname()); (a, b) - > { return a.getnachname().compareto(b.getnachname()); (a, b) - > a.getnachname().compareto(b.getnachname()) a - > a.getnachname() () - > a.getnachname()

8 Methoden- Referenzen Schema Beispiel Äquivalenter Lambda- Ausdruck Klasse::staDscheMethode Math::abs x - > Math.abs(x) Klasse::instanzMethode Person::getNachname p - > p.getnachname() variable::instanzmethode eineperson::getnachname () - > eineperson.getnachname() Klasse::new Person::new () - > new Person()

9 Default- Methoden = An Interface deklarierte Methode mit Default- ImplemenDerung Vorteil: ImplemenDerungen müssen nicht angepasst werden Beispiele: List::sort Iterable::forEach Comparator::reversed

10 StaDsche Methoden in Interfaces möglich Beispiel: Comparator.comparing(Person::getNachname);

11 @FunctionalInterface AnnotaDon für Interfaces Compiler überprüb, ob das Interface genau eine abstrakte Methode deklariert Compile- Fehler: @FunctionalInterface interface MyInterface { void firstmethod(); void secondmethod(); Invalid '@FuncDonalInterface' annotadon; MyInterface is not a funcdonal interface

12 Fragen zur Intro?

13 Java 8 java.udl.funcdon Standard FuncDonal Interfaces

14 Vier Familien von FuncDonal Interfaces interface Function<T,R> { R apply(t t); interface Predicate<T> { boolean test(t t); interface Supplier<T> { T get(); interface Consumer<T> { void accept(t t);

15 Frage & Übung zu Supplier interface Function<T,R> { R apply(t t); interface Predicate<T> { boolean test(t t); interface Supplier<T> { T get(); interface Consumer<T> { void accept(t t); SupplierFrage SupplierUebung

16 Übung zu Consumer interface Function<T,R> { R apply(t t); interface Predicate<T> { boolean test(t t); interface Supplier<T> { T get(); interface Consumer<T> { void accept(t t); ConsumerUebung

17 Übung zu Predicate interface Function<T,R> { R apply(t t); interface Predicate<T> { boolean test(t t); interface Supplier<T> { T get(); interface Consumer<T> { void accept(t t); PredicatesUebung

18 Übung zu Function interface Function<T,R> { R apply(t t); interface Predicate<T> { boolean test(t t); interface Supplier<T> { T get(); interface Consumer<T> { void accept(t t); FunctionsUebung

19 Java 8 java.udl.streams R.I.P. For- Loop

20 Demo StreamDemo1Intro.java

21 java.util.stream.stream list.stream().filter( ).map( ).sorted().foreach( ) Bild: www.flickr.com/photos/ryanwick/2951635488/

22 java.util.stream.stream Create Intermediate Intermediate Intermediate Terminal Intermediate Lazy (Auoau der Pipeline) Liefert Stream Terminal Stößt Auswertung an Liefert Ergebnis

23 PrimiDve Streams Interfaces IntStream, LongStream, DoubleStream SummaryStatistics min, max, sum, count, average OperaDonen IntSupplier, IntConsumer, IntPredicate, IntFunction Long Double

24 Übung StreamAufgabe1

25 java.util.stream.stream Stateless Jedes Element wird für sich betrachtet filter map reduce Stateful Es müssen alle Elemente gesamt betrachtet werden distinct sorted Short- CircuiDng Nicht alle Elemente müssen betrachtet werden anymatch limit

26 java.util.stream.stream Sicht auf die Daten vgl. Iterator Möglicherweise unbegrenzt Nur einmal verwendbar SequenDell oder parallel

27 Stream Erzeugen collection.stream Stream.generate (Supplier) Stream.iterate(seed, Function) stream.parallel IntStream.range Random.ints / Random.longs / Random.doubles pattern.splitasstream bufferedreader.lines jarfile.stream / zipfile.stream Files.walk / Files.list / Files.lines

28 Suchen filter anymatch allmatch nonematch Transformieren map flatmap reduce collect SorDeren distinct sorted min max Abkürzen limit skip Konsumieren foreach count findfirst findany PrimiDve Streams maptoint maptolong maptodouble

29 java.util.stream.collectors tolist Erzeugt Liste Varianten: toset, tocollection joining String- KonkatenaDon Erzeugt Map<K, List<V>> groupingby Keys über Function<V, K>

30 Übung StreamAufgabe2

31 Java 8 java.udl.opdonal<t> Error: PizzaNotFoundExcepDon: message at... at... at... at... Caused by: java.lang.nullpointerexcepdon at... at... at... at...

32 The Billion Dollar Mistake Tony Hoare, Erfinder von QuickSort, Turing Award Winner: I call it my billion- dollar mistake. It was the inven?on of the null reference in 1965. Quelle: hxp://qconlondon.com/london- 2009/presentaDon/Null +References%3A+The+Billion+Dollar+Mistake Bild: hxp://en.wikipedia.org/wiki/c._a._r._hoare

33 Problem: Was ist die SemanDk von null? Was kann map.get(key) == null bedeuten? Mögliche Antworten: Der key ist nicht in der map enthalten. Der key ist enthalten und der zugehörige Wert ist null.

34 Übung OptionalAufgabe

35 Java 8 java.dme Date/Time- API, Versuch #3

36 java.time Immutable Threadsafe (auch Formaxer!) Brücken zur alten Welt java.util.date: from(instant), toinstant java.util.calendar: toinstant Warum nicht Joda- Time? hxp://blog.joda.org/2009/11/why- jsr- 310- isn- joda- Dme_4941.html

37 java.time Maschine Instant java.util.date Menschenlesbar LocalDate LocalTime LocalDateTime Enum: DayOfWeek Enum: Month MonthDay Year YearMonth Mit Zeitzonen ZonedDateTime OffsetDateTime OffsetTime java.util.calendar

38 java.time Maschine Menschenlesbar Mit Zeitzonen Instant java.util.date LocalDate LocalTime LocalDateTime Enum: DayOfWeek Enum: Month MonthDay Year YearMonth ZonedDateTime OffsetDateTime OffsetTime Where possible, it is recommended to use a simpler class without a Dme- zone. The widespread use of Bme- zones tends to add considerable complexity to an applicadon. java.util.calendar

39 java.time Duration Sekunden Nanosekunden Period Jahre Monate Tage

40 Übung DateTimeAufgaben

41 Stoff für einen weiteren Workshop... Java FX 8 Concurrency Verbesserungen (CompletableFuture,...) Nashorn Javascript Engine Java 7 Features, die untergegangen sind: try- with- resources, MulD- Catch NIO2 (java.nio.file.*)

42 Links Download hxp://www.oracle.com/technetwork/java/javase/downloads/index.html Eclipse- Support hxp://www.eclipse.org/downloads/java8/ JavaDoc hxp://download.java.net/jdk8/docs/api/java/udl/funcdon/package- summary.html hxp://download.java.net/jdk8/docs/api/java/udl/stream/package- summary.html hxp://download.java.net/jdk8/docs/api/java/udl/stream/stream.html hxp://download.java.net/jdk8/docs/api/java/dme/package- summary.html

43 Take it for a spin... David Burkhart Mail david.burkhart@andrena.de Marc Philipp Mail marc.philipp@andrena.de TwiGer @marcphilipp Blog marcphilipp.de hxp://www.flickr.com/photos/lelik/247277980