Sortie de Java SE 15

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 15 (Java Platform, Standard Edition 15), dont l'implĂ©mentation de rĂ©fĂ©rence est basĂ©e sur le projet ouvert OpenJDK. Java SE 15 maintient la compatibilitĂ© avec les versions prĂ©cĂ©dentes de la plateforme Java, tous les projets Java prĂ©cĂ©demment Ă©crits fonctionneront sans modifications sous la nouvelle version. Les distributions prĂȘtes Ă  l'emploi de Java SE 15 (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 15 est entiĂšrement ouverte sous la licence GPLv2 avec des exceptions GNU ClassPath, permettant le liaison dynamique avec des produits commerciaux.

Java SE 15 est classĂ© parmi les versions avec un cycle de support standard, les mises Ă  jour seront publiĂ©es jusqu'Ă  la prochaine version. Pour une branche Ă  long terme (LTS), il convient d'utiliser Java SE 11, dont les mises Ă  jour seront fournies jusqu'en 2026. L'ancienne branche LTS Java 8 sera supportĂ©e jusqu'en dĂ©cembre 2020. La prochaine version LTS est prĂ©vue pour septembre 2021. Rappelons qu'Ă  partir de Java 10, le projet a adoptĂ© un nouveau processus de dĂ©veloppement, avec un cycle de publication plus court. Les nouvelles fonctionnalitĂ©s sont dĂ©sormais dĂ©veloppĂ©es dans une branche principale constamment mise Ă  jour, oĂč sont intĂ©grĂ©s les changements prĂȘts et dont sont dĂ©rivĂ©es des branches pour la stabilisation des nouvelles versions tous les six mois.

De innovations Java 15 est possible notez:

  • IntĂ©grĂ© support de l'algorithme de crĂ©ation de signature numĂ©rique EdDSA (Edwards-Curve Digital Signature Algorithm RFC 8032). L'implĂ©mentation proposĂ©e d'EdDSA est indĂ©pendante des plateformes matĂ©rielles, protĂ©gĂ©e contre les attaques par canaux latĂ©raux (garantissant un temps de calcul constant) et surpasse l'implĂ©mentation existante d'ECDSA, Ă©crite en C, tout en offrant un niveau de sĂ©curitĂ© Ă©quivalent. Par exemple, EdDSA utilisant une courbe elliptique avec une clĂ© de 126 bits montre des performances comparables Ă  celles d'ECDSA avec la courbe elliptique secp256r1 et une clĂ© de 128 bits.
  • AjoutĂ© support expĂ©rimental des classes et interfaces scellĂ©es (« sealed »), qui ne peuvent pas ĂȘtre utilisĂ©es par d'autres classes et interfaces pour l'hĂ©ritage, l'extension ou la redĂ©finition de l'implĂ©mentation. Les classes scellĂ©es offrent Ă©galement un moyen plus dĂ©claratif d'en limiter l'utilisation, comparĂ© aux modificateurs d'accĂšs, en Ă©numĂ©rant explicitement les sous-classes autorisĂ©es Ă  ĂȘtre Ă©tendues.

    package com.example.geometry;

    public sealed class Shape
    permet com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {
}

  • AjoutĂ© prise en charge des classes cachĂ©es qui ne peuvent pas ĂȘtre utilisĂ©es directement par le bytecode d'autres classes. L'utilisation principale des classes cachĂ©es est dans les frameworks qui gĂ©nĂšrent dynamiquement des classes Ă  l'exĂ©cution et les utilisent indirectement, via rĂ©flexion. De telles classes ont gĂ©nĂ©ralement un cycle de vie limitĂ©, et donc leur maintien pour l'accĂšs Ă  partir de classes gĂ©nĂ©rĂ©es statiquement n'est pas justifiĂ© et ne ferait qu'augmenter la consommation de mĂ©moire. Les classes cachĂ©es permettent Ă©galement de se passer de l'API non standard sun.misc.Unsafe::defineAnonymousClass, qui est prĂ©vue pour suppression Ă  l'avenir.
  • Le ramasse-miettes ZGC (Z Garbage Collector) a Ă©tĂ© stabilisĂ© et reconnu comme prĂȘt pour une utilisation gĂ©nĂ©ralisĂ©e. ZGC fonctionne en mode passif, minimisant autant que possible les dĂ©lais dus au ramassage des dĂ©chets (le temps d'arrĂȘt lors de l'utilisation de ZGC ne dĂ©passe pas 10 ms) et peut fonctionner avec des tas aussi petits qu'avec d'Ă©normes tas, allant de plusieurs centaines de mĂ©gaoctets Ă  plusieurs tĂ©raoctets.
  • StabilisĂ© et reconnu comme prĂȘt pour une utilisation gĂ©nĂ©ralisĂ©e
    ramasse-miettes Shenandoah, fonctionnant avec des pauses minimales (Low-Pause-Time Garbage Collector). Shenandoah a Ă©tĂ© dĂ©veloppĂ© par Red Hat et se distingue par l'utilisation d'un algorithme qui rĂ©duit le temps d'arrĂȘt pendant le ramassage des dĂ©chets en nettoyant parallĂšlement l'exĂ©cution des applications Java. La taille des retards introduits par le ramasse-miettes est prĂ©visible et ne dĂ©pend pas de la taille du tas, c'est-Ă -dire que pour des tas de 200 Mo et de 200 Go, les retards seront identiques (ne dĂ©passent 50 ms et s'inscrivent gĂ©nĂ©ralement dans 10 ms);
  • La prise en charge des des blocs de texte — nouvelles formes de littĂ©raux de chaĂźnes, permettant d'inclure dans le code source des donnĂ©es textuelles multi-lignes sans avoir besoin d'Ă©chapper les caractĂšres et en conservant le formatage d'origine du texte dans le bloc. Le bloc est encadrĂ© par trois guillemets doubles.

    Par exemple, au lieu du code

    String html = «<HTML>» +
    «\n\t» + «<BODY>» +
    «\n\t\t» + «<H1>\»Java 15 est là!\»<\/H1>» +
    «\n\t» + «<\/BODY>» +
    «\n» + «<\/HTML>»;

    On peut indiquer :

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

  • RĂ©visĂ© API Legacy DatagramSocket. Les anciennes implĂ©mentations de java.net.DatagramSocket et java.net.MulticastSocket ont Ă©tĂ© remplacĂ©es par une mise en Ɠuvre moderne, plus facile Ă  dĂ©boguer et Ă  entretenir, et compatible avec les flux virtuels dĂ©veloppĂ©s dans le cadre du projet Loom. En cas de possible incompatibilitĂ© avec le code existant, l'ancienne implĂ©mentation n'a pas Ă©tĂ© supprimĂ©e et peut ĂȘtre rĂ©activĂ©e Ă  l'aide de l'option jdk.net.usePlainDatagramSocketImpl.
  • Une deuxiĂšme implĂ©mentation expĂ©rimentale a Ă©tĂ© proposĂ©e 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();
    }

  • Un soutien la deuxiĂšme implĂ©mentation expĂ©rimentale du 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).

  • ProposĂ© deuxiĂšme version prĂ©liminaire de l'API Foreign-Memory Access, permettant aux applications Java d'accĂ©der de maniĂšre sĂ©curisĂ©e et efficace Ă  des zones de mĂ©moire en dehors du tas Java, Ă  l'aide de nouvelles abstractions telles que MemorySegment, MemoryAddress et MemoryLayout.
  • Le support et la technique d'optimisation Biased Locking a Ă©tĂ© dĂ©clarĂ©e obsolĂšte, utilisĂ©e dans HotSpot JVM pour rĂ©duire les frais liĂ©s aux verrous. Cette technique est devenue obsolĂšte sur les systĂšmes avec des instructions atomiques, fournies par les processeurs modernes, et trop difficile Ă  maintenir en raison de sa complexitĂ©.
  • DĂ©clarĂ© mĂ©canisme obsolĂšte Activation RMI, qui sera supprimĂ© dans l'une des futures versions. Il est Ă  noter que l'Activation RMI est devenue obsolĂšte, a Ă©tĂ© rĂ©trogradĂ©e en option depuis Java 8 et est presque jamais utilisĂ©e dans la pratique moderne.
  • SupprimĂ© moteur JavaScript Nashorn, qui a Ă©tĂ© dĂ©clarĂ© obsolĂšte dans Java SE 11.
  • la mĂ©thode non standard ports pour le systĂšme d'exploitation Solaris et les processeurs SPARC (Solaris/SPARC, Solaris/x64 et Linux/SPARC). La suppression des ports mentionnĂ©s permettra Ă  la communautĂ© d'accĂ©lĂ©rer le dĂ©veloppement de nouvelles fonctionnalitĂ©s d'OpenJDK, sans perdre de temps Ă  maintenir des spĂ©cificitĂ©s liĂ©es Ă  Solaris et SPARC.

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