Java 8 - Die Neuerungen
eBook - ePub

Java 8 - Die Neuerungen

Lambdas, Streams, Date and Time API und JavaFX 8 im Überblick

Michael Inden

Partager le livre
  1. 319 pages
  2. German
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Java 8 - Die Neuerungen

Lambdas, Streams, Date and Time API und JavaFX 8 im Überblick

Michael Inden

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

Dieses Buch bietet einen fundierten Einstieg in Java 8 sowie einen Überblick ĂŒber die umfangreichen Neuerungen in JDK 8. Damit eignet sich das Buch fĂŒr all jene, die ihr Java-Wissen auffrischen und aktualisieren wollen.Die aktuelle Java-Version enthĂ€lt zahlreiche Erweiterungen. Insbesondere die EinfĂŒhrung von Lambdas und des Stream-APIs stellen wegweisende Entwicklungen dar, die nun neben der objektorientierten auch die funktionale Programmierung in Java ermöglichen. Jeder ambitionierte Java-Entwickler sollte sie kennen, weil sich dadurch vollkommen neue Gestaltungsmöglichkeiten ergeben.Die Verarbeitung von Datumswerten hat eine grundlegene Überarbeitung erfahren und erleichtert die Daumsarithmetik enorm. Doch damit nicht genug: Die GUI-Technologie JavaFX wurde um einige neue Bedienelemente sowie Dialoge und die UnterstĂŒtzung fĂŒr 3D erweitert und schickt sich an, Swing abzulösen.DarĂŒber hinaus geht der Autor auf diverse weitere Neuerungen ein, die JDK 8 bietet.In dieser zweiten Auflage wurden Kapitel zu Java 8 im Praxiseinsatz sowie zur Migration bestehender Projekte auf das neue JDK 8 ergĂ€nzt. Abgerundet wird dieses Buch durch einen Ausblick auf mögliche FunktionalitĂ€ten in JDK 9.

Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Java 8 - Die Neuerungen est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Java 8 - Die Neuerungen par Michael Inden en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Ciencia de la computaciĂłn et ProgramaciĂłn en Java. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Éditeur
dpunkt
Année
2015
ISBN
9783864917509

1 Einleitung

Am 18. MĂ€rz 2014 war es endlich so weit: Das zuvor mehrfach verschobene und lang erwartete Java 8 ist erschienen. Dieses Release enthĂ€lt diverse wegweisende Erweiterungen und mit Lambda-AusdrĂŒcken ein neues Sprachkonstrukt, das die funktionale Programmierung in Java erlaubt. Durch ein sorgfĂ€ltiges API-Design von Massenoperationen auf Collections (Bulk Operations on Collections), wie Filterung, Transformation und Sortierung, lĂ€sst sich die funktionale gut mit der objektorientierten Programmierung verbinden. Dadurch ergeben sich vollkommen neue Gestaltungsmöglichkeiten, die jeder ambitionierte Java-Entwickler beherrschen sollte. Auch die lange Zeit stiefmĂŒtterlich behandelte Verarbeitung von Datumswerten wurde in Java 8 vollstĂ€ndig ĂŒberarbeitet. Doch damit nicht genug: JavaFX als GUI-Technologie wurde aufpoliert. DarĂŒber hinaus gibt es eine Vielzahl weiterer FunktionalitĂ€ten in Java 8 zu entdecken. Dieses Buch gibt einen Überblick ĂŒber folgende wesentliche Erweiterungen in JDK 8:
  • Lambda-AusdrĂŒcke, Defaultmethoden und Methodenreferenzen ZunĂ€chst werden wir mit Lambdas, Methodenreferenzen und Defaultmethoden die Grundlagen zur funktionalen Programmierung mit Java kennenlernen.
  • Bulk Operations on Collections Viele Aufgabenstellungen wie Filterungen und Transformationen erfordern den Einsatz von Collections und spezieller Algorithmen. Bis JDK 8 fehlte es allerdings an geeigneter UnterstĂŒtzung, was sich nun Ă€ndert. Die neu eingefĂŒhrten Streams bieten weitreichende Möglichkeiten zur Datenverarbeitung und zur Parallelisierung von Verarbeitungsschritten.
  • Date and Time API Die Verarbeitung von Datums- und Zeitangaben war bis Java 8 immer mĂŒhselig und fehlertrĂ€chtig. Das neue Date and Time API vereinfacht das Ganze erheblich.
  • JavaFX 8 Viele GUIs, die auf Swing basieren, wirken altbacken. Abhilfe schafft hier JavaFX als neue OberflĂ€chentechnologie. Wir betrachten Verbesserungen in JavaFX 8 und schauen kurz auf die Realisierung von Darstellungen in 3D.
  • Diverse weitere Änderungen Im JDK findet sich eine Vielzahl grĂ¶ĂŸerer und kleinerer Verbesserungen und Neuerungen. Von den diversen weiteren Änderungen in JDK 8 behandle ich stellvertretend und ĂŒberblicksartig verschiedenste Themen wie Parallel Array Sorting, Überarbeitung der Garbage Collection, die UnterstĂŒtzung von Base64 u. v. m.
