My Account Log in

1 option

Funktionale Programmierung in Java / Prähofer, Herbert.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Prähofer, Herbert, author.
Language:
English
German
Subjects (All):
Epitonium.
Java lernen.
Kotlin.
programmieren lernen.
APIs.
Java Streams.
asynchronen Programmierung.
reaktive Streams.
Physical Description:
1 online resource (342 pages)
Edition:
1st edition
Place of Publication:
dpunkt, 2020.
System Details:
text file
Summary:
Mit der Version 8 erhielt die objektorientierte Programmiersprache Java die Möglichkeit, mit ihr funktional zu programmieren. Dieser Programmierstil hat seitdem bei Java-Entwicklern immer mehr an Popularität gewonnen, getrieben durch den Trend zu datenzentrierten Anwendungen und neueren Programmiersprachen, die funktionale Programmierung (z.B. Scala, Kotlin) einfach möglich machen. Das Buch richtet sich sowohl an Einsteiger in Java, die einen tieferen Einblick in die funktionale Seite der Sprache erhalten möchten, als auch an erfahrene Java-Entwickler, die ihre tägliche Arbeit um funktionale Aspekte erweitern möchten.
Contents:
Intro
Inhaltsverzeichnis
Vorwort
1 Einleitung
1.1 Elementare Konzepte und Begriffe
1.2 Funktionale Programmierung in Java
2 Sprachliche Grundlagen
2.1 Java Generics
2.1.1 Typparameter
2.1.2 Typconstraints
2.1.3 Ko- und Kontravarianz
2.1.4 Typinferenz bei Generics
2.1.5 Schwachstellen der Generics in Java
2.2 Default-Methoden
2.3 Lambda-Ausdrücke
2.3.1 Formen von Lambda-Ausdrücken
2.3.2 Typ eines Lambda-Ausdrucks
2.3.3 Ausnahmen bei Lambda-Ausdrücken
2.3.4 Closures
2.4 Funktionale Interfaces
2.5 Methodenreferenzen
2.6 Zusammenfassung
3 Programmieren ohne Seiteneffekte
3.1 Reine Funktionen
3.1.1 Iteration vs. Rekursion
3.1.2 Referentielle Transparenz und Ersetzungsprinzip
3.1.3 Funktionen mit Gedächtnis
3.2 Funktionale Ausnahmebehandlung mit Optional
3.3 Funktionale Listen
3.3.1 Beispielanwendung
3.4 Paare und Tupel
3.5 Zusammenfassung
4 Programmieren mit Funktionsparametern
4.1 Listenverarbeitung mit Funktionen höherer Ordnung
4.2 Flexible Programmschnittstellen
4.3 Algorithmen
4.3.1 Tiefensuche
4.3.2 Verallgemeinerung der Suche
4.4 Entwurfsmuster
4.4.1 Strategie
4.4.2 Kommando
4.4.3 Besucher
4.5 Eingebettete und bedingte Ausführung
4.5.1 Eingebetteter Code
4.5.2 Bedingte Ausführung
4.5.3 Fallunterscheidungen
4.5.4 Typtests
4.6 Auswertung nach Bedarf
4.6.1 Faule Iteratoren
4.6.2 Unendliche Folgen
4.6.3 Faule Iteration über die Knoten eines Graphen
4.7 Zusammenfassung
5 Kombination von Funktionen
5.1 Flüssige Schnittstellen
5.2 Funktionskomposition
5.2.1 Aufrufketten beim funktionalen Interface Function
5.2.2 Logische Verknüpfungen bei Predicate
5.2.3 Bilden von Vergleichsketten mit Comparator
5.2.4 Beispiel-Workflows
5.3 Kombinator-Parser.
5.3.1 Parser und Parser-Ergebnisse
5.3.2 Kombinationsoperatoren
5.3.3 Parser für Boolesche Ausdrücke
5.4 Domänen-spezifische Sprachen
5.4.1 Fallbeispiel Zustandsmaschinen
5.5 Zusammenfassung
6 Funktoren, Monoide und Monaden
6.1 Funktoren
6.1.1 Funktor Optional
6.1.2 Gesetze und Eigenschaften
6.2 Monoide und Reduktion
6.2.1 Monoide
6.2.2 Reduktion
6.2.3 Monoide in Java
6.2.4 Reduzierbare Strukturen
6.2.5 Anwendungsbeispiele zur Reduktion mit Monoiden
6.3 Monaden
6.3.1 Monade Optional
6.3.2 Monade Parser
6.3.3 Gesetze
6.3.4 Bedeutung von Monaden
6.3.5 MonadPlus: Monade mit monoider Kombination
6.4 Zusammenfassung
7 Streams
7.1 Grundlagen von Streams
7.1.1 Ein erstes Beispiel
7.1.2 Externe vs. interne Iteration
7.1.3 Bedarfsauswertung
7.2 Klassen von Streams
7.3 Stream-Operationen
7.3.1 Erzeuger-Operationen
7.3.2 Zwischenoperationen
7.3.3 Terminal-Operationen
7.4 Collectors
7.4.1 Interface Collector
7.4.2 Vordefinierte Collectors
7.4.3 Downstream Collectors
7.4.4 Eine eigene Collector-Implementierung
7.5 Anwendungsbeispiele
7.5.1 Ergebnisauswertung mit Streams
7.5.2 Wortindex zu einem Text
7.6 Hinweise
7.6.1 Einmal-Iteration
7.6.2 Begrenzung von unendlichen Streams
7.6.3 Zustandslose und zustandsbehaftete Operationen
7.6.4 Reihenfolge von Operationen
7.6.5 Kombinationen von Operationen
7.7 Interne Implementierung
7.7.1 Beispiel
7.8 Zusammenfassung
8 Parallele Streams
8.1 Erzeugen von parallelen Streams
8.2 Parallele Ausführung
8.2.1 Spliterators
8.2.2 Ausführung durch Fork/Join-Pool
8.2.3 Konfiguration des Fork/Join-Thread-Pools
8.3 Bedingungen bei paralleler Ausführung
8.3.1 Parallele Ausführung und Seiteneffekte
8.3.2 Parallele Ausführung und zustandsbehaftete Berechnungen.
8.3.3 Eigenschaften der Parameter von reduce
8.3.4 Paralleles Sammeln
8.4 Laufzeit
8.5 Zusammenfassung
9 Asynchrone Funktionsketten
9.1 Eine Lösung mit parallelen Streams
9.2 Asynchrone Lösung mit Futures
9.3 CompletableFuture
9.4 Asynchrone Programmschnittstellen
9.5 CompletableFuture als Promise
9.6 Kombination von CompletableFutures
9.6.1 Beispiel
9.7 Zusammenfassung
10 Reaktive Streams
10.1 Grundlagen
10.1.1 Kontrakt von Observable
10.1.2 Erzeugen von Observables
10.1.3 Anmelden und Abmelden von Observer
10.2 Varianten
10.2.1 Single
10.2.2 Completable
10.2.3 Maybe
10.3 Hot und Cold Observables
10.3.1 ConnectableObservable
10.3.2 Beispiel Echtzeitdaten
10.4 Operationen
10.4.1 Abbildungen
10.4.2 Filtern und Teilmengen
10.4.3 Reduktion
10.4.4 Sammeln
10.4.5 Operationen mit Zeit
10.4.6 Kombinationen
10.4.7 Konvertierungen
10.4.8 Seiteneffekte
10.5 Nebenläufigkeit
10.5.1 Serialisierung von nebenläufigen Ereignissen
10.5.2 subscribeOn und Scheduler
10.5.3 observeOn
10.6 Fehlerbehandlung
10.6.1 Fehlerereignisse auslösen
10.6.2 Auf Fehler reagieren
10.7 Rückstau und Flusskontrolle
10.7.1 Reduktion der Menge der Ereignisse
10.7.2 Flowables
10.8 Testen reaktiver Streams
10.9 Zusammenfassung
11 Testen mit und von Funktionen
11.1 Funktionsparameter bei JUnit 5
11.2 AssertJ: Eine DSL für Unit-Tests
11.3 Eigenschaftsbasiertes Testen nach QuickCheck
11.3.1 Generatoren von Zufallswerten
11.3.2 Tests
11.3.3 Shrinken der Werte
11.4 Zusammenfassung
12 Weiterführende Konzepte
A Bibliografie
B Laufzeitexperimente Parallele Streams
Index.
Notes:
Online resource; Title from title page (viewed July 7, 2020)
PublicationDate: 20200728
Includes bibliographical references and index.
ISBN:
9783960889847
3960889844
9781098124618
1098124618
OCLC:
1181841117

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account