Alors que la sortie du Java Development Kit (JDK) 23 est attendue pour le 17 septembre, son successeur est programmé pour mars 2025. Les équipes d’Oracle travaillent sur les prochaines fonctionnalités dont certaines seront disponible sen avant-première dans la JDK 23. Parmi elles, une est destinée à restreindre l’usage de la JNI (Java Native Interface). À noter aussi que, comme le JDK 23, le JDK 24 n’est pas une version LTS (Long Terme Support), et qu’il bénéficiera du support Premier d’Oracle pendant six mois.
Officiellement appelée « Prepare to Restrict the Use of JNI », cette fonctionnalité du JDK 24 prévoit l'émission d'avertissements concernant l'utilisation de la JNI ainsi que l'ajustement de l'API « Foreign Function & Memory » (FFM) Cette dernière est présente dans le JDK 22, pour rendre cohérente l’émission de ces avertissements et préparer une future version qui garantira l'intégrité par défaut en restreignant uniformément la JNI et l'API FFM. L’objectif est de faire que la JNI soit utilisée systématiquement pour interopérer avec le code natif, préparer l'écosystème Java à de futures versions qui interdiront par défaut l'interopérabilité avec le code natif, et aligner l'utilisation de la JNI et de l'API FFM afin que les responsables de bibliothèques puissent migrer de l'une à l'autre sans demander aux développeurs de modifier les options de la ligne de commande.
D’autres fonctionnalités ajoutées
Les autres fonctionnalités ajoutées au JDK 24 seront déterminées au cours des prochains mois, dont, éventuellement, les nouveaux preview ou les versions finales de fonctionnalités ayant fait l'objet d'un aperçu dans le JDK 23. C’est le cas notamment de la Class-File API, pour l'analyse, la génération et la transformation des fichiers de classe Java ; des collecteurs de flux, destinés à améliorer l'API de flux pour des opérations intermédiaires personnalisées ; des déclarations d'importation de module, qui permettront d’importer succinctement tous les paquets exportés par un module et de simplifier la réutilisation des bibliothèques modulaires ; de la concurrence structurée ou structured concurrency, pour simplifier la programmation concurrente ; des scoped values, pour le partage des données immuables ; et des corps de constructeurs flexibles, qui donnent aux développeurs une plus grande liberté dans l'expression du comportement des constructeurs.
Une autre fonctionnalité qui sera livrée en avant-première dans le JDK 23, et en lice pour le JDK 24, est celle des types primitifs dans les motifs, instanceof et switch, qui vise à améliorer la correspondance des motifs en autorisant les motifs de type primitif dans tous les contextes de motifs, et à étendre instanceof et switch pour qu'ils fonctionnent avec tous les types primitifs. Une autre fonctionnalité, peut-être incluse dans le JDK 24, est l'API vectorielle, qui atteindra sa huitième phase d'incubation dans le JDK 23. Cette API est destinée à exprimer des calculs vectoriels de manière fiable au moment de l'exécution vers des instructions vectorielles optimales sur les architectures de processeurs prises en charge. Le chargement de classes Ahead-of-time, une fonctionnalité destinée à accélérer les démarrages de Java, et les Template Strings, une fonctionnalité présentée en avant-première dans le JDK 21 et le JDK 22, mais abandonnée dans le JDK 23, pourraient également être ciblés dans le JDK 24.