Die aufgelisteten Themen stelle ich in jeweils separaten Kapiteln vor. Den Abschluss dieses Buchs bildet eine Beschreibung ĂŒber bereits fĂŒr JDK 7 vorgesehene Sprachfeatures, die es leider auch nicht in JDK 8 geschafft haben.
Entdeckungsreise JDK 8 – WĂŒnsche an die Leser
Ich wĂŒnsche allen Lesern viel Freude mit diesem Buch zu Java 8 sowie einige neue Erkenntnisse und viel Spaß bei eigenen Experimenten mit JDK 8. Möge Ihnen der Umstieg auf Lambdas und die funktionale Programmierung mit meinem Buch ein wenig leichter fallen.
Lassen Sie uns nun die Entdeckungsreise durch JDK 8 und seine Neuerungen mit einem Einstieg in das Thema Lambda-AusdrĂŒcke beginnen. Wenn Sie zunĂ€chst ein wenig mehr zu funktionaler Programmierung erfahren wollen, bietet sich ein Blick in den Anhang A an.

2 Lambda-AusdrĂŒcke

Mit Lambda-AusdrĂŒcken (kurz: Lambdas, zum Teil auch Closures genannt) wurde ein neues und von vielen Entwicklern heiß ersehntes Sprachkonstrukt in Java eingefĂŒhrt, das bereits in Ă€hnlicher Form in verschiedenen anderen Programmiersprachen wie C#, Groovy und Scala erfolgreich genutzt wird. Der Einsatz von Lambdas erfordert zum Teil eine andere Denkweise und fĂŒhrt zu einem neuen Programmierstil, der dem Paradigma der funktionalen Programmierung folgt. Mithilfe von Lambdas lassen sich einige Lösungen auf sehr elegante Art und Weise formulieren. Insbesondere im Bereich von Frameworks und zur Parallelverarbeitung kann die Verwendung von Lambdas enorme Vorteile bringen. Diverse FunktionalitĂ€ten im Collections-Framework und an anderen Stellen des JDKs wurden auf Lambdas umgestellt. Bevor wir darauf zurĂŒckkommen, schauen wir uns zunĂ€chst einmal Lambdas an sich an.
Beispiel: Sortierung nach LĂ€nge und kommaseparierte Aufbereitung
Um die Vorteile von Lambdas und auch spĂ€ter von den sogenannten Bulk Operations on Collections besser nachvollziehen zu können, betrachten wir als praxisnahes Beispiel eine Liste von Namen. Diese Namen wollen wir nach deren LĂ€nge sortieren und die LĂ€ngen danach kommasepariert ausgeben. Dazu wĂŒrden wir bis einschließlich JDK 7 in etwa folgenden Sourcecode schreiben:
// Sortierung mit Comparator
final List<String> names = Arrays.asList("Andy", "Michael", "Max", "Stefan");
Collections.sort(names, new Comparator<String>()
{
@Override
public int compare(final String str1, final String str2)
{
return Integer.compare(str1.length(), str2.length());
}
});

// Iteration und Ausgabe
final Iterator<String> it = names.iterator();
while (it.hasNext())
{
System.out.print(it.next().length() + ", "); // 3, 4, 6, 7,
}
Beim Betrachten dieser Umsetzung kann man sich fragen, ob das nicht kĂŒrzer und einfacher gehen sollte? Die Antwort ist: Ja, mit JDK 8 kann man dazu Lambdas nutzen.

2.1 Einstieg in Lambdas

Das Sprachkonstrukt Lambda kommt aus der funktionalen Programmierung. Ein Lambda ist ein BehĂ€lter fĂŒr Sourcecode Ă€hnlich einer Methode, allerdings ohne Namen und ohne die explizite Angabe eines RĂŒckgabetyps oder ausgelöster Exceptions. Vereinfacht ausgedrĂŒckt kann man einen Lambda am ehesten als anonyme Methode mit folgender Syntax und spezieller Kurzschreibweise auffassen:
(Parameter-Liste) -> { Ausdruck oder Anweisungen }

2.1.1 Lambdas am Beispiel

Ein paar recht einfache Beispiele fĂŒr Lambdas sind die Addition von zwei Zahlen vom Typ int, die Multiplikation eines long-Werts mit dem Faktor 2 oder eine parameterlose Funktion zur Ausgabe eines Textes auf der Konsole. Diese Aktionen kann man als Lambdas wie folgt schreiben:
(int x, int y) -> { return x + y; }
(long x) -> { return x * 2; }
() -> { String msg = "Lambda"; System.out.println("Hello " + msg); }
Das sieht recht unspektakulĂ€r aus, und insbesondere wird klar, dass ein Lambda lediglich ein StĂŒck ausfĂŒhrbarer Sourcecode ist, der
  • keinen Namen besitzt, sondern lediglich FunktionalitĂ€t, und dabei
  • keine explizite Angabe eines RĂŒckgabetyps und
  • keine Deklaration von Exceptions erfordert und erlaubt.
Lambdas im Java-Typsystem
Wir haben bisher gesehen, dass sich einfache Berechnungen mithilfe von Lambdas ausdrĂŒcken lassen. Wie können wir diese aber nutzen und aufrufen? Versuchen wir zunĂ€chst, einen Lambda einer java.lang.Object-Referenz zuzuweisen, so wie wir es mit jedem anderen Objekt in Java auch tun können:
// Compile-Error: incompatible types: Object is not a functional in...

Table des matiĂšres