Version Java SE 18

Après six mois de développement, Oracle a publié Java SE 18 (Java Platform, Standard Edition 18), qui utilise le projet open source OpenJDK comme implémentation de référence. À l'exception de la suppression de certaines fonctionnalités obsolètes, Java SE 18 conserve une compatibilité ascendante avec les versions précédentes de la plate-forme Java : la plupart des projets Java précédemment écrits fonctionneront sans modification lorsqu'ils seront exécutés sous la nouvelle version. Des versions prêtes à l'installation de Java SE 18 (JDK, JRE et Server JRE) sont préparées pour Linux (x86_64, AArch64), Windows (x86_64) et macOS (x86_64, AArch64). Développée par le projet OpenJDK, l'implémentation de référence Java 18 est entièrement open source sous licence GPLv2, avec des exceptions GNU ClassPath permettant une liaison dynamique avec des produits commerciaux.

Java SE 18 est classé comme version de support général et continuera à recevoir des mises à jour jusqu'à la prochaine version. La branche Long Term Support (LTS) devrait être Java SE 17, qui continuera à recevoir des mises à jour jusqu'en 2029. Rappelons qu'à partir de la sortie de Java 10, le projet est passé à un nouveau processus de développement, impliquant un cycle plus court pour la formation des nouvelles versions. Les nouvelles fonctionnalités sont désormais développées dans une branche principale constamment mise à jour, qui comprend des modifications prêtes à l'emploi et à partir de laquelle des branches sont créées tous les six mois pour stabiliser les nouvelles versions.

Les nouvelles fonctionnalités de Java 18 incluent :

  • L'encodage par défaut est UTF-8. Les API Java qui traitent les données texte en fonction du codage des caractères utiliseront désormais UTF-8 par défaut sur toutes les plates-formes, quels que soient les paramètres système et les paramètres régionaux. Pour revenir à l'ancien comportement, où l'encodage est choisi en fonction des paramètres régionaux du système, vous pouvez utiliser l'option "-Dfile.encoding=COMPAT".
  • Le package comprend le package com.sun.net.httpserver, qui inclut l'utilitaire jwebserver et l'API de bibliothèque avec l'implémentation d'un simple serveur http pour servir du contenu statique (les gestionnaires CGI et de type servlet ne sont pas pris en charge). Le serveur HTTP intégré n'est pas optimisé pour les charges de travail et ne prend pas en charge le contrôle d'accès et l'authentification, car il est principalement destiné à être utilisé dans le processus de développement pour des projets de prototypage, de débogage et de test.
  • JavaDoc prend en charge la balise « @snippet » pour intégrer des exemples de travail et des extraits de code dans la documentation de l'API, où vous pouvez utiliser des outils de validation, la coloration syntaxique et l'intégration de l'IDE.
  • L'implémentation de l'API java.lang.reflect (Core Reflection), conçue pour obtenir des informations sur les méthodes, les champs et les constructeurs de classes, ainsi que l'accès à la structure interne des classes, a été repensée. L'API java.lang.reflect elle-même reste inchangée, mais est désormais implémentée à l'aide de descripteurs de méthode fournis par le module java.lang.invoke, au lieu d'utiliser des générateurs de bytecode. Le changement nous a permis d'unifier les implémentations de java.lang.reflect et java.lang.invoke et de simplifier leur maintenance.
  • Un troisième aperçu de l'API Vector a été proposé, fournissant des fonctions de calculs vectoriels exécutés à l'aide d'instructions vectorielles sur les processeurs x86_64 et AArch64 et permettant d'appliquer simultanément des opérations à plusieurs valeurs (SIMD). Contrairement aux fonctionnalités fournies par le compilateur HotSpot JIT pour la vectorisation automatique des opérations scalaires, la nouvelle API permet de contrôler explicitement la vectorisation pour le traitement parallèle des données.
  • Ajout de l'interface SPI (interface du fournisseur de services) pour résoudre les noms d'hôte et les adresses IP, vous permettant d'utiliser des résolveurs alternatifs dans java.net.InetAddress qui ne sont pas liés aux gestionnaires proposés par le système d'exploitation.
  • Un deuxième aperçu de l'API Foreign Function & Memory est fourni, permettant aux applications d'interagir avec le code et les données en dehors du runtime Java. La nouvelle API vous permet d'appeler efficacement des fonctions non-JVM et d'accéder à la mémoire non gérée par JVM. Par exemple, vous pouvez appeler des fonctions à partir de bibliothèques partagées externes et accéder aux données de processus sans utiliser JNI.
  • Une deuxième implémentation expérimentale de correspondance de modèles dans les expressions « switch » a été ajoutée, permettant l'utilisation de modèles flexibles dans les étiquettes « case » plutôt que de valeurs exactes, couvrant une série de valeurs à la fois, pour lesquelles il était auparavant nécessaire d'utiliser des chaînes encombrantes d'expressions « si... sinon ». Objet o = 123L ; Chaîne formatée = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); cas Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); par défaut -> o.toString(); } ;
  • Le mécanisme de finalisation et ses méthodes associées telles que Object.finalize(), Enum.finalize(), Runtime.runFinalization() et System.runFinalization() sont obsolètes et seront désactivés dans une prochaine version.
  • Les garbage collector ZGC (Z Garbage Collector), SerialGC et ParallelGC prennent en charge la déduplication des lignes.

Source: opennet.ru

Ajouter un commentaire