Toujours placé parmi les trois langages les plus populaires selon l'indice Tiobe d'avril, Java est utilisé dans presque tous les secteurs d’activité. Indépendant des plateformes, il peut facilement passer d’un système à l’autre, dispose d’un bon support et ses développeurs peuvent recourir à des milliers de bibliothèques. Quelques mois après la livraison du JDK 17, première version LTS (long-term support) depuis Java 11, un rapport de New Relic apporte des données actualisées sur l'utilisation du langage en production. Pour le réaliser, l’éditeur spécialisé dans la surveillance des performances applicatives a anonymisé les données gérées par sa plateforme pour établir à grands traits l’état de l’écosystème Java.
Premier constat par rapport à son 1er rapport publié en 2020, Java 11 est devenu le nouveau standard. Il y a deux ans, la grande majorité des applications (près de 85%) fonctionnaient sur la v.8, alors que la v.11 était disponible depuis plus d’un an. L’équilibre s’est maintenant fait entre les deux versions puisque plus de 48% des applications utilisent Java 11 en production (contre 11% en 2020) tandis que 46,45% reposent toujours sur la v.8. Les anciennes versions, comme Java 6 (0,27%) et 7 (1,71%), sont encore en service, alors que la première n’est plus supportée et que le support de la 2ème s’arrête à la fin de cette année. Cela concerne surtout des applications héritées non mises à jour. L’usage de Java 17 démarre (0,37%) mais dépasse déjà celui de Java 16 (0,09).
La distribution Amazon du JDK utilisée par 22% des applications
Depuis Java 9, chaque semestre apporte de nouvelles fonctionnalités au langage dans une version non-LTS qui ne sera supportée que jusqu’à la suivante. L’adoption de ces versions provisoires reste extrêmement faible par rapport aux versions LTS en production, constate le rapport. Seules 2,7% des applications les utilisent, principalement la 14 (0,95%). Il est vrai que la plupart des fournisseurs ne fournissent pas de correctifs pour ces versions.
Sur l’origine du JDK utilisé, des changements sont intervenus ces dernières années. Alors qu’en 2020, Oracle s'attribuait près de 75% du marché, ce pourcentage est tombé à 34,5% au profit d’autres distributions, en particulier de celle d’Amazon aujourd'hui arrivée à 22% contre seulement 2,18% en 2020. Juste derrière, on trouve celle d’Eclipse Adoptium (11,5%). Le rapport note qu’avant la sortie du JDK 17, Eclipse Adoptium devançait Amazon. Derrière arrivent Azul Systems (8,17%), Red Hat (6%), IcedTea (5,38%), Ubuntu (2,9%) et BellSoft (2,5%).
G1, le garbage collector le plus utilisé depuis Java 11
Autre constat, les containers sont devenus très populaires : plus de 70% des applications Java passant par New Relic utilisent des containers. Cela impacte la façon dont sont allouées les ressources de compute et la mémoire. Le rapport montre aussi une proportion plus importante d’applications fonctionnant avec moins de 4 coeurs lorsqu’elles sont en containers. Ces déploiements réduits se comprennent dans les environnements clouds où l’on déploie davantage de containers, mais cela peut présenter des problèmes inattendus sur certaines applications, soulève New Relic. En particulier, la plupart des avantages du garbage collector G1 sur les récentes machines virtuelles Java (JVM) disparaissent lorsqu’elles fonctionnent avec moins de deux coeurs. Les instances à un seul coeur pourraient donc tout aussi bien utiliser le Serial garbage collector. Le rôle du « ramasse-miette » (qui libère automatiquement de la mémoire) est central dans la performance des JVM et G1 apparaît clairement comme le plus utilisé par ceux qui ont laissé Java 8 derrière eux.