Java 8 - Die Neuerungen (eBook)
319 Seiten
dpunkt (Verlag)
978-3-86491-750-9 (ISBN)
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig. Dabei hat er über 15 Jahre Erfahrung beim Entwurf objektorientierter Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig. Dabei hat er über 15 Jahre Erfahrung beim Entwurf objektorientierter Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.
Inhaltsverzeichnis 5
Vorwort 13
Vorwort zur zweiten Auflage 9
1 Einleitung 19
2 Lambda-Ausdrücke 21
2.1 Einstieg in Lambdas 22
2.2 Defaultmethoden 29
2.3 Statische Methoden in Interfaces 36
2.4 Methodenreferenzen 38
2.5 Exceptions in Lambdas 40
2.6 Fazit 44
2.7 Übungen zu Lambdas, Methodenreferenzen und Defaultmethoden 45
3 Bulk Operations on Collections 49
3.1 Externe vs. interne Iteration 49
3.2 Collections-Erweiterungen 53
3.3 Streams 60
3.4 Filter-Map-Reduce 89
3.5 Datenaufbereitung mit Kollektoren 93
3.6 Fallstricke bei Lambdas und funktionaler Programmierung 107
3.7 Fazit 116
3.8 Übungen zu Collections und Bulk Operations 117
3.9 Übungen zu Streams und Filter-Map-Reduce 121
4 JSR-310: Date and Time API 125
4.1 Datumsverarbeitung vor JSR-310 125
4.2 Überblick über die neu eingeführten Typen 128
4.3 Datumsarithmetik 147
4.4 Das neue Date and Time API im Einsatz 150
4.5 Fazit 160
4.6 Übungen zum Date and Time API 161
5 Einstieg JavaFX 8 165
5.1 Einführung – JavaFX im Überblick 165
5.2 Deklarativer Aufbau des GUIs 180
5.3 Rich-Client Experience 185
5.4 Properties, Data Binding und Observable Collections 195
5.5 Neuerungen in JavaFX 8 206
5.6 Neuerungen in JavaFX 8 Update 40 221
5.7 Fazit 226
5.8 Übungen zu JavaFX 8 227
6 Weitere Änderungen in JDK 8 231
6.1 Erweiterungen im Interface Comparator< T>
6.2 Die Klasse Optional< T>
6.3 Parallele Operationen auf Arrays 242
6.4 Erweiterungen im Interface Map< K,V>
6.5 Erweiterungen im Bereich Concurrency 251
6.6 »Nashorn« – die neue JavaScript-Engine 257
6.7 Keine Permanent Generation mehr 260
6.8 Base64-Codierungen 260
6.9 Erweiterungen im Bereich Reflection 261
6.10 Erweiterungen im NIO und der Klasse Files 263
6.11 Änderungen bei Annotations 265
6.12 Berechnungen mit Überlaufprüfung 267
6.13 Übungen zu Diverses 268
7 Java 8 im Praxiseinsatz 273
7.1 Erste Schritte zur Informationsaufbereitung 274
7.2 Grafische Darstellung 278
7.3 Fazit 284
8 Tipps zur Migration von Java 7 auf Java 8 285
8.1 Stolpersteine in den Bibliotheken 285
8.2 Externe in interne Iterationen überführen 289
8.3 Von Swing zu JavaFX 291
9 Zusammenfassung und Ausblick 295
9.1 Zusammenfassung und Fazit 295
9.2 Ausblick auf JDK 9: Mit JDK 8 nicht umgesetzte Features 298
9.3 Weiterführende Literatur 301
Anhang 303
A Java und funktionale Programmierung 305
A.1 Programmierparadigmen im Überblick 305
A.2 Funktionale Programmierung an Beispielen 306
Literaturverzeichnis 309
Index 311
www.dpunkt.de 0
Vorwort
Zunächst einmal bedanke ich mich bei Ihnen, dass Sie sich für dieses Buch entschieden haben, um sich über die Neuerungen von Java 8 zu informieren. In den nachfolgenden Kapiteln möchte ich Ihnen diese brandaktuelle Java-Version mit ihren umfangreichen Erweiterungen näherbringen. Insbesondere sind Lambda-Ausdrücke und das Stream-API wegweisende Neuerungen, durch die nun neben der objektorientierten auch die funktionale Programmierung in Java möglich wird. Auch die lange Zeit stiefmütterlich behandelte Datumsarithmetik wurde in Java 8 aufpoliert. Doch damit nicht genug: Die GUI-Technologie JavaFX wurde sowohl um neue Bedienelemente als auch um die Unterstützung für Darstellungen in 3D erweitert. JavaFX schickt sich an, Swing bald als GUI-Framework abzulösen.
Wer sollte dieses Buch lesen?
Dieses Buch ist kein Buch für Programmierneulinge, sondern richtet sich an all diejenigen Leser, die einen fundierten Überblick über die mit Java 8 eingeführten Neuerungen erhalten wollen. Ich gehe also davon aus, dass Sie bereits einiges an Erfahrung mit Java mitbringen. Damit der Umstieg und das Nachvollziehen der Beispiele zu Java 8 leichter fällt, wird oftmals ein Vergleich zu einer herkömmlichen Lösung mit Java 7 dargestellt.
Ich setze zwar ein gutes Java-Grundwissen voraus, allerdings werden ausgewählte Themengebiete etwas genauer und gegebenenfalls einführend betrachtet, wenn dies das Verständnis der nachfolgenden Inhalte einfacher macht. Dies ist etwa für JavaFX der Fall: Dort beginne ich mit einer Darstellung der Grundlagen, weil die deutschsprachige Literatur gerade auf diesem Gebiet recht spärlich ist und sich sonst die Neuerungen aus JavaFX 8 nicht so gut nachvollziehen lassen würden.
Dieses Buch richtet sich im Speziellen an zwei Zielgruppen: Zum einen sind dies engagierte Hobbyprogrammierer, Informatikstudenten und Berufseinsteiger, die Java als Sprache beherrschen und nun neugierig auf die weitreichenden Änderungen in Java 8 sind. Zum anderen ist das Buch für erfahrenere Softwareentwickler und -architekten gedacht, die ihr Wissen ergänzen wollen, um für zukünftige Projekte abschätzen zu können, wann und in welchen Bereichen Java 8 eine gewinnbringende Alternative darstellen kann.
Was vermittelt dieses Buch?
Sie als Leser erhalten neben Theoriewissen eine Vertiefung durch praktische Beispiele, sodass der Umstieg auf Java 8 in eigenen Projekten erfolgreich gemeistert werden kann. Der Fokus dieses Buchs liegt auf dem praktischen Nutzen und den zugrunde liegenden Konzepten. Zur Verdeutlichung werden vereinfachte Beispiele aus dem realen Programmiereralltag genutzt. Um den Rahmen des Buchs nicht zu sprengen, stellen die abgebildeten Programmlistings häufig nur Ausschnitte aus lauffähigen Programmen dar. Deren Name wird in Kapitälchenschrift, etwa DATEPICKEREXAMPLE, angegeben.
Sourcecode und ausführbare Programme
Der Sourcecode kann auf der Webseite www.dpunkt.de/java-8 heruntergeladen werden. Zudem befindet sich dort ein Eclipse-Projekt, über das sich alle Programme ausführen lassen. Idealerweise nutzen Sie dazu ein aktuelles Eclipse 4.4 oder neuer. Zumindest benötigen Sie aber Eclipse 4.3.2 mit einem Update zur JDK-8-Unterstützung (frei verfügbar unter http://download.eclipse.org/eclipse/updates/4.3-P-builds/).
Aufbau dieses Buchs
Kapitel 1 Einführend erhalten Sie einen kurzen Überblick zu Java 8 und seine wegweisenden Neuerungen.
Kapitel 2 Kapitel 2 startet dann mit Lambdas, einer der bedeutsamsten Änderungen der Sprache seit der Einführung von Generics in Java 5. Lambdas führen zu einer vollkommen neuen Denkweise und bilden die Grundlage für die funktionale Programmierung mit Java.
Kapitel 3 Kapitel 3 zeigt dann, wie sich Lambdas gewinnbringend mit den diversen Erweiterungen im Collections-Framework, insbesondere dem Stream-API, kombinieren lassen. Dort wird unter anderem eine mächtige Filter-Map-Reduce-Funktionalität bereitgestellt – ähnlich wie man dies von NoSQL-Datenbanken zur Verarbeitung großer Datenmengen (Stichwort: Big Data) kennt.
Kapitel 4 Lange Zeit war die Verarbeitung von Datums- und Zeitangaben mit Java-Bordmitteln eher mühsam und zudem fehlerträchtig. Mit Java 8 ändert sich dies grundlegend. Das neue Date and Time API bereitet in seiner Nutzung viel Freude. Kapitel 4 gibt dazu einen Überblick.
Kapitel 5 Nicht nur intern, sondern auch im Bereich der Benutzeroberflächen wurde in Java 8 einiges verbessert. Zudem ist JavaFX nun fester Bestandteil des JDKs und wurde an die Versionsnummer von Java angepasst. Neben Detailverbesserungen sind die zwei Bedienelemente DatePicker und TreeTableView sowie die Unterstützung von 3D-Darstellungen bedeutende Erweiterungen. Kapitel 5 beginnt mit einem allgemeinen Einstieg in JavaFX und geht danach auf die Besonderheiten von JavaFX 8 ein.
Kapitel 6 Neben den in den vorangegangenen Kapiteln behandelten recht fundamentalen Änderungen enthält Java 8 noch eine Vielzahl weitere, zum Teil kleinere Verbesserungen, die aber allesamt das Programmiererleben deutlich erleichtern. Einige wesentliche werden in Kapitel 6 vorgestellt.
Kapitel 7 In Kapitel 7 stelle ich ein mit Java 8 umgesetztes reales Projekt vor und zeige, was sich mit Java 8 vereinfacht, und motiviere, warum Sie darauf wechseln sollten.
Kapitel 8 Bestimmt werden einige von Ihnen schon jetzt oder aber recht bald vor der Aufgabe und Herausforderung stehen, vorhandene Projekte auf Java 8 zu migrieren. Dieses Kapitel beschreibt einige mögliche Fallstricke sowie Lösungen, die den Umstieg erleichtern.
Kapitel 9 Kapitel 9 rekapituliert noch einmal die Neuerungen in Java 8 und zieht ein Fazit. Zudem wagen wir dort einen Ausblick auf mögliche Funktionalitäten in JDK 9. Abgerundet wird das Kapitel durch eine Übersicht zu weiterer Literatur zu Java 8, Lambdas und funktionaler Programmierung.
Anhang A Anhang A liefert eine knappe Einführung in verschiedene Programmierparadigmen und insbesondere in die funktionale Programmierung, die nun mit JDK 8 Einzug in Java gehalten hat.
Konventionen
Verwendete Zeichensätze
In diesem Buch gelten folgende Konventionen bezüglich der Schriftart: Neben der vorliegenden Schriftart werden wichtige Textpassagen kursiv oder kursiv und fett markiert. Englische Fachbegriffe werden eingedeutscht groß geschrieben, etwa Event Handling. Zusammensetzungen aus englischen und deutschen (oder eingedeutschten) Begriffen werden mit Bindestrich verbunden, z. B. Plugin-Manager. Namen von Programmen sowie Entwurfsmustern werden bei ihrer Verwendung in KAPITÄLCHEN dargestellt. Sourcecode-Listings sind in der Schrift courier gesetzt, um zu verdeutlichen, dass dieser Text einen Ausschnitt aus einem Java-Programm darstellt. Auch im normalen Text wird für Klassen, Methoden, Konstanten und Parameter diese Schriftart genutzt.
Verwendete Klassen aus dem JDK
Werden Klassen des JDKs zum ersten Mal im Text erwähnt, so wird deren voll qualifizierter Name, d. h. inklusive der Package-Struktur, angegeben: Für die Klasse String würde dann etwa java.lang.String notiert. Dies erleichtert eine Orientierung und ein Auffinden im JDK. Dies gilt insbesondere, da in den Listings nur selten import-Anweisungen abgebildet werden. Im nachfolgenden Text wird zur besseren Lesbarkeit auf diese Angabe verzichtet und nur der Klassenname genannt.
Im Text beschriebene Methodenaufrufe enthalten in der Regel die Typen der Übergabeparameter, etwa substring(int, int). Sind die Parameter in einem Kontext nicht entscheidend, wird mitunter auf deren Angabe aus Gründen der besseren Lesbarkeit verzichtet – das gilt ganz besonders für Methoden mit generischen Parametern.
Verwendete Abkürzungen
Im Buch verwende ich die in der nachfolgenden Tabelle aufgelisteten Abkürzungen. Weitere Abkürzungen werden im laufenden Text in Klammern nach ihrer ersten Definition aufgeführt und anschließend bei Bedarf genutzt.
Abkürzung | Bedeutung |
JDK | Java Development Kit |
JLS | Java Language Specification |
JRE | Java Runtime Environment |
JSR | Java Specification Request |
JVM | Java Virtual Machine |
API | Application Programming Interface |
ASCII | American Standard Code for Information Interchange |
(G)UI | (Graphical) User... |
Erscheint lt. Verlag | 2.9.2015 |
---|---|
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Informatik ► Programmiersprachen / -werkzeuge ► Java |
Schlagworte | Coding-Conventions • Entwurfsmuster • Java • OO-Entwurf • Programmierstil • Refactorings |
ISBN-10 | 3-86491-750-6 / 3864917506 |
ISBN-13 | 978-3-86491-750-9 / 9783864917509 |
Haben Sie eine Frage zum Produkt? |
Größe: 5,2 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
Größe: 2,9 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich