Utgivning av Java SE 15

Efter sex mÄnaders utveckling har företaget Oracle har slÀppt plattformen Java SE 15 (Java Platform, Standard Edition 15), vars referensimplementation anvÀnder det öppna projektet OpenJDK. Java SE 15 upprÀtthÄller bakÄtkompatibilitet med tidigare versioner av Java-plattformen, sÄ alla tidigare skrivna Java-projekt kommer att fungera utan Àndringar nÀr de körs med den nya versionen. InstallationsfÀrdiga paket för Java SE 15 (JDK, JRE och Server JRE) Àr förberedda för Linux (x86_64), Windows och macOS. Den referensimplementation som utvecklats inom ramen för OpenJDK Java 15 Àr helt öppen under GPLv2-licensen med undantag för GNU ClassPath, som tillÄter dynamisk lÀnkning med kommersiella produkter.

Java SE 15 klassificeras som en version med vanlig support, dÀr uppdateringar kommer att slÀppas fram till nÀsta version. För en lÄngsiktig supportversion (LTS) bör Java SE 11 anvÀndas, vars uppdateringar kommer att slÀppas fram till 2026. Den tidigare LTS-versionen Java 8 kommer att stödjas fram till december 2020. NÀsta LTS-version Àr planerad till september 2021. Kom ihÄg att frÄn och med Java 10 har projektet övergÄtt till en ny utvecklingsprocess som innebÀr en kortare cykel för att skapa nya versioner. Ny funktionalitet utvecklas nu i en stÀndigt uppdaterad mastergren, som inkluderar fÀrdiga Àndringar, och frÄn vilken grenar för stabilisering av nya versioner avknoppas var sjÀtte mÄnad.

