Après six mois de développement, Oracle a publié la version de la nouvelle version de Java SE18 (Standard Edition), qui utilise le projet open source OpenJDK comme implémentation de référence.
Dans cette nouvelle version de Java SE 18 vient à l'exception de la suppression de certaines fonctionnalités obsolètes, maintien de la compatibilité avec les versions antérieures de la plate-forme Java et la plupart des projets Java écrits précédemment continueront de fonctionner sans modification lorsqu'ils seront exécutés avec la nouvelle version.
Principales nouveautés de Java SE 18
Dans cette nouvelle version de Java SE 18, l'encodage par défaut est UTF-8. API Java qui traitent les données textuelles codées en caractères utilisera désormais UTF-8 par défaut sur toutes les plateformes, 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 tenant compte des paramètres régionaux du système, vous pouvez utiliser le paramètre "-Dfile.encoding=COMPAT".
Un autre des changements qui se démarque est lui refonte de l'implémentation de l'API java.lang.reflect (Core Reflection), conçu 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. l'API java.lang.reflect lui-même n'a pas changé, mais est maintenant implémenté en utilisant les identifiants des méthodes fournies par le module java.lang.invoke, au lieu d'utiliser des générateurs de bytecode. Le changement a permis d'unifier et de faciliter la maintenance des implémentations de java.lang.reflect et java.lang.invoke.
En plus de cela, il est également mentionné que la troisième implémentation préliminaire de Vector API est proposée, qui fournit des fonctions pour les calculs vectoriels effectués à l'aide des instructions vectorielles des processeurs x86_64 et AArch64 et vous permet d'appliquer des opérations simultanément à plusieurs valeurs (SIMD). Contrairement aux fonctionnalités fournies dans le compilateur HotSpot JIT pour la vectorisation automatique des opérations scalaires, la nouvelle API vous permet de contrôler explicitement la vectorisation pour le traitement parallèle des données.
Il est également souligné que ajout d'une interface SPI (interface fournisseur de services) pour résoudre les noms d'hôte et les adresses IP, qui vous permet d'utiliser des résolveurs alternatifs dans java.net.InetAddress qui ne sont pas liés aux pilotes fournis par le système d'exploitation.
D'autre part, il a été proposé deuxième implémentation préliminaire de l'API Foreign Function & Memory, avec lequel les applications peuvent interagir avec le code et les données en dehors de l'environnement d'exécution Java. La nouvelle API permet un appel efficace des fonctions non-JVM y accéder à la mémoire qui n'est pas géré 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.
Ajout d'un deuxième implémentation expérimentale de la correspondance de motifs dans les expressions changer, qui vous permet d'utiliser des modèles flexibles au lieu de valeurs exactes dans les balises "case", couvrant plusieurs valeurs à la fois, ce qui nécessitait auparavant des chaînes encombrantes d'expressions "if...else".
Emballage inclus com.sun.net.httpserver, qui inclut l'utilitaire et l'API jwebserver de la bibliothèque avec la mise en place depuis un simple serveur http pour servir du contenu statique (CGI et les contrôleurs 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 ou l'authentification, car il est principalement conçu pour être utilisé dans le processus de développement de projets de prototypage, de débogage et de test.
Des autres changements qui se démarquent:
- JavaDoc prend en charge la balise "@fragment» pour intégrer des exemples de travail et des extraits de code dans la documentation de l'API, accessible avec des outils de validation, la coloration syntaxique et l'intégration IDE.
- Obsolète et sera supprimé dans une prochaine version, le mécanisme de complétion, ainsi que les méthodes associées telles que Object.finalize(), Enum.finalize(), Runtime.runFinalization() et System.runFinalization().
- les éboueurs ZGC (Z Garbage Collector), SerialGC et ParallelGC ils prennent en charge la déduplication de chaînes.
Java SE18 est classée comme une version de support standard, avec des mises à jour à publier avant la prochaine version. La branche de support à long terme (LTS) devrait être Java SE 17, qui recevra des mises à jour jusqu'en 2029.
Il est important de se rappeler qu'à partir de la version Java 10, le projet est passé à un nouveau processus de développement, ce qui signifie un cycle plus court pour la formation d'une nouvelle version. De nouvelles fonctionnalités sont désormais développées dans une branche principale constamment mise à jour, qui inclut les modifications déjà effectuées et à partir de laquelle les branches se ramifient tous les six mois pour stabiliser les nouvelles versions.
Obtenir Java SE 18
Pour ceux qui souhaitent tester cette nouvelle version, sachez que les versions sont prêtes pour Linux (x86_64, AArch64), Windows (x86_64) et macOS (x86_64, AArch64) et peuvent être obtenues à partir du lien ci-dessous.