Funktionale Programmierung in Java (eBook)

Eine umfassende Einführung
eBook Download: EPUB
2020 | 1. Auflage
342 Seiten
dpunkt (Verlag)
978-3-96088-985-4 (ISBN)

Lese- und Medienproben

Funktionale Programmierung in Java -  Herbert Prähofer
Systemvoraussetzungen
34,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

Ihr Weg vom objektorientiertem zum funktionalem Java

  • Was ist Funktionale Programmierung?
  • Wie funktioniert Funktionale Programmierung in Java?
  • Was sind Techniken, Muster und Best Practices für den Einsatz von Funktionaler Programmierung in Java?

'Funktionale Programmierung in Java' eignet sich sowohl für Java-Einsteiger, die sich die funktionalen Aspekte von Java genauer ansehen wollen, als auch für erfahrene Java-Entwickler, die ihre objektorientierten Kenntnisse um funktionalen Konzepte erweitern wollen. Nach der Lektüre wissen sie, wie Sie mit Ansynchronität und Nebenläufigkeit umgehen können. Streams, Monaden und Co. werden Ihren Programmierstil bereichern.



Herbert Prähofer ist Professor für Informatik an der Johannes Kepler Universität Linz, Österreich. Seine Forschungsschwerpunkte liegen im Bereich der Methoden der Softwareentwicklung und des Software Engineerings, mit aktuellen Schwerpunkten im Bereich statischer Programmanalyse und Produktlinien-Engineering. Er ist Autor und Ko-Autor von über 100 Publikationen in wissenschaftlichen Zeitschriften, Konferenzbänden und Büchern. Seit 2007 ist er im Studium Informatik für die Ausbildung in funktionaler Programmierung zuständig und hält dazu Vorlesungen 'Prinzipien von Programmiersprachen', 'Objekt-funktionale Programmierung in Scala' und 'Funktionale Programmierung in Java'.

Herbert Prähofer ist Professor für Informatik an der Johannes Kepler Universität Linz, Österreich. Seine Forschungsschwerpunkte liegen im Bereich der Methoden der Softwareentwicklung und des Software Engineerings, mit aktuellen Schwerpunkten im Bereich statischer Programmanalyse und Produktlinien-Engineering. Er ist Autor und Ko-Autor von über 100 Publikationen in wissenschaftlichen Zeitschriften, Konferenzbänden und Büchern. Seit 2007 ist er im Studium Informatik für die Ausbildung in funktionaler Programmierung zuständig und hält dazu Vorlesungen "Prinzipien von Programmiersprachen", "Objekt-funktionale Programmierung in Scala" und "Funktionale Programmierung in Java".

Vorwort


Dieses Buch gibt eine Einführung in die funktionale Programmierung in der Sprache Java. Wir kennen Java als eine Sprache, die auf dem objektorientierten Programmierparadigma beruht und wir sind gut mit dieser Art der Programmierung vertraut. Und wir wissen, dass die in Java 8 eingeführten Lambda-Ausdrücke die Grundlage für eine funktionale Programmierung bilden. Aber rechtfertigt dieses neue Sprachfeature ein Buch mit 300 Seiten?

Wie wir sehen werden, unterscheidet sich funktionale Programmierung grundsätzlich von unserer gewohnten Welt der imperativen und objektorientierten Programmierung. Schon die Ursprünge sind gänzlich unterschiedlich. Während imperative Programmierung als Abstraktion von Maschinencode und objektorientierte Programmierung aus der Motivation, Dinge der Realität abzubilden, entstanden sind, wurde funktionale Programmierung auf Basis einer mathematischen Theorie, dem Lambda-Kalkül, geschaffen. Mehr erfahren Sie dazu in Kapitel 1 dieses Buches.

Für eine funktionale Programmierung muss man sich daher auf andere Denkweisen, Prinzipien und Programmiermuster einlassen. Dieses Buch will diese Denkweisen, Prinzipien und Programmiermuster mit ihrer Ausgestaltung in Java und die darauf aufbauenden Techniken und Systeme vermitteln. Es orientiert sich dabei stark an den vielfältigen Ideen, Konzepten und Anwendungen, die die Forschung zur funktionalen Programmierung in 60 Jahren hervorgebracht hat. In dem Sinne kann das Buch auch als ein Versuch gesehen werden, dieses vielfältige Wissen auf eine Programmierung in Java zu übertragen. Das Buch verfolgt daher sehr explizit das Ziel, nicht nur die Sprachkonzepte und die neuen Systeme und Bibliotheken zu beschreiben, sondern ganz besonders auch die grundlegenden Ideen und Prinzipien zu vermitteln und damit ein tieferes Verständnis für die funktionale Programmierung zu schaffen.

