Vavr Java: Vollständige Anleitung mit Code-Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Vavr für Java: Das ultimative Handbuch zur funktionalen Programmierung

1. Was ist Vavr und warum braucht man sie?

Vavr (früher bekannt als Javaslang) ist eine leistungsstarke Bibliothek für funktionale Programmierung in Java. Sie bietet unveränderliche (immutable) Collections, funktionale Datenstrukturen und Hilfsmittel für Higher-Order-Funktionen. Im Gegensatz zum standardmäßigen Java Collections Framework legt Vavr den Fokus auf Unveränderlichkeit (Immutability) und ausdrucksstarken Code. Das ermöglicht vorhersagbarere, nebenläufigkeitssichere und prägnantere Programme.

Warum Vavr? Moderne Java-Versionen (ab Java 8) haben zwar Lambda-Ausdrücke und das Stream-API eingeführt, aber die Standard-Collections sind weiterhin veränderbar (mutable). Das führt zu Seiteneffekten, Komplexität in der Multithread-Programmierung und viel Boilerplate-Code. Vavr löst diese Probleme mit:

  • Unveränderlichen Collections (List, Set, Map) mit einem reichhaltigen API, ähnlich wie in Scala oder Kotlin.
  • Typen wie Option, Try, Either, Validation für die sichere Verarbeitung von null, Ausnahmen und Fehlern – ganz ohne try-catch-Blöcke.
  • Tupel (Tuple) zum Bündeln von Werten unterschiedlicher Typen, ohne separate DTOs erstellen zu müssen.
  • Funktionale Interfaces (FunctionN, CheckedFunction) mit Komposition, Memoization und partieller Applikation.
  • Faule Berechnungen (Lazy) und Pattern Matching.

Vavr ist besonders nützlich in Projekten, die hohe Zuverlässigkeit erfordern (Finanzsysteme, Datenverarbeitung), in der Nebenläufigkeit (Unveränderlichkeit vereinfacht Parallelisierung) oder einfach für alle, die deklarativeren und sauberen Code schreiben möchten. Vavr ersetzt Java nicht, sondern ergänzt es – Sie wählen das richtige Werkzeug für jede Aufgabe.

2. Installation

Vavr wird über Maven Central verteilt. So binden Sie es in Ihr Projekt ein:

Maven

<dependency>
    <groupId>io.vavr</groupId>
    <artifactId>vavr</artifactId>
    <version>0.10.4</version>
</dependency>

Gradle

implementation 'io.vavr:vavr:0.10.4'

Gradle (Kotlin DSL)

implementation("io.vavr:vavr:0.10.4")

Für das Java-9+-Modulsystem fügen Sie in module-info.java hinzu:

requires vavr;

Die aktuelle Version zum Zeitpunkt der Erstellung dieses Artikels ist 0.10.4 (veröffentlicht 2019, aber stabil und weit verbreitet). Die neueste Version finden Sie auf MVNRepository.

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen Sie die Klasse VavrDemo.java und führen Sie sie aus:

import io.vavr.collection.List;
import io.vavr.control.Option;

public class VavrDemo {
    public static void main(String[] args) {
        // Erstellen einer unveränderlichen Liste
        List<Integer> numbers = List.of(1, 2, 3, 4, 5);

        // Funktionale Transformation
        List<Integer> doubled = numbers
            .filter(n -> n % 2 == 0)   // gerade Zahlen
            .map(n -> n * 2);          // verdoppeln

        System.out.println(doubled); // List(4, 8)

        // Option als Alternative zu Optional
        Option<String> maybeName = Option.of("Anna");
        String greeting = maybeName
            .map(name -> "Hallo, " + name)
            .getOrElse("Hallo, Fremder");

        System.out.println(greeting); // Hallo, Anna
    }
}

Dieses Beispiel zeigt zwei Kernfunktionen: unveränderliche Collections mit Methodenverkettung und die sichere null-Behandlung mit Option.

4. Wichtige Methoden, Funktionen und Klassen

4.1. Option – Der sichere Ersatz für Optional

Empfehlungen