« Nous poussons la technologie Java dans ses derniers retranchements en termes de haute performance », expose Antoine Chambille, directeur de la recherche et développement d’ActiveViam, société spécialisée dans l’analyse de données et la prise de décision avec sa base de données in-memory ActivePivot. Depuis plusieurs années, cet éditeur franco-américain contribue à améliorer les performances de Java en travaillant étroitement avec les équipes d’Oracle. A travers ce lien privilégié, Antoine Chambille porte un regard singulier sur les évolutions du langage disponible en open source. Lors d’un entretien, il nous a livré une lecture personnelle de la stratégie des concepteurs de Java telle qu’il l’analyse à travers les fonctionnalités de Java 10, 11 et 12. Et en particulier sur leurs efforts pour s’ouvrir vers les nouvelles générations de développeurs. En quelques mots, le directeur R&D est d’abord revenu sur l’origine de la collaboration d'ActiveViam avec Oracle. Celle-ci remonte à 2014, lorsqu’un cas d’usage dans la finance de marché, pour une banque française, a nécessité de porter ActivePivot sur de très grands volumes de données, entièrement en mémoire. « Concrètement, il fallait faire fonctionner une application Java sur un serveur avec plusieurs téraoctets de mémoire. Et en 2014, c’était considéré comme absolument impossible », remet en mémoire Antoine Chambille. Le garbage collector de Java, système de gestion automatisée de la mémoire, ne pouvait gérer que 100 Go au plus.
Une « task force » se monte alors entre l’éditeur franco-américain et la R&D d’Oracle pour réaliser un prototype sur des versions spéciales de la JVM compilées par les développeurs de Java afin d’exploiter ActivePivot sur 16 To. La réussite de l’opération conduit Antoine Chambille à présenter les solutions trouvées sur la conférence JavaOne à San Francisco en 2015. Dès lors, la base de données in-memory se pose comme benchmark pour valider les aspects haute performance de Java. « Nous avons travaillé de plus près avec les équipes en charge du garbage collector, notamment dispersées entre Stockholm et Vienne, car c’est le sujet-clé pour améliorer le support des grandes mémoires », relate le directeur R&D. Il s’agissait, poursuit-il, de faire tomber un par un tous les remparts qui gênait le fonctionnement d’une application in-memory computing de grande taille avec ActivePivot comme logiciel de référence, appliqué à des cas concrets d’application. Java 9 était alors en finalisation avec d’importantes améliorations apportées par l’algorithme de garbage collector G1, avec du code parallèle permettant d’utiliser plusieurs cœurs pour travailler. « Depuis, nous continuons à apporter notre feed back sur ce que nous aimerions voir s’améliorer sur Java dans le futur pour mieux faire tourner ce type d’applications big data très rapides auxquelles on demande de répondre tout de suite, à la vitesse requise par un utilisateur en mode interactif », indique Antoine Chambille.
Un pas vers le notebook : « What you code is what you see »
A l’heure de Java 10, 11 et 12, la haute performance constitue toujours un sujet de premier plan. Mais le directeur R&D d’ActiveViam assiste à d’autres évolutions intéressantes, par exemple dans la façon d’aborder les utilisateurs du langage open source. « Je vois que dans les versions de Java qui se présentent à nous, il y a une volonté de retrouver le plaisir des développeurs, de redevenir développeur friendly en quelque sorte », constate-t-il. « Je vois bien quand je recrute que le profil type des développeurs change beaucoup en ce moment, tout comme à une époque les ingénieurs qui écrivaient du C++ se sont raréfiés, remplacés par les ingénieurs Java finalement, qui préféraient se concentrer sur autre chose que la gestion de la mémoire ou les compilateurs. » Les forums de recrutement laissent transparaître le fait que les ingénieurs perdent le goût de construire du software, de compiler, de packager et préfèrent se tourner vers des utilisations plus proches du notebook, estime le directeur R&D.
Or, lorsque l'on évoque les notebooks, ce n'est pas spontanément Java qui vient à l'esprit, mais les outils et langages utilisés par les data scientists pour le big data. « Je pense donc que ceux qui font Java voudraient bien ne pas perdre la prochaine génération de développeurs ». Dans un notebook, on écrit son code presque ligne par ligne et on en voit tout de suite l’effet. « What you code is what you see », décrit Antoine Chambille, « et on voit assez nettement une volonté d’amener Java vers ça. Par exemple, en Java 9, l’outil VShell permet de faire du code Java en mode interactif : on écrit une ligne, on voit le résultat, on écrit une 2ème ligne, etc. C’est un peu l’esprit. »
Des variables non typées jusque dans les lambdas
En Java 10, l’outil est considérablement amélioré. « Il y a la possibilité de définir des variables non typées avec le mot-clé VAR », rappelle le responsable du développement chez ActiveViam. Pour Java, c’est un changement important. Depuis les débuts du langage, toutes les variables que l’on déclarait devaient être fortement typées, exigeant de préciser s’il s’agit d’une chaîne de caractères, d’un nombre, etc. Désormais, on peut déclarer une variable sans type. « Lorsque l’on tape du code de façon un peu impulsive, cela aide beaucoup », pointe Antoine Chambille. « En Java 11, on voit également qu’ils vont porter cet usage des variables non typées jusque dans les expressions lambdas », ces extensions fonctionnelles qui ont été intégrées dans Java 8. Cela signifie que les lambdas, ces petites fonctions écrites inline, pourront véritablement être très concises, aussi concises qu’en Python, en R ou en Scala, compare le directeur R&D d'ActiveViam.
« C’est quand même assez fort, l’idée que Java ne doit pas se faire déclasser des nouveaux usages des data scientists et des notebooks », argumente le directeur R&D en expliquant que le sujet le préoccupe au-delà même de Java. « Nos logiciels chez ActiveViam sont également influencés, on les fait évoluer aussi pour qu’ils puissent être consommés par cette nouvelle famille d’ingénieurs. » Si dès lors, les jeunes générations davantage tentées par les langages tournant autour des big data et de la data science délaissent Java, y a-t-il un risque de voir manquer les compétences pour maintenir les applications Java existantes ? Pour Antoine Chambille, c’est une évidence. « Mais je ne sais pas si le risque est vraiment très dangereux parce que dans quelques années les ingénieurs qui ont encore le goût des systèmes, les ingénieurs systèmes qui écriront sans doute en Java, travailleront chez Google ou chez ActiveViam. Finalement, il n’y aura plus besoin de développer des logiciels from scratch dans les entreprises, sans doute. On peut imaginer que ces notebooks ou, disons, des programmeurs moins impliqués, suffiront et permettront vraiment de bâtir des applications complètes sans qu’il y ait de limites. Donc, je ne sais pas si le manque d’ingénieurs Java constituera un problème, mais sans doute qu’ils seront un jour aussi rares que les ingénieurs C ou C++ ».
A venir dans un 2ème volet : Java et les architectures cloud