Des record patterns (Enregistrements) et des record arrays (Tableaux), ainsi qu'un pattern matching ou filtrage par motif pour les expressions et les instructions Switch sont en passe d’améliorer la programmation Java, même si la date de livraison de ces capacités reste indéterminée. Lors d'une présentation en ligne récemment, Gavin Bierman, membre consultant de l'équipe technique d'Oracle, a déclaré que deux propositions d'amélioration du JDK (Java Development Kit) envisagées pour une prochaine version de Java étaient centrées sur ces fonctionnalités. Cette version encore indéterminée pourrait contenir ces fonctionnalités en avant-première. Évidemment, tout le monde espère qu’elles figureront dans la version 17 du JDK prévue pour septembre.

Selon le projet de proposition, la prise en charge des Enregistrements et des Tableaux, ainsi que des motifs de type (depuis Java 16), par le langage Java améliorerait considérablement l'expressivité et l'utilité du filtrage par motif, et permettrait des requêtes de données plus sophistiquées et composables. Les Enregistrements, les Tableaux et les motifs de type peuvent être imbriqués, comme des motifs dans des motifs. La syntaxe ou la sémantique des motifs de type ne serait pas modifiée.

Les apports du filtrage par motif

Ce mécanisme permet une logique commune dans un programme, à savoir l'extraction conditionnelle de composants à partir d'objets, afin qu'ils puissent être exprimés de manière plus concise et plus sûre. La proposition note qu'avec le JDK 16, publié le 16 mars, l'opérateur instanceof a été étendu pour prendre un motif de type et effectuer le filtrage par motif. Le projet de proposition de prise en charge des Enregistrements et des Tableaux s'appuie sur le filtrage par motif pour instanceof.

Quant au filtrage par motif pour Switch, il permettrait de tester une expression par rapport à un certain nombre de motifs, chacun ayant une action spécifique, ce qui permettrait d'exprimer des requêtes complexes orientées données de manière sûre et concise. Les objectifs de cette proposition visent à l'élargissement de l'expressivité et de l'applicabilité des expressions et des instructions Switch en permettant aux motifs d'apparaître dans les instructions d’étiquette case et en permettant d'assouplir l'hostilité null historique de Switch lorsque cela est souhaité.

Le projet de proposition introduit également un motif gardé, de sorte que la logique de filtrage de motif puisse être affinée avec des expressions booléennes arbitraires et le motif entre parenthèses. Les expressions Switch existantes continueraient à être compilées sans changement et s'exécuteraient avec une sémantique identique. Jusqu'à présent, les fonctionnalités officiellement prévues pour le JDK 17 comprennent des générateurs de nombres pseudo-aléatoires améliorés et un nouveau pipeline de rendu pour MacOS. D'autres fonctionnalités seront très certainement ajoutées dans les mois à venir.