Même si la page Web de référence d'OpenJDK pour le Java Development Kit (JDK) 13 ne liste pas encore les nouvelles fonctionnalités de la mise à niveau de l’édition standard de Java, elle précise néanmoins quelques propositions d’intégration pour la future version. Elles concernent notamment un outil d’empaquetage, les allocations de mémoire inutilisée et le partage de données de classe d’application. Annoncé pour le 17 septembre 2019, le JDK 13 sortira après les phases dites de Ramp-down et de candidate release qui auront lieu dans les prochains mois.

Propositions d'amélioration du JDK

Le futur JDK pourrait comporter un outil pour le packaging d'applications Java autonomes. Dénommé jpackage, celui-ci serait basé sur l'outil JavaFX javapackager. L’outil jpackage supporte les formats d’emballage natifs de façon à offrir à l'utilisateur une expérience d'installation naturelle. Il permet de spécifier les paramètres de lancement au moment du packaging. Il peut aussi être appelé directement par ligne de commande ou par programmation via le ToolProvider. Beaucoup d’applications doivent être installées sur une plate-forme native selon une modalité de « première classe » au lieu d'être placées sur le chemin de classe ou le chemin de module. Un outil d’emballage peut également combler les lacunes laissées par des technologies telles que Java Web Start, supprimée du JDK 11 d'Oracle. L'outil javapackager a été supprimé du JDK 11 en même temps que la suppression de JavaFX.

L’autre proposition concerne l’amélioration du ZGC (Z Garbage Collector) de façon à ce qu’il restitue la mémoire inutilisée au système d'exploitation. Il est précisé pour cette proposition qu’elle sera intégrée au JDK 13. Actuellement, le ZGC, présenté comme collecteur évolutif et à faible latence, ne renvoie pas la mémoire inutilisée au système d'exploitation, même si la mémoire n'a pas été utilisée depuis longtemps. Ce comportement n'est pas optimal pour certaines applications et certains environnements, en particulier ceux où l'empreinte mémoire représente un problème, comme les conteneurs ou les environnements où une application peut rester inactive pendant longtemps et partager ou être en concurrence avec d'autres applications pour l’usage des ressources.

Les autres fonctions attendues du JDK 13

Une troisième proposition concerne une extension du partage de données de classe applicative (AppCDS). Celle-ci doit permettre l'archivage dynamique des classes à la fin de l'exécution de l'application. Les classes archivées incluraient toutes les classes d'applications et de bibliothèques chargées qui ne sont pas présentes dans l'archive CDS par défaut de la couche de base. Cette proposition, en phase cible, doit améliorer la convivialité d'AppCDS et éviter aux utilisateurs d'effectuer des exécutions tests pour créer une liste de classes pour chaque application.

Deux fonctions prévues pour le JDK 13 ont été précédemment mentionnées par Mark Reinhold, architecte en chef Java Platform Group d’Oracle :

- Les littéraux de chaînes brutes : ils peuvent s'étendre sur plusieurs lignes de code source et n'interprètent pas les séquences d'échappement. Cette capacité avait été supprimée du JDK 12, livrée en mars 2019. Le projet est d'offrir dans le JDK 13des chaînes de caractères brutes, uniquement en version bêta et en opt-in. L’objectif est de faciliter le développement en Java, en permettant par exemple au développeur d'imprimer des séquences de caractères sous une forme lisible sans indicateurs Java, ou en fournissant des chaînes de caractères ciblées pour des grammaires autres que Java. Après ce galop d’essai dans le JDK 13, les littérales brutes des chaînes de caractères pourraient être validées pour la production dans la version suivante JDK 14.

- Une version de production des expressions de commutation, pour laquelle JDK proposera une implémentation bêta. L'instruction du commutateur sera étendue pour être utilisée soit comme instruction, soit comme expression, de sorte que tous les deux pourraient utiliser un comportement d’évaluation et de contrôle de flux « traditionnel » ou « simplifié ».

Les versions builds bêta du JDK 13 sont téléchargeables sur le site jdk.java.net. Les premières versions bêta builds du JDK 13 sont disponibles pour Linux, MacOS et Windows.