Lors d’une présentation le 17 mars à la conférence JavaOne à Redwood City en Californie, Dan Smith développeur senior chez Oracle au sein du groupe Plateforme Java, a cité les fonctionnalités prévues prochainement dans Java. Elles visent à minimiser les interruptions, à faciliter la manipulation des données immuables, à privilégier une approche déclarative plutôt qu'impérative. Par ailleurs, elles ambitionnent de réduire les interfaces entre les différentes fonctionnalités. Et la réduction du temps d'activation de Java a également été mentionnée comme un axe prioritaire.
Parmi les fonctionnalités envisagées figurent les classes et objets de valeur. Il s’agit d’une proposition d’amélioration de Java (JEP) qui préconise d'enrichir la plateforme Java avec des objets de valeur : des instances de classes ne possédant que des champs `final` et dépourvues d'identité d'objet. Créée en août 2020 et mise à jour ce mois-ci, cette requête a pour objectif de permettre aux développeurs d'adopter un modèle de programmation pour les valeurs de domaine, dans lequel les objets sont distingués uniquement par les valeurs de leurs champs, à l'instar de la différence entre les entiers `int` 3 et `int` 4. Elle vise également à faciliter la migration compatible des classes existantes représentant des valeurs de domaine vers ce modèle de programmation, et à optimiser la capacité de la JVM à stocker ces valeurs afin d'améliorer l'empreinte mémoire, la localité des données et l'efficacité du ramasse-miettes.
Enregistrements dérivés, types primitifs et tableaux
Une autre proposition (créée en novembre 2023 et mise à jour en avril 2024) est relative à la création d'enregistrements dérivés, actuellement en préversion. Elle offre un moyen concis de créer de nouvelles valeurs d'enregistrement à partir de valeurs existantes. Pour cela, elle élimine la nécessité de déclarer des enregistrements de classe via les méthodes explicites`wither' (rendant immuable l'attribution de valeur). La proposition note que les enregistrements étant des valeurs immuables, les développeurs en créent fréquemment d’autres pour intégrer des données supplémentaires.
Dan Smith a également évoqué la JEP sur l’encapsulation des types primitifs (créée en janvier 2021 et mis à jour en novembre 2025), actuellement en préversion. Elle utilise l'encapsulation pour prendre en charge les améliorations du langage qui traitent les types primitifs comme des types référence. L'un des objectifs est d'autoriser l'encapsulation des valeurs primitives lorsqu'elles sont utilisées comme « récepteur » d'un accès à un champ, d'un appel de méthode ou d'une référence de méthode. Le développeur senior a parlé aussi parlé de la proposition relative à l'extension des types primitifs aux instructions`instanceof` et `switch`nécessaires pour vérifier si un objet référencé par une variable a été créé sur la base d'une classe. L’objectif est d’améliorer la correspondance de motifs en autorisant les types primitifs dans tous les contextes de motifs et en étendant les fonctions `instanceof` et `switch` pour qu'elles fonctionnent avec tous les types primitifs.
Enfin concernant les tableaux, les pistes envisagées incluent des expressions pour la création de tableaux. Ainsi pour les déclaratifs, une fonction donnera la capacité de se servir de l’expression lambda pour calculer des valeurs initiales. Pour les tableaux `final``, les éléments ne peuvent pas être modifiés et doivent être initialisés de manière déclarative. Les tableaux de types primitifs covariants peuvent traiter un tableau `int[]` comme un tableau `Integer[]` non nul.

Commentaire