Lansering av Java SE 14

Efter sex mÄnaders utveckling har företaget Oracle har slÀppt plattformen Java SE 14 (Java Platform, Standard Edition 14), vars som referensimplementering anvÀnder det öppna projektet OpenJDK. Java SE 14 behÄller bakÄtkompatibilitet med tidigare versioner av Java-plattformen, alla tidigare skrivna Java-projekt fungerar utan förÀndringar nÀr de körs under den nya versionen. Klara installationspaket för Java SE 14 (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 14 Àr helt öppen under GPLv2-licensen med undantag för GNU ClassPath, som tillÄter dynamisk lÀnkning med kommersiella produkter.

Java SE 14 klassas som en release med normalt supportintervall, uppdateringar kommer att slÀppas fram till nÀsta release. För en version med lÄngsiktig support (LTS) bör Java SE 11 anvÀndas, vars uppdateringar kommer att slÀppas fram till 2026. Den föregÄende LTS-versionen Java 8 kommer att stödjas fram till december 2020. Den nÀsta LTS-releasen Àr planerad till september 2021. Observera att med Java 10 inleddes ett nytt utvecklingsprocess, vilket innebÀr en kortare cykel för nya releaser. Ny funktionalitet utvecklas nu i en stÀndigt uppdaterad huvudgren, som inkluderar fÀrdiga Àndringar och frÄn vilken nya stabiliseringsgrenar skapas var sjÀtte mÄnad.

Av nyheterna Java 14 kan notera:

  • Experimentellt stöd har lagts till 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();
    }

  • Experimentellt stöd för det nya nyckelordet "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).

  • Standardiserad och standard aktiverad stöd för den nya formen av "switch"-uttryck, som inte krĂ€ver angivande av "break"-operatorn, vilket gör det möjligt att kombinera upprepande etiketter och tillĂ„ter anvĂ€ndning inte bara i form av en operator, utan ocksĂ„ som ett uttryck.

    var log = switch (event) {
    fall PLAY -> "AnvÀndaren har utlösts play-knappen";
    fall STOP, PAUSE -> "AnvÀndaren behöver en paus";
    standard -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield "OkÀnt event " + message +
    " loggat pÄ " + now;
    }
    };

  • Utökat experimentellt stöd textblock har stabiliserats och införts i sprĂ„ket. — nya former av strĂ€ngliteral som möjliggör inkludering av flerbokstextdata i kĂ€llkoden utan att anvĂ€nda teckenkodning och bevara den ursprungliga formateringen av texten i blocket. Inramning av blocket görs med tre dubbla citat. I Java 14 har textblock stöd för escape-sekvensen «\s» för att indikera ett mellanslag och «\» för att sammanfoga med nĂ€sta rad (ignorera radbrytningen nĂ€r du behöver skriva ut en vĂ€ldigt lĂ„ng rad). Till exempel, istĂ€llet för koden

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

    \"Java 14 is here!\"

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

    kan man ange:

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

    "Java 14\"
    Àr hÀr!"


    <\/BODY>
    """;

  • Utökat informationsinnehĂ„ll vid diagnos av undantag NullPointerException. Tidigare hĂ€nvisade felmeddelandet bara till radnumret, men nu detaljbeskriver det vilken metod som orsakade undantaget. Den utvidgade diagnostik aktiveras för nĂ€rvarande bara nĂ€r den startas med flaggan «-XX:+ShowCodeDetailsInExceptionMessages». Till exempel, nĂ€r denna flagga anges, kommer undantaget pĂ„ raden

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

    att ge följande meddelande

    Exception in thread «main» java.lang.NullPointerException: Kan inte anropa «Location.getCity()»
    eftersom returvÀrdet av «User.getLocation()» Àr null
    vid NullPointerExample.main(NullPointerExample.java:5):5)

    vilket gör det möjligt att förstÄ att metoden Location.getCity() inte har anropats och att User.getLocation() returnerade vÀrdet null.

  • Implementerad en preliminĂ€r version av verktyget jpackage, som möjliggör skapandet av paket för sjĂ€lvstĂ€ndiga (self-contained) Java-applikationer. Verktyget Ă€r grundat pĂ„ javapackager frĂ„n JavaFX och gör det möjligt att skapa paket i format som Ă€r inhemska för olika plattformar (msi och exe för Windows, pkg och dmg för macOS, deb och rpm för Linux). Paketet inkluderar alla nödvĂ€ndiga beroenden.
  • I skrĂ€psamlaren G1 tillagd en ny minnesfördelningsmekanism som tar hĂ€nsyn till arbetsmetoder pĂ„ stora system som anvĂ€nder arkitekturen NUMA. Den nya minnesfördelaren aktiveras med flaggan «+XX:+UseNUMA» och möjliggör en betydande ökning av prestandan pĂ„ NUMA-system.
  • Tillagd API för att spĂ„ra hĂ€ndelser i realtid JFR (JDK Flight Recorder), till exempel för att organisera kontinuerlig övervakning.
  • Tillagd modulen jdk.nio.mapmode, som erbjuder nya lĂ€gen (READ_ONLY_SYNC, WRITE_ONLY_SYNC) för att skapa avbildade bytebuffrar (MappedByteBuffer) som refererar till icke-flyktig minne (NVM).
  • Implementerad Ett preliminĂ€rt API för Foreign-Memory Access som möjliggör för Java-applikationer att pĂ„ ett sĂ€kert och effektivt sĂ€tt fĂ„ tillgĂ„ng till minnesomrĂ„den utanför Java-högen, genom att manipulera de nya abstraktionerna MemorySegment, MemoryAddress och MemoryLayout.
  • Deklarerade utgĂ„ngna portar för operativsystemet Solaris och SPARC-processorer (Solaris/SPARC, Solaris/x64 och Linux/SPARC) med avsikt att ta bort dessa portar i framtiden. Att klassificera de angivna portarna som utgĂ„ngna möjliggör för gemenskapen att pĂ„skynda utvecklingen av nya funktioner i OpenJDK, utan att behöva slösa tid pĂ„ att upprĂ€tthĂ„lla Solaris- och SPARC-specifika funktioner.
  • Borttagen CMS (Concurrent Mark Sweep) skrĂ€psamlare, som för tvĂ„ Ă„r sedan markerades som utgĂ„ngen och har inte lĂ€ngre underhĂ„llits (CMS har lĂ€nge blivit ersatt av G1-skrĂ€psamlaren). Dessutom, meddelats utgĂ„ngen anvĂ€ndning av en kombination av skrĂ€psamlingsalgoritmerna ParallelScavenge och SerialOld (som körs med alternativen „-XX:+UseParallelGC -XX:-UseParallelOldGC“).
  • Experimentellt stöd för ZGC (Z Garbage Collector) har införts pĂ„ plattformarna macOS och Windows (tidigare stöddes endast pĂ„ Linux). ZGC arbetar i passivt lĂ€ge och minimerar i möjligaste mĂ„n förseningar pĂ„ grund av skrĂ€psamling (upphĂ„llstiden vid anvĂ€ndning av ZGC överstiger inte 10 ms.) och kan fungera med bĂ„de smĂ„ och enorma högar, frĂ„n nĂ„gra hundra megabyte till flera terabyte.
  • Borttagna verktyg och API för komprimering av JAR-filer med hjĂ€lp av Pack200-algoritmen.

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