Aufbruch in neue Zeiten

Vavr 1.0 in Sicht: Das planen die Entwickler für das kommende Major Release

Dominik Mohilo

© Shutterstock.com / Photon photo (modifiziert)

Das Open-Source-Projekt Vavr (ehem. Javaslang) wurde entwickelt, um die Standardbibliothek von Java mit wichtigen Features für die funktionale Programmierung zu erweitern. Persistente Datenstrukturen, algebraische Datentypen und bessere funktionale Schnittstellen gehören zum Funktionsumfang von Vavr. Nun steht bald das erste Major Release nach der Umbenennung an. Wir haben uns angesehen, was das Vavr-Team dafür geplant hat.

Etwa drei Monate ist es her, seit mit Vavr 0.9 die erste Version von Javaslang nach dem erzwungenen Rebranding erfolgte. Natürlich sind Probleme mit dem Urheberrecht immer ätzend, aber die Lösung, die das Team gefunden hat, war doch sehr elegant. Zudem verloren die Vavr-Macher nicht ihren Mut und sahen die Chance in dem erzwungenen Namenswechsel: Wenn man sowieso alles umbenennen muss, dann kann man auch gleich möglichst viele neue Features und Änderungen implementieren, die die Rückwärtskompatibilität beeinflussen, dachte man sich und tat dies dann auch.

Vavr 1.0 – das steht an

Derzeit arbeitet man bei Vavr am ersten Patch für Version 0.9, das einige Updates und Bugfixes bringen wird. Dennoch macht das Team sich natürlich Gedanken darüber, wie man Vavr für ein kommendes Major Release umstrukturieren und verbessern kann. Zu diesem Zweck haben die Entwickler auch ein Ohr für die Community und haben aus dem Feedback einige Wünsche herausgefiltert.

Beim Sichten des Feedbacks kam heraus, dass viele Nutzer sich zunächst eine bessere Dokumentation der Java-8-Erweiterung wünschen. Die Interoperabilität mit Java und die Rückwärtskompatibilität sind ebenfalls Punkte von entscheidender Wichtigkeit, ebenso die Unterstützung zukünftiger Java-Features. Auch die Möglichkeit, Features individuell auszuwählen, steht auf der Wunschliste der Community weit oben.

Die Architektur von Vavr

Gerade letzteres „Problem“, also den Wunsch individuelle Features auswählen zu können, möchte man bei Vavr mit einer radikalen Umstrukturierung adressieren. Die Hauptbibliothek soll daher in verschiedene Module aufgeteilt werden. Neben dem positiven Effekt für die Nutzer, soll dieser Schritt auch die Wartbarkeit des Projektes vereinfachen und die Komplexität insgesamt reduzieren. Ein weiterer positiver Nebeneffekt wäre eine Beschleunigung der Build-Zeiten und der Testiterationen.

Ein Entwurf für die neue Architektur von Vavr / Quelle: Vavr-Blog

Natürlich geht die geplante Modularisierung von Vavr Hand in Hand mit der Definition von Java-9-Modulen und die Abhängigkeiten von Vavr-Features untereinander werden dadurch sichtbar. Nachteil ist allerdings, dass die geplante Umstrukturierung für die Rückwärtskompatibilität der Todesstoß wäre – die Funktionalität bliebe so erhalten, aber das API würde sich radikal verändern.

Die auf der obigen Grafik gezeigten Module sollen als großes Bundle (vavr-all-in-one) verfügbar sein und alle Kernfeatures bereitstellen. Features, die aus Sicht der Entwickler die Programmiersprache Java an sich ändern, werden als neues Modul mit Namen vavr-api angeboten. Dieses Modul soll unter anderem ein Pattern Matching und for-Comprehensions enthalten.

Das geplante Modul vavr-api / Quelle: Vavr-Blog

Das Vavr-Team arbeitet zudem an weiteren Modulen, bzw. ist dabei weitere Module zusammenzustellen. Dazu zählen etwa vavr-jackson, vavr-gwt, vavr-gson und vavr-hibernate. In Sachen Sprachunterstützung ist vavr-kotlin als Modul geplant, als Add-ons gibt es vavr-test, vavr-render und vavr-parser.

Interoperabilität & Rückwärtskompatibilität

Die schlechte Nachricht zuerst: Die Rückwärtskompatibilität wird auch weiterhin ein Problem sein. Das Team von Vavr geht nicht davon aus, dass die Semantische Versionierung die Probleme löst, die aktuell existieren und noch entstehen werden. Auch das Modul-System von Java 9 kennt da keine passende Antwort. Die einzig sichere Lösung für die parallele Nutzung verschiedener Versionen ist es, ein Repackaging der Abhängigkeiten während der Build-Phase neu zu packen.

Die gute Nachricht betrifft die Interoperabilität. Das Hauptproblem hierbei, so Daniel Dietrich auf dem Vavr-Blog, seien sich überlappende Namen für die Collections. Dieses Problem soll ganz simpel durch die Umbenennung der Collections behoben werden, sodass eine Interoperabilität gewährleistet werden kann.

Java 9, Java 10 und darüber hinaus

Im September wird Java 9 das Modulsystem Jigsaw auf die Entwicklerwelt loslassen, was allerseits für große Aufregung und Spannung sorgt. Aber die kommenden Java-Versionen hat durchaus auch andere Features zu bieten, etwa Pattern Matching, Value Types oder Primitive Generics.

Diese neuen Funktionen werden auch Vavr beeinflussen, denn so können etwa Workarounds für fehlende Sprachfeatures endlich ausgebaut und die Performanz verbessert werden. Gerade Value Types werden in Zukunft eine große Rolle für die Nutzung von Vavr spielen, da sie unveränderbar und damit auf einer Wellenlänge mit der funktionalen Programmierung sind.

Many Vavr types are algebraic data types, like our tuples, controls and (some) collections. If we are able to make value types out of tuples, they will not be wrapped anymore. Instead Java will flatten the tuple components and remove previous object headers. That is really nice!

Daniel Dietrich

Abschließend ist zu sagen, dass das Team von Vavr auch an der Dokumentation arbeiten wird. Es ist fest geplant, Vavr 1.0 nicht ohne eine fertige Dokumentation zu veröffentlichen. Auf der Wunschliste steht außerdem eine neue Homepage.

Lesen Sie auch: Funktional(er) mit Java programmieren: Vavr – der Java-Slang

Weitere Informationen zur Zukunft von Vavr, insbesondere detailliertere Einblicke in die Architektur und die neuen Features, die Java in der Zukunft bringen wird, gibt es auf dem Vavr-Blog. Allgemeine Informationen zum Projekt finden sich auf GitHub und natürlich auf der Homepage des Projektes.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.