Vavr Java : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Vavr pour Java : Guide complet de programmation fonctionnelle

1. Qu'est-ce que Vavr et pourquoi l'utiliser ?

Vavr (anciennement Javaslang) est une bibliothèque puissante pour la programmation fonctionnelle en Java. Elle propose des collections immuables, des structures de données fonctionnelles et des utilitaires pour travailler avec des fonctions d'ordre supérieur. Contrairement à la Java Collections Framework standard, Vavr met l'accent sur l'immutabilité et l'expressivité du code, permettant d'écrire des programmes plus prévisibles, thread-safe et concis.

Pourquoi utiliser Vavr ? Java moderne (à partir de la version 8) a introduit les expressions lambda et le Stream API, mais les collections standard restent mutables. Cela entraîne des effets de bord, des difficultés en programmation concurrente et beaucoup de code boilerplate. Vavr résout ces problèmes en offrant :

  • Des collections immuables (List, Set, Map) avec une API riche, similaire à Scala ou Kotlin.
  • Les types Option, Try, Either, Validation pour gérer null, les exceptions et les erreurs sans blocs try-catch.
  • Des tuples (Tuple) pour regrouper des valeurs de types différents sans créer de DTO.
  • Des interfaces fonctionnelles (FunctionN, CheckedFunction) avec composition, mémoïsation et application partielle.
  • L'évaluation paresseuse (Lazy) et le Pattern Matching.

Vavr est particulièrement utile dans les projets nécessitant une haute fiabilité (systèmes financiers, traitement de données), la concurrence (l'immutabilité simplifie le parallélisme) ou simplement l'envie d'écrire un code plus déclaratif et propre. Elle ne remplace pas Java standard, mais le complète, vous permettant de choisir le bon outil pour chaque tâche.

2. Installation

Vavr est disponible sur Maven Central. Pour l'ajouter à votre projet, utilisez l'un des systèmes de build suivants :

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")

Pour le système de modules Java 9+, ajoutez dans module-info.java :

requires vavr;

La version actuelle au moment de la rédaction est la 0.10.4 (sortie en 2019, mais stable et largement utilisée). Vérifiez la dernière version sur MVNRepository.

3. Démarrage rapide — exemple minimal fonctionnel

Créez une classe VavrDemo.java et exécutez-la :

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

public class VavrDemo {
    public static void main(String[] args) {
        // Création d'une liste immuable
        List<Integer> numbers = List.of(1, 2, 3, 4, 5);

        // Transformation fonctionnelle
        List<Integer> doubled = numbers
            .filter(n -> n % 2 == 0)   // pairs
            .map(n -> n * 2);          // doubler

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

        // Option à la place d'Optional
        Option<String> maybeName = Option.of("Alice");
        String greeting = maybeName
            .map(name -> "Bonjour, " + name)
            .getOrElse("Bonjour, inconnu");

        System.out.println(greeting); // Bonjour, Alice
    }
}

Cet exemple illustre deux fonctionnalités clés : les collections immuables avec chaînage de méthodes et la gestion sécurisée de null via Option.

4. Méthodes, fonctions et classes principales

4.1. Option — alternative sécurisée à Optional

Recommendations