Rheinwerk Computing < openbook >

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


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

Pfeil 13 Lambda-Ausdrücke und funktionale Programmierung
Pfeil 13.1 Funktionale Schnittstellen und Lambda-Ausdrücke
Pfeil 13.1.1 Klassen implementieren Schnittstellen
Pfeil 13.1.2 Lambda-Ausdrücke implementieren Schnittstellen
Pfeil 13.1.3 Funktionale Schnittstellen
Pfeil 13.1.4 Der Typ eines Lambda-Ausdrucks ergibt sich durch den Zieltyp
Pfeil 13.1.5 Annotation @FunctionalInterface
Pfeil 13.1.6 Syntax für Lambda-Ausdrücke
Pfeil 13.1.7 Die Umgebung der Lambda-Ausdrücke und Variablenzugriffe
Pfeil 13.1.8 Ausnahmen in Lambda-Ausdrücken
Pfeil 13.1.9 Klassen mit einer abstrakten Methode als funktionale Schnittstelle? *
Pfeil 13.2 Methodenreferenz
Pfeil 13.2.1 Motivation
Pfeil 13.2.2 Methodenreferenzen mit ::
Pfeil 13.2.3 Varianten von Methodenreferenzen
Pfeil 13.3 Konstruktorreferenz
Pfeil 13.3.1 Parameterlose und parametrisierte Konstruktoren
Pfeil 13.3.2 Nützliche vordefinierte Schnittstellen für Konstruktorreferenzen
Pfeil 13.4 Funktionale Programmierung
Pfeil 13.4.1 Code = Daten
Pfeil 13.4.2 Programmierparadigmen: imperativ oder deklarativ
Pfeil 13.4.3 Das Wesen der funktionalen Programmierung
Pfeil 13.4.4 Funktionale Programmierung und funktionale Programmiersprachen
Pfeil 13.4.5 Funktionen höherer Ordnung am Beispiel von Comparator
Pfeil 13.4.6 Lambda-Ausdrücke als Abbildungen bzw. Funktionen betrachten
Pfeil 13.5 Funktionale Schnittstellen aus dem java.util.function-Paket
Pfeil 13.5.1 Blöcke mit Code und die funktionale Schnittstelle Consumer
Pfeil 13.5.2 Supplier
Pfeil 13.5.3 Prädikate und java.util.function.Predicate
Pfeil 13.5.4 Funktionen über die funktionale Schnittstelle java.util.function.Function
Pfeil 13.5.5 Ein bisschen Bi …
Pfeil 13.5.6 Funktionale Schnittstellen mit Primitiven
Pfeil 13.6 Optional ist keine Nullnummer
Pfeil 13.6.1 Einsatz von null
Pfeil 13.6.2 Der Optional-Typ
Pfeil 13.6.3 Erst mal funktional mit Optional
Pfeil 13.6.4 Primitiv-Optionales mit speziellen Optional*-Klassen
Pfeil 13.7 Was ist jetzt so funktional?
Pfeil 13.8 Zum Weiterlesen
 

Zum Seitenanfang

13.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-Versionen im Bereich Pattern Matching stellt Brian Goetz im Video https://www.youtube.com/watch?v=n3_8YcYKScw vor; unter https://openjdk.java.net/jeps/406 gibt es die Projektbeschreibung, und in Java 17 lässt sich das sogar schon über einen ––enable–preview -Schalter nutzen. 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. Diese Lücken stopft zum Beispiel https://www.vavr.io, das auch neben immutablen Datenstrukturen eine neue Implementierung von Optional bietet und einen 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 https://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: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




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

InfoInfo




Copyright © Rheinwerk Verlag GmbH 2024

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