Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Ausnahmen müssen sein
9 Geschachtelte Typen
10 Besondere Typen der Java SE
11 Generics<T>
12 Lambda-Ausdrücke und funktionale Programmierung
13 Architektur, Design und angewandte Objektorientierung
14 Java Platform Module System
15 Die Klassenbibliothek
16 Einführung in die nebenläufige Programmierung
17 Einführung in Datenstrukturen und Algorithmen
18 Einführung in grafische Oberflächen
19 Einführung in Dateien und Datenströme
20 Einführung ins Datenbankmanagement mit JDBC
21 Bits und Bytes, Mathematisches und Geld
22 Testen mit JUnit
23 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Download:

- Listings, ca. 2,7 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil12 Lambda-Ausdrücke und funktionale Programmierung
Pfeil12.1 Funktionale Schnittstellen und Lambda-Ausdrücke
Pfeil12.1.1 Klassen implementieren Schnittstellen
Pfeil12.1.2 Lambda-Ausdrücke implementieren Schnittstellen
Pfeil12.1.3 Funktionale Schnittstellen
Pfeil12.1.4 Der Typ eines Lambda-Ausdrucks ergibt sich durch den Zieltyp
Pfeil12.1.5 Annotation @FunctionalInterface
Pfeil12.1.6 Syntax für Lambda-Ausdrücke
Pfeil12.1.7 Die Umgebung der Lambda-Ausdrücke und Variablenzugriffe
Pfeil12.1.8 Ausnahmen in Lambda-Ausdrücken
Pfeil12.1.9 Klassen mit einer abstrakten Methode als funktionale Schnittstelle? *
Pfeil12.2 Methodenreferenz
Pfeil12.2.1 Motivation
Pfeil12.2.2 Methodenreferenzen mit ::
Pfeil12.2.3 Varianten von Methodenreferenzen
Pfeil12.3 Konstruktorreferenz
Pfeil12.3.1 Parameterlose und parametrisierte Konstruktoren
Pfeil12.3.2 Nützliche vordefinierte Schnittstellen für Konstruktorreferenzen
Pfeil12.4 Funktionale Programmierung
Pfeil12.4.1 Code = Daten
Pfeil12.4.2 Programmierparadigmen: imperativ oder deklarativ
Pfeil12.4.3 Das Wesen der funktionalen Programmierung
Pfeil12.4.4 Funktionale Programmierung und funktionale Programmiersprachen
Pfeil12.4.5 Funktionen höherer Ordnung am Beispiel von Comparator
Pfeil12.4.6 Lambda-Ausdrücke als Abbildungen bzw. Funktionen betrachten
Pfeil12.5 Funktionale Schnittstellen aus dem java.util.function-Paket
Pfeil12.5.1 Blöcke mit Code und die funktionale Schnittstelle Consumer
Pfeil12.5.2 Supplier
Pfeil12.5.3 Prädikate und java.util.function.Predicate
Pfeil12.5.4 Funktionen über die funktionale Schnittstelle java.util.function.Function
Pfeil12.5.5 Ein bisschen Bi …
Pfeil12.5.6 Funktionale Schnittstellen mit Primitiven
Pfeil12.6 Optional ist keine Nullnummer
Pfeil12.6.1 Einsatz von null
Pfeil12.6.2 Der Optional-Typ
Pfeil12.6.3 Primitive optionale Typen
Pfeil12.6.4 Erst mal funktional mit Optional
Pfeil12.6.5 Primitiv-Optionales mit speziellen OptionalXXX-Klassen
Pfeil12.7 Was ist jetzt so funktional?
Pfeil12.8 Zum Weiterlesen
 

Zum Seitenanfang

12.8    Zum Weiterlesen Zur vorigen ÜberschriftZur nächsten Überschrift

Funktional zu programmieren, ändert grundlegend das Design von Java-Programmen – weg von Methoden mit Seiteneffekten hin zu kleinen Funktionen, die Objekte mit neuen Zuständen liefern. Die Zukunft wird uns Muster und Best Practices an die Hand geben, wie in Java entwickelt wird. Auch wird sich zeigen, ob weitere Konzepte der funktionalen Programmierung in Java bzw. die JVM einfließen werden. Bisher ist zum Beispiel Immutability kein Sprachkonstrukt, sondern durch die API gewährleistet, wenn es keine Setter oder Schreibzugriffe auf Variablen gibt; Reflection kann uns aber auch hier einen bösen Strich durch die Rechnung machen. Ansätze für kommende Java-Version im Bereich Pattern Matching stellt Brian Goetz im Video http://www.youtube.com/watch?v=n3_8YcYKScw vor; unter http://openjdk.java.net/jeps/305 gibt es die Projektbeschreibung. Die Optimierung von Endrekursion (engl. tail call optimization) aufseiten der JVM – etwas, was in anderen funktionalen Programmiersprachen immer hochgehalten wird – ist aktuell nicht in der HotSpot JVM implementiert.

Java liefert im Paket java.util.function für die üblichen Szenarien funktionale Schnittstellen aus. Das reicht unter Umständen nicht. Es gibt zum Beispiel keine funktionale Schnittstelle mit drei oder acht Parametern. Mit vielen weiteren Stopfen füllen http://www.vavr.io und http://github.com/jOOQ/jOOL die Lücken, etwa auch mit immutable Datenstrukturen oder neben dem Optional auch mit neuen Try-Monaden.

Entwickler, die noch tiefer in die Denkweise funktionaler Programmierung eintauchen möchten, können sich mit puren funktionalen Programmiersprachen wie Haskell beschäftigen und müssen dort ohne Seiteneffekte auskommen. Etwas einfacher für Java-Programmierer ist die Sprachfamilie ML, die auch imperative Elemente wie while-Schleifen bietet. Für Java-Programmierer wirkt das meist fremd – die hippen Programmiersprache Scala oder Kotlin vereinen objektorientierte und funktionale Programmierung nahezu perfekt. Java-Entwickler profitieren am meisten von den funktionalen Ansätzen bei der Stream-API, die schon kurz angerissen wurde und in meinem Buch »Java SE 9 Standard-Bibliothek« intensiv diskutiert wird.

Die Umsetzung der Lambda-Ausdrücke wurde sehr kurz angerissen. Ausführlicher macht das zum Beispiel http://dzone.com/articles/hacking-lambda-expressions-in-java.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Objektorientierte Programmierung

Objektorientierte Programmierung




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2021

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern