Funktionale Programmierung ist mehr als Java 8

Seite 5: Fazit

Inhaltsverzeichnis

Dieser Artikel hat nur einen Aspekt der funktionalen Programierung ausführlich behandeln können, den Java 8 zwar technisch umsetzen kann, allerdings immer noch unnötig umständlich und unsystematisch. Java 8 hinkt aber in einer ganzen Reihe weiterer Aspekte ebenfalls hinterher:

  • Viele funktionale Sprachen, etwa Scala, erlauben die direkte Definition algebraischer Datentypen, was in Java 8 mit noch größerem Overhead verbunden ist als die Definition von Game mit Konstruktor, Gettern, Settern, equals und hashCode. (In Clojure ist das wegen des dynamischen Typsystems gar nicht erst nötig.)
  • Viele funktionale Sprachen, zum Beispiel wieder Scala, bringen ein mächtigeres Typsystem als das von Java mit. (Nahezu alle Innnovationen im Java-Typsystem seit Version 1.5 kommen ursprünglich aus der funktionalen Programmierung.)
  • Funktionale Programmiersprachen bringen umfangreiche Bibliotheken für persistente Datenstrukturen mit, die nicht "in situ" verändert werden müssen. Java 8 liefert immerhin die neue persistente Klasse LocalDate mit. Die Collections haben davon leider in Java 8 noch nichts mitbekommen.
  • Funktionale Programmiersprachen ermöglichen aufgrund der größeren syntaktischen Flexibilität und der gesteigerten Abstraktionsmöglichkeiten bessere Unterstützung für die Realisierung eingebetteter domänenspezifischer Sprachen.
  • Fortgeschrittene Konzepte aus der funktionalen Programmierung wie Funktoren oder Monaden, die dort alltäglich verwendet werden, sind in Java 8 nicht direkt abbildbar.

Für Java-Programmierer sind Lambda-Ausdrücke und Streams eine tolle Sache. Sie erhöhen die Ausdrucksfähigkeit der Sprache erheblich und damit auch die Produktivität. Java holt damit aber nur Sprachelemente nach, die es in funktionalen Sprachen schon immer gab – insbesondere bei Clojure und Scala, die auf der Java-Plattform genauso gut laufen wie Java selbst. Dort ist die funktionale Programmierung noch komfortabler und wird es auch bleiben. Wem also die neuen Features gefallen und wer sich einen strategischeren Ausblick für eigene Software-Projekte leisten kann, sollte überlegen, für das nächste Projekt (oder die nächste größere Erweiterung des aktuellen Java-Projekts) eine dieser Sprachen zu benutzen.

Michael Sperber
ist technischer Geschäftsführer bei Active Group GmbH in Filderstadt, die Softwareprojekte fast ausschließlich mit funktionaler Programmierung umsetzt. Er entwickelt, forscht und veröffentlicht mit funktionaler Programmierung seit 1994 und ist Mitbegründer und regelmäßiger Autor des Blogs Funktionale Programmierung. (ane)