Das Buch hat seinen Ursprung in Lehrveranstaltungen zur funktionalen Programmierung, die ich seit mehreren Jahren an der Johannes Kepler Universität Linz halte. Dazu gehört eine Speziallehrveranstaltung zur funktionalen Programmierung in Java und eine Lehrveranstaltung zu den Prinzipien der funktionalen Programmierung, die sich auf die Konzepte der rein-funktionalen Sprache Haskell stützt. Eine weitere wichtige Erfahrung, die in dieses Buch eingeflossen ist, war die Beschäftigung und das Arbeiten mit der Programmiersprache Scala. Scala sehe ich als Vorbild für einen Sprachentwurf, der objektorientierte und funktionale Konzepte systematisch vereint. In diesem Sinne war Scala in vielerlei Hinsicht auch Vorbild für die Gestaltung der funktionalen Konzepte in Java.

Zielgruppe


Das Buch richtet sich an Softwareentwickler bzw. Studenten der Informatik, die bereits Erfahrung mit objektorientierter Programmierung in Java haben und sich in das neue Paradigma der funktionalen Programmierung einarbeiten wollen. Die umfassende Behandlung des Themas sollte den Erwerb von fundierten Kenntnissen der funktionalen Programmierung in Java ermöglichen. Das Buch kann aber auch verwendet werden, um sich gezielt Kenntnisse von spezifischen Techniken anzueignen. Der folgende Abschnitt »Pfade durch das Buch« informiert über mögliche Kapitelfolgen beim Lesen.

Das Buch eignet sich auch besonders als begleitendes Lehrbuch zu Vorlesungen zum Thema funktionale Programmierung in Java. Des Weiteren würde ich das Buch als ergänzendes Lehrbuch zu einer Lehrveranstaltung zu fortgeschrittenen Programmiertechniken in Java oder zu einer sprachunabhängigen Einführung in die funktionale Programmierung empfehlen.

Aufbau des Buchs


Das Buch teilt sich konzeptionell in drei Teile: Im ersten Teil, der die Kapitel 1 und 2 umfasst, werden die Grundlagen zu einer funktionalen Programmierung gelegt. Der zweite Teil umfasst die Kapitel 3 bis 6 und vermittelt wichtige Prinzipien der funktionalen Programmierung in Java. Im dritten Teil mit den Kapiteln 7 bis 11 werden wichtige Techniken, Systeme und Bibliothekskomponenten beschrieben. Das Buch schließt in Kapitel 12 mit einem Blick auf die derzeitigen Grenzen der funktionalen Programmierung in Java und mögliche zukünftige Entwicklungen.

Im Einzelnen behandeln die Kapitel folgende Themen:

  • In Kapitel 1 wird eine allgemeine Einführung in die funktionale Programmierung inklusive der geschichtlichen Entwicklung gegeben.
  • Kapitel 2 behandelt die sprachlichen Grundlagen von Java für die funktionale Programmierung. Dazu gehören nicht nur die Lambda-Ausdrücke, sondern auch Generics sowie die neuen Default-Methoden bei Interfaces.
  • Kapitel 3 befasst sich mit der Programmierung ohne Seiteneffekte. In diesem Kapitel werden auch elementare funktionale Datenstrukturen eingeführt, die in Folge immer wieder verwendet werden.
  • Kapitel 4 geht umfassend auf das Arbeiten mit Funktionsparametern ein. Anhand einer Reihe von Fallbeispielen wird gezeigt, wie mit Funktionsparametern Methoden mit hohem Abstraktionsgrad realisiert werden können.
  • Kapitel 5 befasst sich mit der Kombination von Funktionen. Es werden die Prinzipien und Möglichkeiten dargestellt, wie man mit Kombinationsoperatoren aus einfachen funktionalen Bausteinen komplexe Funktionen aufbauen kann.
  • Im Kapitel 6 werden die in den vorherigen Kapiteln gefundenen Prinzipien und Programmmuster in einen allgemeinen Kontext gestellt. Es wird sich zeigen, dass sich dahinter sehr allgemeine, breit einsetzbare Strukturen verbergen, die ihren Ursprung in der Mathematik haben und damit entsprechende formale Eigenschaften mitbringen.
  • Kapitel 7 ist das erste Kapitel zu Techniken und Systemen und enthält eine detaillierte Einführung in das Arbeiten mit den funktionalen Streams.
  • In einem eigenen Kapitel 8 gehen wir dann auf die parallele Ausführung bei Streams ein.
  • In Kapitel 9 wird die Implementierung asynchroner Tasks auf Basis von CompletableFutures behandelt.
  • Kapitel 10 gibt eine detaillierte Einführung in das System RxJava, das eine Implementierung der reaktiven Streams für eine Programmierung von asynchronen Ereignisströmen bereitstellt.
  • Kapitel 11 enthält eine kurze Darstellung der Anwendung funktionaler Methoden bei Unit-Tests sowie eine Einführung in eigenschaftsbasiertes Testen nach der Methode von QuickCheck.
  • Im abschließenden Kapitel 12 wird ein Einblick auf weiterführende Konzepte der funktionalen Programmierung gegeben, wie sie in den Sprachen Scala und Kotlin zur Verfügung stehen. Es gibt auch Hinweise auf Features, die bei Java für zukünftige Releases geplant sind.
  • Der Appendix beinhaltet die Daten zu den Experimenten, die die Einflüsse unterschiedlicher Faktoren auf die Laufzeit von parallelen Streams zeigen.

