AccueilActualités informatiqueLangage de programmation : Java 18 élève UTF-8 au rang de standard

Langage de programmation : Java 18 élève UTF-8 au rang de standard

La version semestrielle de Java est sortie à temps : Java 18 (Oracle JDK 18) est né de la collaboration entre les développeurs Oracle et la communauté des développeurs Java – dans le cadre de l’OpenJDK Project et du Java Community Process (JCP).

Java 18 ne bénéficie pas, comme prévu, d’un support à long terme (LTS), mais apporte de nouvelles fonctionnalités pour une performance, une stabilité et une sécurité accrues. Au total, neuf JEP (Java Enhancement Proposals) ont été intégrés dans la nouvelle version du langage de programmation. Les fonctionnalités existantes bénéficient également de nouveautés : La deuxième version de Pattern Matching pour Switch Expressions et Switch Statements présente deux changements par rapport à la première version.

Sommaire

La première version préliminaire de la correspondance de modèles pour les expressions de commutation et les déclarations de commutation est disponible depuis septembre 2021 dans la version LTS Java 17 actuelle. Java 18 apporte la deuxième version préliminaire de cette fonctionnalité, le JEP 420 correspondant décrit les nouveautés en détail.

Le Dominance Checking impose désormais qu’un Case Label constant soit placé devant un Guarded Pattern du même type. Cette modification vise à améliorer la lisibilité, comme le montre un exemple :

switch(o) {
    case -1, 1 -> ...               	// Special cases 
    case Integer i && i > 0 -> ...  	// Positive integer cases
    case Integer i -> ...           	// All the remaining integers
    default -> 
}

Selon cet exemple, les case labels sont disposés de telle sorte que les étiquettes constantes apparaissent avant les étiquettes de patterns protégés, et que ces dernières apparaissent à leur tour avant les étiquettes de patterns de type non protégés.

La deuxième nouveauté pour le pattern matching concerne l’exhaustiveness checking des blocs de commutation, qui serait devenu plus précis grâce aux hiérarchies scellées (sealed hierarchies). Ces deux nouveautés, ainsi que le principe du pattern matching pour les expressions de commutation, visant à obtenir des expressions concises et sûres de requêtes complexes orientées données, peuvent être consultés dans le JEP 420.

Java 18 définit le jeu de caractères par défaut UTF-8 pour les API Java standard, comme décrit dans JEP 400. Ainsi, les API basées sur le jeu de caractères par défaut doivent se comporter de manière uniforme dans toutes les implémentations, systèmes d’exploitation, locales et configurations. Cela devrait par exemple rendre les programmes Java plus prévisibles et plus portables.

Certains JEP spécifient à la fois des objectifs et des non-objectifs, appelés « non-goals ». Par exemple, le JEP 400 n’a pas pour objectif de définir de nouvelles API Java standard ou des API JDK supportées. Il n’est pas non plus prévu de marquer comme obsolètes ou de supprimer les API Java standard qui font appel au jeu de caractères par défaut au lieu d’utiliser un paramètre de jeu de caractères explicite.

Le Simple Web Server est également présent dans Java 18 : le langage de programmation offre désormais un outil de ligne de commande pour lancer un serveur web minimal, qui sert uniquement de serveur pour les fichiers statiques. Les fonctions de type CGI et Servlet n’y sont pas incluses. Le Simple Web Server doit être adapté au prototypage, au codage ad hoc et aux tests, surtout dans un contexte d’enseignement.

Le JEP 408 correspondant déclare comme objectif un serveur de fichiers HTTP statique out-of-the-box avec une configuration simple et des fonctions minimales. En revanche, l’objectif n’est pas d’offrir des fonctions de sécurité telles que l’authentification, le contrôle d’accès ou le cryptage – le serveur est délibérément conçu uniquement pour le test, le développement et le débogage.

Java 18 peut être téléchargé chez Oracle et bénéficie, selon la feuille de route, d’un support jusqu’en septembre 2022, date de sortie de Java 19. Toutes les nouveautés sont présentées dans les notes de publication.

Plus d'articles