Illustration vectorielle épurée d'un personnage anthropomorphe devant un écran affichant des schémas de modèles d'IA, avec un cube abstrait symbolisant une base de données vectorielle.

TornadoVM 8.0 et JNoSQL 1.2.0 : nouveau compilateur et support vectoriel

La version 8.0.0 de TornadoVM représente une évolution significative pour cet écosystème : le compilateur passe au pur Java, remplaçant le Graal Compiler et l’interface JVMCI qui faisaient partie de son ADN depuis une décennie. Selon InfoQ, cette transition introduit le TornadoVM Compiler (TC), capable de traduire des noyaux Java en langages comme CUDA C++, OpenCL C ou Metal Shading Language. Il est intéressant de noter que les développeurs ne devraient pas avoir à réécrire leur code ; des classes existantes comme TaskGraph ou KernelContext conservent leur compatibilité avec TC.

Ce changement s’accompagne d’améliorations notables sur l’aspect démarrage. TornadoVM tire parti de GraalVM Native Image et de JEP 516, le Ahead-of-Time Object Caching avec n’importe quel GC, sous l’égide du Projet Leyden, ce qui promet des temps de démarrage plus courts. Les instructions pour utiliser cette nouvelle version sont disponibles sur GitHub, exigeant de sélectionner l’archive selon votre JDK (21 à 27) et le backend accélérateur souhaité (opencl, cuda, metal ou full).

L’évolution des données structurées et non structurées

Pendant que TornadoVM se concentre sur l’accélération des calculs, Eclipse JNoSQL 1.2.0 apporte une réponse concrète aux besoins des applications modernes en matière de recherche sémantique. Cette version ajoute un support complet pour les bases de données vectorielles, grâce au module jnosql-mapping-vector. On trouve désormais des représentations denses, éparses (sparse) et multi-vecteurs, permettant des recherches sophistiquées basées sur la similarité.

L’API devient plus fluide. JNoSQL introduit un VectorTemplate qui permet d’effectuer des requêtes vectorielles avec filtrage, rendant l’accès aux données plus intuitif. De plus, les intégrations avec des systèmes externes comme Milvus, Qdrant et Weaviate sont désormais natives, selon les notes de version de JNoSQL.

Collage en papier découpé montrant des shards de données superposés, illustrant le traitement des données de séries temporelles et des embeddings vectoriels.

Quand le temps et l’espace se croisent

Au-delà des données vectorielles, JNoSQL affine son traitement des séries temporelles. L’introduction de TimeSeriesTemplate permet d’effectuer des requêtes temporelles fluides. Les opérations spécifiques telles que latest, earliest, since ou until sont désormais disponibles pour interroger les données basées sur des conditions temporelles précises. C’est une avancée qui montre la volonté du projet d’adopter les modèles de données complexes nécessaires aux systèmes d’observation ou de monitoring.

Parallèlement à ces avancées en Java, le monde du développement connaît d’autres mouvements. Dans le domaine de la gestion de paquets, JReleaser 1.27.0 permet désormais d’appeler son Tool Provider via les Modules Java. De plus, Quarkus a lancé son Almanac, un outil qui permet de comparer les changements entre différentes versions du framework, remontant jusqu’à novembre 2018.

Il faudra voir comment ces changements en matière de compilation (TC) et de gestion des données (VectorTemplate) vont interagir lorsque les applications devront gérer des flux de travail d’apprentissage automatique lourds sur des infrastructures hétérogènes.

Sources