Pfade durch das Buch


Abhängig von Interesse und Vorkenntnissen bieten sich mehrere Varianten für die Abfolge der Kapitel dieses Buches an. Auch ein Lesen einzelner Themen ist möglich. In den einzelnen Kapiteln sind des Öfteren Verweise zu Inhalten und Beispielen aus früheren Kapiteln gegeben, die man dann eventuell zielgerichtet nachlesen kann.

Des Weiteren beinhaltet Kapitel 5 zwei Abschnitte mit fortgeschrittenen Anwendungsbeispielen. Diese Abschnitte können bei der Erstlektüre übersprungen werden, ohne dass das Lesen der folgenden Kapitel beeinträchtigt wird. Auf diese Möglichkeit wird bei den Abschnitten in der Form von Fußnoten hingewiesen.

Im Folgenden sind mehrere mögliche Kapitelfolgen angegeben.

Vollständiger Pfad

Es ist offenkundig, dass ein Lesen der Kapitel 1 bis 12 empfohlen wird, wobei eventuell die gekennzeichneten Abschnitte mit fortgeschrittenen Themen ausgespart werden können. Mit dem Lesen der Kapitel 3 bis 6, in denen die allgemeinen Prinzipien der funktionalen Programmierung vermittelt werden, soll auch ein Verständnis für die Gestaltung der in den Kapiteln 7 bis 11 dargestellten Techniken und Systeme geschaffen werden.

Techniken

Ein weiterer Pfad bietet sich an, wenn man primär an den bekannten Techniken und Systemen und weniger an den allgemeinen Prinzipien der funktionalen Programmierung in Java interessiert ist. Hier besteht die Möglichkeit, mit Kapitel 1 und 2 die Grundlagen zu erwerben und dann mit den Techniken und Systemen in den Kapiteln 7 bis 11 fortzufahren. Bei Verweisen zu Inhalten aus früheren Kapiteln kann man diese zielgerichtet nachlesen.

Einzelne Techniken

Das Buch bietet auch die Möglichkeit, sich einzelne Techniken zu erarbeiten. Man startet wieder mit Kapitel 1 und 2 zu den Grundlagen und kann dann:

  • für Streams mit dem Kapitel 7 gefolgt von Kapitel 8 fortsetzen
  • für asynchrone Ausführungsmodelle das Kapitel 9 lesen, wobei hier die parallelen Streams vorausgesetzt werden und daher das Lesen von Kapitel...

Erscheint lt. Verlag 28.7.2020
Reihe/Serie Programmieren mit dpunkt
Programmieren mit Java
Programmieren mit Java
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Informatik Programmiersprachen / -werkzeuge Java
Schlagworte Apis • asynchronen Programmierung • Java lernen • Java Streams • Kotlin • Programmieren lernen • reaktive Streams • Scala
ISBN-10 3-96088-985-2 / 3960889852
ISBN-13 978-3-96088-985-4 / 9783960889854
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Wasserzeichen)
Größe: 2,5 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Einführung, Ausbildung, Praxis

von Christian Ullenboom

eBook Download (2023)
Rheinwerk Computing (Verlag)
34,93
Moderne GUIs für RIAs und Java-Applikationen

von Ralph Steyer

eBook Download (2022)
Springer Fachmedien Wiesbaden (Verlag)
42,99