Rilaxx Java SE 15

Wara sitt xhur ta 'żvilupp, Oracle meħlusa pjattaforma JavaSE 15 (Java Platform, Standard Edition 15), il-proġett OpenJDK open-source jintuża bħala implimentazzjoni ta 'referenza. Java SE 15 iżomm kompatibilità b'lura ma 'rilaxxi preċedenti tal-pjattaforma Java kollha tal-proġetti Java miktuba qabel se jaħdmu mingħajr bidliet meta jiġu mnedija taħt il-verżjoni l-ġdida; Java SE 15 builds lesti biex jiġu installati (JDK, JRE u Server JRE) ippreparat għal Linux (x86_64), Windows u macOS. Implimentazzjoni ta' referenza żviluppata mill-proġett OpenJDK Java 15 huwa sors kompletament miftuħ taħt il-liċenzja GPLv2, b'eċċezzjonijiet GNU ClassPath li jippermettu konnessjoni dinamika ma' prodotti kummerċjali.

Java SE 15 huwa kklassifikat bħala rilaxx ta 'appoġġ ġenerali u se jkompli jirċievi aġġornamenti sal-rilaxx li jmiss. Il-fergħa tal-Appoġġ fit-Tul (LTS) għandha tkun Java SE 11, li se tkompli tirċievi aġġornamenti sal-2026. Il-fergħa LTS preċedenti ta' Java 8 se tkun appoġġjata sa Diċembru 2020. Ir-rilaxx LTS li jmiss huwa skedat għal Settembru 2021. Ejjew infakkarkom li b'bidu bir-rilaxx ta 'Java 10, il-proġett qaleb għal proċess ta' żvilupp ġdid, li jimplika ċiklu iqsar għall-formazzjoni ta 'rilaxxi ġodda. Funzjonalità ġdida issa hija żviluppata f'fergħa prinċipali waħda aġġornata kontinwament, li tinkludi bidliet lesti u li minnha fergħat huma ramifikati kull sitt xhur biex jistabbilizzaw rilaxxi ġodda.

