Les langages fonctionnels ont amené trois idées fondamentales en programmation depuis les années 60.
La première consiste à paramétrer les types utilisés dans les langages. Cette idée a été adoptée en Java en 2004 avec Java 5, sous la forme des génériques. La seconde consiste à définir un type de fonction. Ce type est défini à partir des arguments que prend une fonction, et du type de ce qu’elle retourne. L’adoption de cette idée a pris du temps, et a été finalisée en 2014 avec Java 8. Tout comme pour les génériques, Java n’a pas été spécialement rapide à adopter les lambda expressions. Le bénéfice en est que Java a des lambdas performantes et qui n’ont pas certains défauts qu’elles peuvent avoir dans les autres langages.
Le pattern matching est la troisième idée que Java est en train d’adopter. Java publie à present une version majeure tous les six mois, ce qui nous permet de voir le pattern matching apparaître dans le langage étape par étape. Nous avons eu une modification de instanceof, puis une évolution du switch. Nous avons vu arriver les Record. Un grand puzzle est en train de se contruire, qui nous amènera de nouvelles façons de programmer. Le pattern matching est la prochaine avancée majeure de Java. Son impact sur la façon d'écrire les applications sera équivalent à celui des génériques et des lambda expressions.
Je vous propose de parler de tous ces points, de voir ce que l’on peut faire avec le pattern matching aujourd’hui, et ce que l’on peut en attendre dans les versions qui viennent.