• les dernières technologies innovantes en cours de développement ou en phase de lancement sur le marché.
  • les critiques de produits technologiques populaires, tels que les téléphones intelligents, les ordinateurs portables, les tablettes, les écouteurs, les caméras, etc.
  • des conseils sur la façon de rester en sécurité en ligne, notamment en ce qui concerne la protection de la vie privée, la sécurité des données et la prévention des escroqueries en ligne.
  • les dernières nouvelles et mises à jour dans le monde de la technologie, y compris les fusions et acquisitions, les partenariats, les changements de direction, etc.
Affichage des articles dont le libellé est java 19. Afficher tous les articles
Affichage des articles dont le libellé est java 19. Afficher tous les articles

lundi 6 mars 2023

Tout ce que vous devez savoir sur les nouvelles fonctionnalités du Java 19



Le JDK 19 est sur le point d'être publié, et il comprend plusieurs nouvelles fonctionnalités passionnantes pour les développeurs Java. Dans cet article, nous allons vous présenter les principales nouveautés du JDK 19, notamment l'aperçu des modèles d'enregistrement, la prise en charge de l'architecture de jeu d'instructions Linux/RISC-V, l'aperçu d'une API de fonction et de mémoire étrangères, ainsi que l'aperçu des threads virtuels.


L'aperçu des modèles d'enregistrement est une fonctionnalité du langage qui permet de déconstruire les valeurs d'enregistrement en utilisant des motifs d'enregistrement pour améliorer la navigation et le traitement des données. Cette fonctionnalité s'appuie sur la correspondance de motifs pour instanceof, livré dans le JDK 16 en mars 2021, et fait partie du projet Amber.


La prise en charge de l'architecture de jeu d'instructions Linux/RISC-V est une autre nouveauté importante du JDK 19. RISC-V est une architecture de jeu d'instructions libre et open source qui est déjà prise en charge par un large éventail de chaînes d'outils de langage. Avec le portage Linux/RISC-V, Java obtiendrait la prise en charge d'un jeu d'instructions matérielles qui est déjà pris en charge par un large éventail de chaînes d'outils de langage.


L'aperçu d'une API de fonction et de mémoire étrangères est une autre fonctionnalité du JDK 19 qui permet aux programmes Java d'interagir avec des codes et des données en dehors de l'environnement d'exécution Java en invoquant efficacement des fonctions étrangères et en accédant en toute sécurité à la mémoire étrangère.


Enfin, l'aperçu des threads virtuels est une autre nouveauté importante du JDK 19. Les threads virtuels sont des threads légers qui réduisent considérablement les efforts d'écriture, de maintenance et d'observation des applications concurrentes à haut débit.


En conclusion, le JDK 19 apporte plusieurs nouvelles fonctionnalités passionnantes pour les développeurs Java. Les modèles d'enregistrement, la prise en charge de l'architecture de jeu d'instructions Linux/RISC-V, l'API de fonction et de mémoire étrangères et les threads virtuels sont autant de fonctionnalités qui devraient améliorer considérablement l'expérience de développement Java.



JEP 405 : un aperçu des modèles d'enregistrement pour déconstruire les valeurs d'enregistrement

// Old code
if (o instanceof String) {
    String s = (String)o;
    ... use s ...
}

// New code
if (o instanceof String s) {
    ... use s ...
}

JEP 422 : la prise en charge de l'architecture de jeu d'instructions Linux/RISC-V

JEP 424 : un aperçu d'une API de fonction et de mémoire étrangères pour interagir avec le code et les données en dehors de l'environnement d'exécution Java

JEP 425 : un aperçu des threads virtuels pour réduire considérablement les efforts d'écriture, de maintenance et d'observation des applications concurrentes à haut débit.

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
    IntStream.range(0, 10_000).forEach(i -> {
        executor.submit(() -> {
            Thread.sleep(Duration.ofSeconds(1));
            return i;
        });
    });
}  // executor.close() is called implicitly, and waits


void handle(Request request, Response response) {
    var url1 = ...
    var url2 = ...
 
    try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
        var future1 = executor.submit(() -> fetchURL(url1));
        var future2 = executor.submit(() -> fetchURL(url2));
        response.send(future1.get() + future2.get());
    } catch (ExecutionException | InterruptedException e) {
        response.fail(e);
    }
}
 
String fetchURL(URL url) throws IOException {
    try (var in = url.openStream()) {
        return new String(in.readAllBytes(), StandardCharsets.UTF_8);
    }
}