Java 8 in Action

Das im Manning-Verlag veröffentlichte Grundlagenbuch wird dank der guten Schilderung der konzeptionellen Änderungen von Java 8 wohl auch dann noch lesenswert bleiben, wenn die derzeit aktuelle Sprachversion in die Jahre kommt.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Michael Müller

Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft
Java 8 in Action – Lambdas, Streams, and functional-style programming

Manning, 2014
424 Seiten, € 37,94
978-1-617291999

Sie wollten ein Buch schreiben, so berichtet Raoul-Gabriel Urma im Vorwort, dass auch noch in fünf oder zehn Jahren lesenswert sei. Damit haben die Autoren einen Anspruch definiert, der weit über das hinausgeht, "was Java 8 für coole neue Features bietet". Natürlich gehen sie detailliert auf Neuerungen dieser Java-Version ein, aber in einer Art und Weise, die nicht einfach die neuen Features, sondern deren Einsatz beschreibt. Doch den größten Teil des Buchs nimmt das Grundlagenwissen um Lambdas, Streams und funktionale

Programmiertechniken ein. Und diese Konzepte sind sicherlich weit über die aktuelle Version hinaus gültig. Zwar gibt es bereits einige Bücher zu diesem Thema, doch das vorliegende nimmt in Sachen Diadaktik und Verständlichkeit sicherlich eine Sonderstellung ein und ist so zu den besten Büchern dieser Thematik zu zählen.

Dabei steigen die Autoren überblicksartig in das Thema ein. Hier geht es um die gefilterte Ausgabe von Elementen einer Liste. Wie lässt sich das Filterkriterium einfach austauschen oder um eine Reihe verschiedener Kriterien ergänzen? Über die Parametrisierung von Methoden mittels Objekten benannter und anonymer Klassen gelangen sie zu Lambdas. So wird das Prinzip von Funktionen als Parameter leicht verständlich. Auch wenn Java längst noch keine funktionale Sprache ist, kann der Programmieren dennoch einen funktionalen Stil pflegen, mit all den daraus resultierenden Vorteilen.

Nach diesem einführenden Beispiel gehen die Autoren dann nochmals auf die einzelnen Bausteine ein, diesmal mit entsprechend mehr Tiefgang. Ein Schwerpunkt bei der Erläuterung des funktionalen Programmierstils sind dabei Streams, die, richtig genutzt, zugleich eine einfache Möglichkeit der parallelen Ausführung bieten. Das bedeutet effektive Ausnutzung von Mehrkernprozessoren, ohne sich mit Threads, Locking und sonstigen Ärgernissen herumschlagen zu müssen

Im Teil "effektive Java-Programmierung" dreht es sich um andere Neuerungen wie Default-Methoden in Interfaces, die neue Optional-Klasse als (bessere) Alternative zur Null-Prüfung, CompletableFuture zur asynchronen Programmierung und die neue Date und Time API. Auch diese Themen stehen nicht unbedingt als "Neuerungen" dar, sondern auch hier geht es um die dahinter liegenden Konzepte und deren Anwendung.

Der Abschluss des Buchs thematisiert die funktionale Denke und bietet den Vergleich zu einer funktionalen Sprache (Scala), eine Zusammenfassung der behandelten Themen sowie deren logische Fortsetzungen, wie sie möglicherweise in einer künftigen Java-Version umgesetzt werden. Erst im Anhang gibt es dann noch eine Beschreibung weiterer neuer Features. Das ist der eher vergängliche Teil, der einfach Neues listet, ohne Grundlagen aufzuzeigen.

Die Autoren schreiben allesamt so verständlich, dass auch Entwickler, die nicht täglich englische Literatur lesen, recht gut mit dem Buch arbeiten können. Zahlreiche Codebeispiele, aber nicht so viele, dass mehr Code als Text vorhanden ist, Abbildungen unterstützen den Text. Daneben haben die Autoren einige Quizze eingebaut, die den Leser anregen sollen, über das Beschriebene zu reflektieren.

Insgesamt handelt es sich also eher um ein Grundlagenbuch für erweiterte Konzepte. Und so haben die Autoren tatsächlich ein Werk zustande gebracht, das auch dann noch lesenswert bleibt, wenn Java 8 in die Jahre kommt.

Michael Müller
ist als Bereichsleiter Softwareentwicklung der InEK GmbH verantwortlich für Projekte im Web-, Java- und .NET-Umfeld. Daneben betätigt er sich als freier Autor und verfasst Fachartikel zu diversen Entwicklungsthemen sowie Buchrezensionen.
(ane)