Le kit de développement Java (JDK) 21 est dans une phase initiale de mise en œuvre depuis le 8 juin. L'ensemble des fonctionnalités étant désormais gelé, l'une d'entre elles devrait être supprimée, à savoir la fonctionnalité générationnelle Shenandoah, une capacité expérimentale qui devait améliorer le ramasse-miettes éponyme (Garbage Collector, GC).

La page de proposition d'amélioration du JDK (JEP) pour le JDK 21, dont la mise en production est prévue pour le 19 septembre, propose à présent de réduire l'ensemble des fonctionnalités officielles de 16 à 15, après suppression du ramasse-miettes Shenandoah générationnel. Le retrait est motivé par un manque de maturité. Roman Kennke d'Amazon, l'auteur du JEP pour le Shenandoah générationnel, a décidé de le retirer du JDK, ou simplement de Java 21, avec l'intention de l'évaluer dans une prochaine version du JDK quand il sera prêt, selon Oracle, qui supervise le développement du Java standard.

En faire un mode par défaut dans le futur

Le projet vise à améliorer le ramasse-miette avec des capacités expérimentales de collecte générationnelle afin de rendre le débit durable, la résistance aux pics de charge et l'utilisation de la mémoire plus efficaces. Il prévoit notamment de fournir un mode générationnel expérimental sans interrompre le Shenandoah non générationnel, pour en faire le mode par défaut dans une version future. L’objectif est aussi de réduire l'empreinte mémoire sans sacrifier les pauses du GC, limiter l’usage du CPU et de l'énergie, de maintenir un débit élevé et de diminuer le risque de collections dégénérées et complètes pendant les pics d'allocation. Shenandoah, qui n'est pas générationnel, ne sera pas remplacé.

La proposition de suppression, dont la période d'examen s'étend jusqu'au 14 juin, ne concerne que les utilisateurs du GC Shenandoah dans les versions d'OpenJDK qui le prennent en charge. Elle n'a pas d'incidence sur le GC G1, le Z Garbage Collector (ZGC) ou d'autres ramasse-miettes modernes. Cela n'a pas non plus d'incidence sur les distributions Java qui utilisent le G1 GC et le ZGC, comme Oracle OpenJDK et Oracle JDK. Cette version JDK 21 de Java, et ses autres fonctionnalités comme la prévisualisation de la concurrence structurée, devrait bénéficier d'un support à long terme (LTS) et recevoir plusieurs années de support. La dernière version LTS était le JDK 17, arrivé en septembre 2021. Les versions JDK sont publiées tous les six mois et les versions LTS tous les deux ans. Les versions de fonctionnalités livrées par ailleurs ne bénéficient que de six mois de support. La version actuelle est le JDK 20, qui a été publié en mars.