ZIO vs Loom

Le projet Loom est un projet du JDK qui a pour but de proposer aux développeurs sur JVM d’exploiter les fibres à travers la notion de threads virtuels. Les fibres permettent de bénéficier d’une abstraction, qui vont venir palier les problèmes rencontrés avec les threads du système d’exploitation (ou threads plateformes), à savoir une consommation mémoire par thread non négligeable (~1 Mo) et un temps de démarrage et de context switching importants.

Les fibres vont s’avérer être intéressant dans le cadre d’échange de données avec des ressources, que ce soit avec les systèmes de stockage de masse ou la communication réseau.

Les threads virtuels sont actuellement disponibles en preview dans la version 19 de l’OpenJDK. Mais en parallèle, la notion de fibre disponibles depuis 2019 dans ZIO et ZIO 2 propose une implémentation améliorée.

D’un côté, nous avons les threads virtuels qui sont une implémentation impérative en Java comportant des parties en C, se basant une approche spécifique du système ForkJoin de Java et censé être prévu pour tous les usages de la JVM. De l’autre côté, nous les fiber de ZIO qui propose une implémentation Scala seulement permettant de respecter les principes de la programmation fonctionnelle.