Sortie de Java SE 14

Après six mois de développement, la société Oracle une mise à jour du micrologiciel et un SDK pour l'environnement SGX, dans lequel elle a tenté de bloquer l'attaque par contournement. Les méthodes proposées d'attaque ne sont actuellement applicables qu'aux processeurs Intel, mais il n'est pas exclu que LVI soit adapté à d'autres processeurs susceptibles d'être sujets aux attaques de type Meltdown. la plateforme Java SE 14 (Java Platform, Standard Edition 14), dont la référence est le projet open source OpenJDK. Java SE 14 maintient la compatibilité avec les versions précédentes de la plateforme Java, tous les projets Java déjà écrits fonctionneront sans modifications sous la nouvelle version. Les distributions prêtes à l'emploi de Java SE 14 (JDK, JRE et Server JRE) préparés sont disponibles pour Linux (x86_64), Windows et macOS. La référence développée dans le cadre du projet OpenJDK Java 14 est entièrement ouverte sous la licence GPLv2 avec des exceptions GNU ClassPath, permettant le liaison dynamique avec des produits commerciaux.

Java SE 14 est classé parmi les versions avec un support standard, des mises à jour seront publiées jusqu'à la prochaine version. Pour une branche avec un support à long terme (LTS), il convient d'utiliser Java SE 11, avec des mises à jour publiées jusqu'en 2026. L'ancienne branche LTS Java 8 sera soutenue jusqu'en décembre 2020. La prochaine version LTS est prévue pour septembre 2021. Rappelons qu'à partir de la version Java 10, le projet a adopté un nouveau processus de développement, impliquant un cycle de publication plus court. Les nouvelles fonctionnalités sont désormais développées dans une branche master constamment mise à jour, incluant les modifications prêtes, à partir de laquelle des branches de stabilisation pour les nouvelles versions sont créées tous les six mois.