Ta ' innovazzjonijiet Java 15 wieħed jista ' marka:

  • Mibnija fil- appoġġ għall-algoritmu tal-ħolqien tal-firma diġitali EdDSA (Edwards-Curve Digital Signature Algorithm) RFC 8032). L-implimentazzjoni EdDSA proposta ma tiddependix fuq pjattaformi tal-ħardwer, hija protetta minn attakki tal-kanal laterali (ħin kostanti tal-kalkoli kollha huwa żgurat) u hija aktar mgħaġġla fil-prestazzjoni mill-implimentazzjoni eżistenti tal-ECDSA miktuba bil-lingwa Ċ, bl-istess livell ta 'protezzjoni. Pereżempju, EdDSA li juża kurva ellittika b'ċavetta ta '126 bit juri prestazzjoni simili għal ECDSA b'kurva ellittika secp256r1 u ċavetta ta' 128 bit.
  • Miżjud appoġġ sperimentali għal klassijiet u interfaces issiġillati, li ma jistgħux jintużaw minn klassijiet u interfaces oħra biex jirtu, jestendu, jew jegħlbu l-implimentazzjoni. Klassijiet issiġillati jipprovdu wkoll mod aktar dikjarattiv biex jirrestrinġu l-użu ta 'superklassi minn modifikaturi ta' aċċess, ibbażati fuq elenkar espliċitu tas-subklassijiet permessi għall-estensjoni.

    pakkett com.example.geometry;

    klassi issiġillata pubblika Forma
    permessi com.example.polar.Circle,
    com.example.quad.Rettangolu,
    com.eżempju.quad.sempliċi.Pjazza {…}

  • Miżjud appoġġ għal klassijiet moħbija li ma jistgħux jintużaw direttament mill-bytecode ta 'klassijiet oħra. L-għan ewlieni tal-klassijiet moħbija huwa li jintużaw f'oqfsa li jiġġeneraw klassijiet b'mod dinamiku waqt ir-runtime u jużawhom indirettament, permezz riflessjoni. Klassijiet bħal dawn normalment ikollhom ċiklu tal-ħajja limitat, għalhekk iż-żamma tagħhom għall-aċċess minn klassijiet iġġenerati b'mod statiku mhix iġġustifikata u twassal biss għal żieda fil-konsum tal-memorja. Il-klassijiet moħbija jeliminaw ukoll il-ħtieġa għall-API mhux standard sun.misc.Unsafe::defineAnonymousClass, li hija ppjanata għat-tneħħija fil-futur.
  • Il-kollettur taż-żibel ZGC (Z Garbage Collector) ġie stabbilizzat u huwa rikonoxxut bħala lest għal użu mifrux. ZGC jopera f'modalità passiva, jimminimizza l-latenza minħabba l-ġbir taż-żibel kemm jista 'jkun (il-ħin ta' stall meta tuża ZGC ma jaqbiżx l-10 ms.) U jista 'jaħdem kemm b'munzelli żgħar kif ukoll kbar, li jvarjaw fid-daqs minn diversi mijiet ta' megabytes għal ħafna terabytes.
  • Stabbilizzat u misjub lest għall-użu ġenerali
    kollettur taż-żibel Shenandoah, taħdem b'pawżi minimi (Low-Pause-Time Garbage Collector). Shenandoah ġie żviluppat minn Red Hat u huwa notevoli għall-użu tiegħu ta 'algoritmu li jnaqqas il-ħin tal-waqfien waqt il-ġbir taż-żibel billi jwettaq tindif b'mod parallel mal-eżekuzzjoni tal-applikazzjonijiet Java. Id-daqs tad-dewmien introdott mill-kollettur taż-żibel huwa prevedibbli u ma jiddependix fuq id-daqs tal-borġ, i.e. għal munzelli ta' 200 MB u 200 GB id-dewmien se jkun identiku (toħroġx lil hinn minn 50 ms u ġeneralment fi żmien 10 ms);

  • L-appoġġ ġie stabbilizzat u introdott fil-lingwa blokki tat-test - forma ġdida ta’ string literals li tippermettilek tinkludi dejta ta’ test b’ħafna linji fil-kodiċi tas-sors mingħajr ma tuża l-ħarba tal-karattri u tippreserva l-ifformattjar tat-test oriġinali fil-blokk. Il-blokk huwa inkwadrat bi tliet kwotazzjonijiet doppji.

    Per eżempju, minflok il-kodiċi

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 qiegħed hawn!" » +
    "\n\t" + " » +
    "\n" + " ";

    tista' tispeċifika:

    String html = """


    »Java 1\
    qiegħed hawn!

    """;

  • Maħduma mill-ġdid Legacy DatagramSocket API. L-implimentazzjonijiet antiki ta’ java.net.DatagramSocket u java.net.MulticastSocket ġew sostitwiti b’implimentazzjoni moderna li hija aktar faċli biex tiddibaggja u tinżamm, u hija wkoll kompatibbli ma’ flussi virtwali żviluppati fi ħdan il-proġett Newl. F'każ ta' inkompatibbiltà possibbli mal-kodiċi eżistenti, l-implimentazzjoni l-antika ma tneħħietx u tista' tiġi attivata billi tuża l-għażla jdk.net.usePlainDatagramSocketImpl.
  • It-tieni implimentazzjoni sperimentali proposta tqabbil tal-mudell fl-operatur "instanceof", li jippermettilek tiddefinixxi immedjatament varjabbli lokali biex taċċessa l-valur iċċekkjat. Pereżempju, tista’ tikteb immedjatament “jekk (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” mingħajr ma tiddefinixxi espliċitament “String s = (String) obj”.

    Kien:

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

    Issa tista' tgħaddi mingħajr id-definizzjoni "Grupp tal-grupp = (Grupp) obj":

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

  • Propost it-tieni implimentazzjoni sperimentali tal-kelma prinċipali "rekord", li tipprovdi forma kompatta għad-definizzjoni tal-klassijiet, li tippermettilek tevita li tiddefinixxi b'mod espliċitu diversi metodi ta' livell baxx bħal equals(), hashCode() u toString() f'każijiet fejn id-dejta tinħażen biss f'oqsma li l-imġieba tagħhom ma tinbidilx. Meta klassi tuża implimentazzjonijiet standard tal-metodi equals(), hashCode() u toString(), tista’ tgħaddi mingħajr id-definizzjoni espliċita tagħhom:

    rekord pubbliku BankTransaction (data LocalDate,
    ammont doppju
    Deskrizzjoni tal-istring) {}

    Din id-dikjarazzjoni se żżid awtomatikament implimentazzjonijiet tal-metodi equals(), hashCode() u toString() minbarra l-metodi tal-kostruttur u getter.

  • Propost it-tieni preview tal-API tal-Aċċess għall-Memorja Barranija, li tippermetti lill-applikazzjonijiet Java jaċċessaw b'mod sikur u effiċjenti reġjuni tal-memorja barra l-borġ Java billi jimmanipulaw l-estrazzjonijiet il-ġodda ta 'MemorySegment, MemoryAddress, u MemoryLayout.
  • B'diżabilità u deprecated it-teknika ta 'ottimizzazzjoni Biased Locking użata fil-JVM HotSpot biex tnaqqas l-overhead tal-illokkjar. Din it-teknika tilfet ir-rilevanza tagħha fuq sistemi bi struzzjonijiet atomiċi pprovduti minn CPUs moderni, u hija intensiva wisq biex tinżamm minħabba l-kumplessità tagħha.
  • Imħabbar mekkaniżmu skadut Attivazzjoni RMI, li se jitneħħa f'rilaxx futur. Huwa nnutat li l-Attivazzjoni RMI hija skaduta, relegata għal għażla f'Java 8 u kważi qatt ma tintuża fil-prattika moderna.
  • Imħassar Magna JavaScript rhino, li kienet deprecata f'Java SE 11.
  • Imneħħija portijiet għal Solaris OS u proċessuri SPARC (Solaris/SPARC, Solaris/x64 u Linux/SPARC). It-tneħħija ta' dawn il-portijiet se tippermetti lill-komunità taċċellera l-iżvilupp ta' karatteristiċi ġodda ta' OpenJDK mingħajr ma taħli l-ħin li żżomm karatteristiċi speċifiċi ta' Solaris u SPARC.

Sors: opennet.ru

Żid kumment