Funktionale Programmierung in Java
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 Programmie...
Autor principal: | |
---|---|
Formato: | Electrónico eBook |
Idioma: | Indeterminado Alemán |
Publicado: |
[S.l.] :
dpunkt,
2020.
|
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
MARC
LEADER | 00000cam a2200000Mu 4500 | ||
---|---|---|---|
001 | OR_on1202562928 | ||
003 | OCoLC | ||
005 | 20231017213018.0 | ||
006 | m d | ||
007 | cr |n||||||||| | ||
008 | 201010s2020 xx o ||| 0 und d | ||
040 | |a VT2 |b eng |c VT2 |d UAB |d OCLCO |d OCLCF |d ERF |d CZL |d OCLCO |d OCLCQ | ||
019 | |a 1295597209 |a 1300487741 |a 1303298110 | ||
020 | |a 9783864907579 | ||
020 | |a 3864907578 | ||
020 | |a 3960889844 | ||
020 | |a 9783960889847 | ||
020 | |a 1098124618 | ||
020 | |a 9781098124618 | ||
029 | 1 | |a AU@ |b 000071521768 | |
035 | |a (OCoLC)1202562928 |z (OCoLC)1295597209 |z (OCoLC)1300487741 |z (OCoLC)1303298110 | ||
041 | |a ger | ||
082 | 0 | 4 | |a 004 |q OCoLC |
049 | |a UAMI | ||
100 | 1 | |a Prähofer, Herbert. | |
245 | 1 | 0 | |a Funktionale Programmierung in Java |h [electronic resource] / |c Herbert Prähofer. |
260 | |a [S.l.] : |b dpunkt, |c 2020. | ||
300 | |a 1 online resource | ||
336 | |a text |b txt |2 rdacontent | ||
337 | |a computer |b c |2 rdamedia | ||
338 | |a online resource |b cr |2 rdacarrier | ||
347 | |a text file | ||
500 | |a Title from content provider. | ||
520 | |a 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. | ||
505 | 0 | |a 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. | |
505 | 8 | |a 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. | |
505 | 8 | |a 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. | |
590 | |a O'Reilly |b O'Reilly Online Learning: Academic/Public Library Edition | ||
650 | 0 | |a Computer programming. | |
650 | 0 | |a Java (Computer program language) | |
650 | 6 | |a Programmation (Informatique) | |
650 | 6 | |a Java (Langage de programmation) | |
650 | 7 | |a computer programming. |2 aat | |
650 | 7 | |a Computer programming. |2 fast |0 (OCoLC)fst00872390 | |
650 | 7 | |a Java (Computer program language) |2 fast |0 (OCoLC)fst00982065 | |
776 | |z 3-86490-757-8 | ||
856 | 4 | 0 | |u https://learning.oreilly.com/library/view/~/9781098124618/?ar |z Texto completo (Requiere registro previo con correo institucional) |
994 | |a 92 |b IZTAP |