De innovations Java 14 est possible notez:

  • Support expérimental ajouté pour la correspondance avec un modèle dans l'opérateur «instanceof», qui permet de définir immédiatement une variable locale pour accéder à la valeur vérifiée. Par exemple, on peut écrire immédiatement «if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}» sans déclaration explicite de «String s = (String) obj».

    Avant :

    if (obj instanceof Group) {
    Group group = (Group) obj;
    var entries = group.getEntries();
    }

    Maintenant, il est possible de se passer de la définition «Group group = (Group) obj» :

    if (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • Support expérimental ajouté pour le nouveau mot-clé «record«, fournissant une forme compacte de définition de classes, permettant d'éviter la définition explicite de divers méthodes de bas niveau, telles que equals(), hashCode() et toString(), lorsque les données sont uniquement stockées dans des champs, dont le comportement ne change pas. Lorsque des implémentations types des méthodes equals(), hashCode() et toString() sont utilisées dans une classe, il est possible de se passer de leur définition explicite :

    public record BankTransaction(LocalDate date,
    double amount,
    String description) {}

    Cette déclaration entraînera l'ajout automatique des implémentations des méthodes equals(), hashCode() et toString() en plus du constructeur et des méthodes contrôlant la modification des données (getter).

  • Normalisé et inclut par défaut la prise en charge d'une nouvelle forme d'expressions « switch », ne nécessitant pas de spécifier l'instruction « break », permettant de regrouper des labels répétés et pouvant être utilisée non seulement sous forme d'instruction, mais aussi en tant qu'expression.

    var log = switch (event) {
    case PLAY -> «L'utilisateur a déclenché le bouton de lecture»;
    case STOP, PAUSE -> «L'utilisateur a besoin d'une pause»;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield «Événement inconnu » + message +
    » enregistré le » + now;
    }
    };

  • Soutien expérimental élargi des blocs de texte — nouvelle forme de littéraux de chaîne, permettant d'inclure des données textuelles multiligne dans le code source sans échapper aux caractères et en préservant le formatage d'origine du texte dans le bloc. L'encadrement du bloc est effectué avec trois guillemets doubles. Dans Java 14, les blocs de texte prennent en charge la séquence d'échappement «\s» pour définir un espace et «\» pour combiner avec la ligne suivante (en ignorant le saut de ligne, lorsque vous devez afficher une très longue chaîne). Par exemple, au lieu du code

    String html = «<HTML>» +
    «\n\t» + «<BODY>» +
    «\n\t\t» + «<H1>\»Java 14 est ici!\»<\/H1>» +
    «\n\t» + «<\/BODY>» +
    «\n» + «<\/HTML>»;

    On peut indiquer :

    String html = «»»
    <HTML>
    <BODY>
    <H1>»Java 14\
    est ici!»<\/H1>
    <\/BODY>
    <\/HTML>»»»;

  • L'informativité du diagnostic a été améliorée lors de l'apparition d'exceptions NullPointerException. Auparavant, le message d'erreur se contentait de faire référence au numéro de ligne, mais maintenant il détaille quel des méthodes a causé l'exception. Un diagnostic étendu est activé uniquement en lançant avec le drapeau «-XX:+ShowCodeDetailsInExceptionMessages». Par exemple, en spécifiant ce drapeau, l'exception à la ligne

    var name = user.getLocation().getCity().getName();

    entraînera l'affichage du message

    Exception dans le thread « main » java.lang.NullPointerException : Impossible d'invoquer « Location.getCity() »
    car la valeur de retour de « User.getLocation() » est nulle
    à NullPointerExample.main(NullPointerExample.java:5):5)

    qui permet de comprendre que la méthode Location.getCity() n'a pas été appelée, et que User.getLocation() a renvoyé une valeur nulle.

  • l'opérateur de séquence optionnelle une version préliminaire de l'outil jpackage, permettant de créer des packages pour des applications Java autonomes (self-contained). L'outil est basé sur javapackager de JavaFX et permet de créer des packages dans des formats natifs pour diverses plateformes (msi et exe pour Windows, pkg et dmg pour macOS, deb et rpm pour Linux). Les packages incluent toutes les dépendances nécessaires.
  • Dans le ramasse-miettes G1 ajouté un nouveau mécanisme de gestion de la mémoire tenant compte des spécificités de fonctionnement sur de grands systèmes utilisant l'architecture NUMA. Le nouveau répartiteur de mémoire peut être activé à l'aide du drapeau « +XX:+UseNUMA » et permet d'augmenter considérablement les performances sur les systèmes NUMA.
  • Ajouté API pour le suivi en temps réel des événements JFR (JDK Flight Recorder), par exemple pour organiser une surveillance continue.
  • Ajouté module jdk.nio.mapmode, offrant de nouveaux modes (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pour créer des tampons mémoire mappés (MappedByteBuffer) faisant référence à de la mémoire non volatile (NVM).
  • l'opérateur de séquence optionnelle version préliminaire de l'API Foreign-Memory Access, permettant aux applications Java d'accéder en toute sécurité et efficacement à des zones mémoire en dehors du tas Java, en manipulant de nouvelles abstractions MemorySegment, MemoryAddress et MemoryLayout.
  • Déclarés comme obsolètes les ports pour le système d'exploitation Solaris et les processeurs SPARC (Solaris/SPARC, Solaris/x64 et Linux/SPARC) avec l'intention de supprimer ces ports à l'avenir. La déclaration de ces ports comme obsolètes permettra à la communauté d'accélérer le développement de nouvelles fonctionnalités d'OpenJDK, sans perdre de temps à maintenir des caractéristiques spécifiques à Solaris et SPARC.
  • Supprimé le ramasse-miettes CMS (Concurrent Mark Sweep), qui a été marqué obsolète il y a deux ans et n'est plus maintenu (le ramasse-miettes G1 a depuis remplacé le CMS). De plus, déclaré obsolète l'utilisation de la combinaison des algorithmes de ramassage des déchets ParallelScavenge et SerialOld (exécution avec les options « -XX:+UseParallelGC -XX:-UseParallelOldGC »).
  • Le support expérimental du ramasse-miettes ZGC (Z Garbage Collector) est maintenant disponible sur les plateformes macOS et Windows (précédemment uniquement supporté sous Linux). ZGC fonctionne en mode passif, minimisant autant que possible les latences dues au ramassage des ordures (le temps d'arrêt lors de l'utilisation de ZGC ne dépasse pas 10 ms) et peut fonctionner aussi bien avec de petits que de très grands tas, allant de quelques centaines de mégaoctets à plusieurs téraoctets.
  • la méthode non standard ensemble d'outils et API pour la compression des fichiers JAR en utilisant l'algorithme Pack200.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster