June 1, 2023

Tech Articles

L'art de la technologie

JDK 19 : Les nouveautés de Java 19

Le package de développement Java 19, prévu pour septembre, est désormais complet et se trouve maintenant dans une deuxième stage de ralentissement. Sept fonctionnalités ciblent la model, notamment la concurrence structurée, les modèles d’enregistrement, un aperçu d’une fonction étrangère et d’une API de mémoire, et la prise en cost de l’architecture de jeu d’instructions (ISA) Linux/RISC-V open up source.

Avec cette dernière étape dans le processus de publication de Java standard, d’autres fonctionnalités prévues telles que les génériques universels et les objets de valeur devront attendre une model ultérieure de la plate-forme. Le JDK 19 fait suite à l’arrivée du JDK 18 le 22 mars. Java conventional est sur une cadence de publication de 6 mois.

Le JDK 19 devrait être officiellement publié pour une utilisation en production le 20 septembre, précédé de versions candidates qui seront publiées les 11 et 25 août. Une première stage de ralentissement a été atteinte le mois dernier. Les versions à accès anticipé de JDK 19 sont accessibles à partir de jdk.java.internet/19. Les fonctionnalités du JDK 19 incluent :

  • Concurrence structurée, en period d’incubateur, vise à simplifier la programmation multithread grâce à une API de concurrence structurée. Cette simultanéité traite plusieurs tâches exécutées dans différents threads comme une seule unité de travail, afin de rationaliser la gestion et l’annulation des erreurs. La fiabilité et l’observabilité sont améliorées.
  • UN aperçu des modèles d’enregistrement, pour déconstruire les valeurs d’enregistrement. Les modèles d’enregistrement et les modèles de form peuvent être imbriqués pour permettre une forme déclarative, puissante et composable de navigation et de traitement des données. Les objectifs de la proposition incluent l’extension de la correspondance de modèles pour exprimer des requêtes de données as well as sophistiquées et composables sans modifier la syntaxe ou la sémantique des modèles de sort. Cette proposition s’appuie sur le sample matching pour instanceoflivré dans JDK 16 en mars 2021. Les ideas futurs peuvent nécessiter l’extension des modèles d’enregistrement avec des fonctionnalités telles que les modèles de tableau et vararg motifs. Les modèles d’enregistrement font partie de Projet Ambreun work pour explorer et incuber des fonctionnalités Java moreover petites et axées sur la productivité.
  • Un aperçu d’un fonction étrangère et API mémoire, qui introduirait une API grâce à laquelle les programmes Java peuvent interagir avec du code et des données en dehors de l’environnement d’exécution Java. En invoquant efficacement des fonctions étrangères (c’est-à-dire du code en dehors de la JVM) et en accédant en toute sécurité à la mémoire étrangère (c’est-à-dire à la mémoire non gérée par la JVM), l’API permet aux programmes Java d’appeler des bibliothèques natives et de traiter des données natives sans le threat et la fragilité du Java Indigenous. Interface (JNI). L’API de fonction étrangère et de mémoire merge deux API d’incubation antérieures : l’API d’accès à la mémoire étrangère et l’API de l’éditeur de liens étranger. La fonction étrangère et l’API de mémoire étaient auparavant incubées dans JDK 17 et réincubées dans JDK 18. Les objectifs de la proposition incluent la facilité d’utilisation, les performances, la généralité et la sécurité.
  • Un aperçu de fils virtuels, qui sont des threads légers qui réduisent considérablement l’effort d’écriture, de servicing et d’observation d’applications simultanées à haut débit. Les objectifs incluent l’activation des purposes serveur écrites dans le style uncomplicated thread par requête pour évoluer avec une utilisation matérielle quasi optimale, permettant au code existant qui utilise le java.lang API Thread pour adopter des threads virtuels avec un least de modifications et permettre le dépannage, le débogage et le profilage des threads virtuels avec les outils JDK existants. Ce n’est pas un objectif de cette proposition de changer le modèle de concurrence de base en Java ou d’offrir une nouvelle development de parallélisme de données dans le langage Java ou les bibliothèques Java. L’objectif n’est pas non furthermore de supprimer l’implémentation traditionnelle des threads ou de migrer silencieusement des purposes existantes pour utiliser des threads virtuels.
  • Un troisième aperçu de correspondance de modèles pour les expressions et guidance swapétendant la correspondance de modèle à change, pour permettre à une expression d’être testée par rapport à un particular nombre de modèles, chacun avec une motion spécifique, afin que des requêtes complexes orientées données puissent être exprimées de manière concise et sûre. Cette fonctionnalité était auparavant prévisualisée dans JDK 17 et JDK 18. La troisième prévisualisation ajouterait des améliorations, notamment le remplacement des modèles protégés par when clauses dans swap blocs. En outre, la sémantique d’exécution d’un commutateur de modèle lorsque la valeur de l’expression du sélecteur est nulle est as well as étroitement alignée sur l’héritage change sémantique. Les objectifs du program comprennent l’expansion de l’expressivité et de l’applicabilité de switch expressions et déclarations en autorisant l’apparition de modèles dans les étiquettes de cas. D’autres objectifs incluent permettre aux développeurs de relâcher l’hostilité nulle historique de change lorsque vous le souhaitez, augmentant la sécurité de switch déclarations et s’assurer que les switch les expressions et les instructions continuent à se compiler sans changement et s’exécutent avec une sémantique identique.
  • Une quatrième incubation d’un API vectorielle cela exprimerait des calculs vectoriels qui se compilent de manière fiable au minute de l’exécution en instructions vectorielles optimales sur les architectures de processeur prises en demand, obtenant ainsi des performances supérieures aux calculs scalaires équivalents. Les développeurs utilisant l’API gagnent un moyen d’écrire des algorithmes vectoriels complexes en Java, en utilisant le vectoriseur automatique HotSpot mais avec un modèle utilisateur qui rend les vectorisations furthermore prévisibles et robustes. Le vecteur API était auparavant incubé dans JDK 16, JDK 17 et JDK 19.
    Les améliorations de l’API proposées pour JDK 19 incluent des améliorations pour charger et stocker des vecteurs vers et depuis MemorySegments, tel que défini par l’aperçu de l’API des fonctions étrangères et de la mémoire. JDK 19 ajouterait également deux opérations vectorielles inter-voies, compresser et développer, ainsi qu’une opération de compression de masque vectoriel complémentaire. L’opération de compression vectorielle mappe les voies d’un vecteur supply, sélectionné par un masque, sur un vecteur de destination dans l’ordre des voies, tandis que l’opération d’expansion fait l’inverse. L’opération de compression est utile pour filtrer les résultats de la requête.
    Dans un autre ajout à l’API vectorielle, les opérations de voie intégrales au niveau du bit seraient étendues, y compris des opérations telles que le comptage du nombre de bits un, l’inversion de l’ordre des bits et la compression et l’expansion des bits. Les objectifs de l’API étaient d’être clairs et concis, indépendants de la plate-forme, d’avoir des performances d’exécution et de compilation fiables sur les architectures x64 et AArch64, et de permettre une dégradation “gracieuse”, pour les scenarios dans lesquelles un calcul vectoriel ne peut pas être entièrement exprimé au second de l’exécution sous la forme d’une séquence de opérations vectorielles.
  • Avec le port Linux / RISC-V, Java prendrait en charge un jeu d’instructions matérielles déjà pris en cost par une huge gamme de chaînes d’outils de langage. RISC-V est en fait une famille d’ISA apparentés. Le port Linux/RISC-V ne prendrait en cost que la configuration RV64GV de RISC-V, un ISA 64 bits à utilization général qui inclut des recommendations vectorielles. Les développeurs de Java pourraient envisager d’autres configurations RISC-V à l’avenir.

Le port prendrait en demand les choices HotSpot VM suivantes : l’interpréteur de modèles, le compilateur JIT C1 (client), le compilateur JIT C2 (serveur) et tous les récupérateurs de mémoire principaux actuels, y compris ZGC et Shenandoah. Le portage proprement dit est presque terminé l’objectif de la proposition d’amélioration du JDK (JEP) est l’intégration du port dans le référentiel principal du JDK.

Comme JDK 18, JDK 19 devrait être une edition à courtroom terme, avec seulement six mois de haut niveau, Premier Help.

La version précédente, JDK 17, était une version de aid à prolonged terme (LTS), avec plusieurs années de support. Il est arrivé le 14 septembre 2021.

Copyright © 2022 IDG Communications, Inc.