Funktionales Programmieren ist im Moment in aller Munde. Es bietet vor allem im Bereich Parallelität und Korrektheit elegante Ansätze, die sich nicht nur im akademischen Elfenbeinturm, sondern auch im praktischen Einsatz bewährt haben. Mit Java 8 und Lambdas stehen jetzt endlich auch Java-Anwendern einige Werkzeuge zur Verfügung, um funktionale Lösungen komfortabler umzusetzen.
In diesem Tutorial wollen wir uns mit den Vorteilen der funktionalen Programmierung beschäftigen und diese anwenden. Wir werden zunächst mit den Bordmittel des JDK experimentieren und unseren Werkzeugkasten Schritt um Schritt erweitern. Die Praxis steht dabei im Mittelpunkt, und anhand von Beispielen und Übungen werden die eigenen Fähigkeiten geschult und weiterentwickelt. Dabei soll auch der Spaß am Programmieren nicht zu kurz kommen.
Technische Anforderungen:
Benötigt wird eine aktuelle Java 8 Entwicklungsumgebung mit IDE (z.B. IntelliJ IDEA oder Eclipse) mit entsprechendem JDK und Maven.
Bei Bedarf stellen wir die benötigte Software (JDK für Mac u. Windows, Maven, Community Edition von IntelliJ) auch per USB-Stick zur Verfügung.
Falls Sie ein Gerät Ihrer Firma verwenden, überprüfen Sie vorher bitte, ob eines der folgenden, gelegentlich vorkommenden Probleme bei Ihnen auftreten könnte.
* Workshop-Teilnehmer hat keine Administrator-Rechte.
* Corporate Laptops mit übermäßig penibler Sicherheitssoftware
* Gesetzte Corporate-Proxies, über die man in der Firma kommunizieren muss, die aber in einer anderen Umgebung entsprechend nicht erreicht werden.
Agenda:
ab 8.40: Registrierung und Begrüßungskaffee
9.40: Beginn
Einführung und Motivation
Kennenlernen und Setup
Motivation funktionales Programmieren
Java 8 Lambda Auffrischung
Übungen
11.00 - 11.15: Kaffeepause
JDK Standard
Streams
Optionals
Übungen
Mutable/Immutable State
Java Beans
Shared State Probleme
Immutables mit JDK Bordmitteln
Übungen
13.00 - 14.00: Mittagspause
Immutables Library
Basics
Values
Builder
Styles
Übungen
Vavr (ehemals Javaslang) I
Collections
Operatoren
Tuples
Option
Either
Übungen
16.00 - 16.30: Kaffeepause
Vavr II
Functions
Try
Validation
Future
Pattern Matching
Übungen
Wrap-up
Diskussion und Erfahrungsaustausch
Literaturempfehlungen
Weiterführende Referenzen
ca. 18.30 Uhr: Ende
Skills
* Die Teilnehmer sind erfahrene Java-Entwickler, die idealerweise bereits mit dem JDK 8 vertraut sind.
* Die benötigten Java-8-Features werden allerdings auch kurz wiederholt.
Lernziele
* Einstieg in die Grundlagen der funktionalen Programmierung
* Verwendung der JDK-8-Basisfunktionen zur funktionalen Programmierung
* Verwendung weiterer Bibliotheken
* Kenntnisse der Möglichkeiten und der Grenzen von funktionaler Programmierung mit Java 8
Referenten
Tobias Ahlersarbeitet als Senior Developer bei der Smartsquare GmbH und ist vor allem im Bereich der Java-Entwicklung und der technischen Kommunikation aktiv. Seine Leidenschaft gilt außerdem der Software-Craftsmanship-Bewegung und dem Wissensaustausch in diversen Communities in und um Ostwestfalen.
Jens Krafczyk
studierte an der Universität Bielefeld Kognitive Informatik und arbeitet jetzt als Softwareentwickler bei der Smartsquare GmbH. Als DevOps-Spezialist kümmert er sich um die komplette Kette vom Quellcode bis zur Auslieferungsplattform. Schon als Tutor im Studium stand bei ihm Wissensvermittlung besonders hoch im Kurs.