Av nyheterna Java 15 kan notera:

  • Inbyggd stöd för algoritmen för skapande av digitala signaturer EdDSA (Edwards-Curve Digital Signature Algorithm RFC 8032). Den föreslagna implementeringen av EdDSA Ă€r oberoende av hĂ„rdvaruplattformar, skyddad mot attacker genom sidokanaler (alla berĂ€kningar genomförs pĂ„ konstant tid) och övertrĂ€ffar den nuvarande implementeringen av ECDSA, skriven i C, med samma sĂ€kerhetsnivĂ„. Till exempel, EdDSA med en elliptisk kurva med 126-bitars nyckel visar prestanda motsvarande ECDSA med den elliptiska kurvan secp256r1 och 128-bitars nyckel.
  • Tillagd experimentell stöd för förseglade ("sealed") klasser och grĂ€nssnitt som inte kan anvĂ€ndas av andra klasser och grĂ€nssnitt för arv, utvidgning eller överskrivning av implementation. Förseglade klasser erbjuder ocksĂ„ ett mer deklarativt sĂ€tt att begrĂ€nsa anvĂ€ndning av superklassen Ă€n Ă„tkomstmodifikatorer, baserat pĂ„ en explicit upprĂ€kning av underklasser som fĂ„r utvidgas.

    package com.example.geometry;

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

  • Tillagd stöd för dolda klasser som inte kan anvĂ€ndas direkt av bytekod frĂ„n andra klasser. Huvudsyftet med dolda klasser Ă€r anvĂ€ndningen i ramverk som dynamiskt genererar klasser vid körning och anvĂ€nder dem indirekt, genom reflektion.Dessa klasser har vanligtvis en begrĂ€nsad livslĂ€ngd, sĂ„ att underhĂ„lla dem för Ă„tkomst frĂ„n statiskt genererade klasser Ă€r inte motiverat och kommer enbart att leda till ökad minnesanvĂ€ndning. Dolda klasser möjliggör ocksĂ„ undvikande av det icke-standardiserade API:t sun.misc.Unsafe::defineAnonymousClass, som Ă€r planerat för borttagning i framtiden.
  • ZGC (Z Garbage Collector) har stabiliserats och erkĂ€nns nu som redo för allmĂ€nt bruk. ZGC arbetar i passivt lĂ€ge och minimerar sĂ„ mycket som möjligt förseningar pĂ„ grund av skrĂ€pinsamling (stopp-tid vid anvĂ€ndning av ZGC överstiger inte 10 ms) och kan fungera med bĂ„de smĂ„ och stora högar, frĂ„n flera hundra megabyte till flera terabyte.
  • Stabiliserat och erkĂ€nt som redo för allmĂ€nt bruk
    skrÀpinsamlare Shenandoah, som arbetar med minimala avbrott (Low-Pause-Time Garbage Collector). Shenandoah utvecklades av Red Hat och Àr anmÀrkningsvÀrt för att anvÀnda en algoritm som minskar stopp-tider under skrÀpinsamling genom att utföra stÀdning parallellt med körning av Java-applikationer. Tiden för skrÀpinsamlarens förseningar Àr förutsÀgbara och oberoende av högarna, dvs. för högar pÄ 200 MB och 200 GB kommer fördröjningarna att vara desamma (överskrider inte 50 ms och ligger vanligen inom 10 ms);
  • Stöd för textblock har stabiliserats och införts i sprĂ„ket. — en ny form av strĂ€ngliteral som möjliggör införande av flerlinjedata i koden utan att anvĂ€nda teckenescapning och behĂ„lla den ursprungliga formateringen i blocket. Blocket omges av tre dubbla citattecken.

    Till exempel, istÀllet för koden

    String html = "" +
    "\n\t" + "" +
    "\n\t\t" + "

    \"Java 15 Àr hÀr!\"

    " +
    "\n\t" + "" +
    "\n" + "";

    kan man ange:

    String html = """
    <HTML>
    <BODY>

    "Java 15\"
    Àr hÀr!"


    </BODY>
    """;

  • Omarbetad API:n Legacy DatagramSocket. De gamla implementationerna av java.net.DatagramSocket och java.net.MulticastSocket har ersatts med en modern implementering som Ă€r enklare att debugga och underhĂ„lla, samt kompatibel med virtuella trĂ„dar som utvecklas inom projektet Loom. För att hantera eventuell kompatibilitetsproblem med befintlig kod har den gamla implementationen inte tagits bort och kan aktiveras med alternativet jdk.net.usePlainDatagramSocketImpl.
  • En andra experimentell implementation föreslĂ„s av mönstermatchning i "instanceof"-operatorn, vilket gör det möjligt att direkt definiera en lokal variabel för att referera till det kontrollerade vĂ€rdet. Till exempel kan man direkt skriva "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" utan att explicit definiera "String s = (String) obj".

    Förut:

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

    Nu kan man klara sig utan att definiera "Group group = (Group) obj":

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

  • En andra experimentell implementation av nyckelordet " record", som erbjuder en kompakt form för klassdefinitioner och gör det möjligt att undvika explicit definition av olika lĂ„gnivĂ„metoder som equals(), hashCode() och toString(), i fall dĂ€r data endast lagras i fĂ€lt vars beteende inte förĂ€ndras. NĂ€r typiska implementationer av metoderna equals(), hashCode() och toString() anvĂ€nds i klassen, kan man klara sig utan deras explicita definition:public record BankTransaction(LocalDate date,double amount,

    String description) {}
    Denna deklaration kommer att leda till automatisk tillÀgg av implementationer av metoderna equals(), hashCode() och toString() samt konstruktorn och metoder som kontrollerar datamodifiering (getter).
    String description) {}

    Denna deklaration kommer att leda till automatisk tillÀgg av implementationerna av metoderna equals(), hashCode() och toString() utöver konstruktorn och metoderna som kontrollerar dataÀndringar (getter).

  • Föreslagen den andra preliminĂ€ra versionen av API Foreign-Memory Access, som möjliggör för Java-applikationer att sĂ€kert och effektivt fĂ„ Ă„tkomst till minnesomrĂ„den utanför Java-heapet, genom att manipulera nya abstraktioner som MemorySegment, MemoryAddress och MemoryLayout.
  • Avaktiverad och den förĂ„ldrade tekniken för optimering Biased Locking, som anvĂ€ndes i HotSpot JVM för att minska overhead frĂ„n lĂ„s. Denna teknik har blivit obsolet pĂ„ system med atomĂ€ra instruktioner som tillhandahĂ„lls av moderna CPU:er, och Ă€r för komplex för att underhĂ„llas.
  • Klassificerad som en förĂ„ldrad mekanism RMI Activation, som kommer att tas bort i en av de kommande versionerna. Noteras att RMI Activation har blivit förĂ„ldrad, klassificerades som en valmöjlighet redan i Java 8 och anvĂ€nds nĂ€stan inte i modern praktik.
  • Borttagen JavaScript-motorn Nashorn, som blev förĂ„ldrad i Java SE 11.
  • Borttagna portar för Solaris OS och SPARC-processorer (Solaris/SPARC, Solaris/x64 och Linux/SPARC). Borttagningen av dessa portar kommer att möjliggöra för samhĂ€llet att pĂ„skynda utvecklingen av nya funktioner i OpenJDK, utan att slösa tid pĂ„ att underhĂ„lla funktioner specifika för Solaris och SPARC.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster