Java SE 14 tso tawm

Tom qab rau lub hlis ntawm txoj kev loj hlob, Oracle tso tawm platform JavaSE 14 (Java Platform, Standard Edition 14), qhov qhib qhov project OpenJDK yog siv los ua kev siv siv. Java SE 14 tswj kev rov qab sib raug zoo nrog kev tshaj tawm yav dhau los ntawm Java platform; tag nrho cov ntawv sau yav dhau los Java yuav ua haujlwm yam tsis muaj kev hloov pauv thaum pib hauv qab version tshiab. Npaj-rau-nruab Java SE 14 tsim (JDK, JRE thiab Server JRE) npaj rau Linux (x86_64), Windows thiab macOS. Cov ntaub ntawv siv tau tsim los ntawm OpenJDK qhov project Java 14 yog qhov qhib tag nrho raws li daim ntawv tso cai GPLv2, nrog rau GNU ClassPath kev zam uas tso cai rau kev sib txuas nrog cov khoom lag luam.

Java SE 14 tau muab cais ua qhov kev txhawb nqa dav dav thiab yuav tau txais kev hloov kho mus ntxiv kom txog thaum tso tawm tom ntej. Lub Sijhawm Txhawb Lub Sijhawm Ntev (LTS) ceg yuav tsum yog Java SE 11, uas yuav txuas ntxiv tau txais kev hloov tshiab mus txog xyoo 2026. Yav dhau los LTS ceg ntawm Java 8 yuav raug txhawb kom txog rau thaum lub Kaum Ob Hlis 2020. Qhov kev tso tawm LTS tom ntej yog teem rau lub Cuaj Hli 2021. Cia peb nco ntsoov koj tias pib nrog kev tso tawm ntawm Java 10, qhov project tau hloov mus rau txoj kev txhim kho tshiab, ua rau lub voj voog luv luv rau kev tsim tawm tshiab. Kev ua haujlwm tshiab tam sim no tau tsim nyob rau hauv ib qho kev hloov kho tshiab tas li, uas suav nrog cov kev hloov pauv uas tau npaj tseg thiab los ntawm cov ceg ntoo uas tau txiav txhua rau rau lub hlis kom ruaj khov rau kev tso tawm tshiab.

Ntawm qhov kev tsim kho tshiab Java 14 tau Mark:

  • Ntxiv kev txhawb nqa kev sim qauv txuam nyob rau hauv "piv txwv li" tus neeg teb xov tooj, uas tso cai rau koj tam sim ntawd txhais ib qho kev sib txawv hauv zos kom nkag mus rau tus nqi txheeb xyuas. Piv txwv li, koj tuaj yeem sau tam sim "yog tias (obj piv txwv ntawm String s && s.length() > 5) {.. s.contains (..) ..}" yam tsis tau txhais meej meej "String s = (String) obj".

    Yog:

    yog tias (obj piv txwv ntawm Pawg) {
    pab pawg = (Group)obj;
    var entries = group.getEntry();
    }

    Tam sim no koj tuaj yeem ua yam tsis muaj lub ntsiab lus "Pab pawg = (Group) obj":

    yog (obj piv txwv ntawm pab pawg neeg) {
    var entries = group.getEntry();
    }

  • Ntxiv kev sim txhawb nqa rau lo lus tseem ceeb tshiab "cov ntaub ntawv", uas muab ib daim ntawv cog lus rau kev txhais cov chav kawm, tso cai rau koj kom tsis txhob qhia meej meej txog ntau yam qib qis xws li sib npaug(), hashCode() thiab toString() nyob rau hauv rooj plaub uas cov ntaub ntawv tsuas yog khaws cia hauv thaj chaw uas nws tus cwj pwm tsis hloov. Thaum ib chav kawm siv cov qauv siv ntawm qhov sib npaug (), hashCode() thiab toString() txoj kev, nws tuaj yeem ua yam tsis muaj lawv cov ntsiab lus meej:

    pej xeem cov ntaub ntawv BankTransaction (LocalDate hnub tim,
    ob tus nqi
    Kab lus piav qhia) {}

    Cov lus tshaj tawm no yuav cia li ntxiv cov kev siv ntawm qhov sib npaug (), hashCode() thiab toString() txoj hauv kev ntxiv rau cov qauv tsim thiab cov txheej txheem getter.

  • Txheem thiab kev txhawb nqa rau daim ntawv tshiab ntawm "hloov" kab lus yog qhib los ntawm lub neej ntawd, uas tsis tas yuav qhia tus neeg teb xov tooj "so", tso cai rau koj los ua ke cov ntawv rov qab thiab tuaj yeem siv tsis yog hauv daim ntawv ntawm tus neeg teb xov tooj, tab sis kuj yog ib qho kev qhia.

    var log = hloov (event) {
    case PLAY -> "Tus neeg siv tau ua rau lub khawm ua si";
    case STOP, PAUSE -> "Tus neeg siv xav tau kev so";
    default -> {
    String message = event.toString();
    LocalDateTime tam sim no = LocalDateTime.now();
    yield "Unknown event" + lus +
    Β» nkag rau Β» + tam sim no;
    }
    };

  • Expanded kev pab txhawb nqa ntawv blocks - ib daim ntawv tshiab ntawm cov kab ntawv uas tso cai rau koj los suav nrog ntau cov kab ntawv cov ntaub ntawv hauv qhov chaws tsis tas siv cov cim khiav tawm thiab khaws cia cov ntawv sau qub hauv qhov thaiv. Lub block yog framed los ntawm peb ob nqe lus. Hauv Java 14, cov ntawv thaiv tam sim no txhawb txoj kev khiav tawm "\s" los txhais ib qho chaw thiab "\" kom sib txuas nrog cov kab txuas ntxiv (tsis quav ntsej cov kab tshiab thaum koj xav tau luam tawm kab ntev heev). Piv txwv li, tsis yog code

    String html = " Β» +
    "\n\t" + " Β» +
    "\n\t\t" + " \"Java 1 is here!\" Β» +
    "\n\t" + " Β» +
    "\n" + " ";

    koj tuaj yeem qhia meej:

    String html = """


    Β» Java 1\
    nyob ntawm no!

    """";

  • Cov ntsiab lus ntawm kev kuaj mob thaum muaj kev zam tau nthuav dav NullPointerTxojkev Zam Txim. Whereas yav dhau los cov lus yuam kev tsuas yog xa mus rau tus lej xov tooj, tam sim no nws paub meej tias txoj kev twg ua rau muaj kev zam. Advanced diagnostics yog tam sim no enabled tsuas yog thaum launched nrog tus "-XX: +ShowCodeDetailsInExceptionMessages" chij. Piv txwv li, thaum qhia tus chij no, qhov kev zam hauv kab

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

    yuav ua rau cov lus

    Kev zam hauv xov "main" java.lang.NullPointerException: Cannot invoke "Location.getCity()"
    vim tus nqi rov qab ntawm "User.getLocation()" yog null
    ntawm NullPointerExample.main(NullPointerExample.java:5:5)

    uas ua kom pom tseeb tias qhov Location.getCity() txoj kev tsis raug hu thiab User.getLocation() rov qab null.

  • Ua tiav Kev saib ua ntej ntawm jpackage utility, uas tso cai rau koj los tsim cov pob khoom rau nws tus kheej muaj Java daim ntawv thov. Cov khoom siv hluav taws xob yog ua raws li javapackager los ntawm JavaFX thiab tso cai rau koj los tsim cov pob khoom hauv hom ib txwm muaj rau ntau lub platform (msi thiab exe rau Windows, pkg thiab dmg rau macOS, deb thiab rpm rau Linux). Cov pob khoom suav nrog tag nrho cov kev vam meej uas xav tau.
  • Rau G1 khib nyiab ntxiv ib tug tshiab nco kev faib mechanism uas coj mus rau hauv tus account qhov tshwj xeeb ntawm kev ua hauj lwm nyob rau hauv loj systems siv lub architecture NUMA. Lub cim xeeb tshiab tau qhib siv lub "+ XX: + Siv NUMA" chij thiab tuaj yeem txhim kho kev ua tau zoo ntawm NUMA systems.
  • Ntxiv API rau kev saib xyuas ntawm JFR (JDK Flight Recorder) cov xwm txheej, piv txwv li rau kev tswj xyuas tas li.
  • Ntxiv jdk.nio.mapmode module, uas muaj cov qauv tshiab (READ_ONLY_SYNC, WRITE_ONLY_SYNC) rau tsim mapped byte buffers (MappedByteBuffer) referencing non-volatile memory (NVM).
  • Ua tiav Kev saib ua ntej ntawm Foreign-Memory Access API, tso cai rau cov ntawv thov Java kom nyab xeeb thiab ua tau zoo nkag mus rau thaj chaw nco sab nraum Java heap los ntawm kev tswj cov MemorySegment, MemoryAddress, thiab MemoryLayout abstractions.
  • Tshaj tawm deprecated ports rau Solaris OS thiab SPARC processors (Solaris / SPARC, Solaris / x64 thiab Linux / SPARC) nrog lub hom phiaj ntawm kev tshem tawm cov chaw nres nkoj yav tom ntej. Kev tshem tawm cov chaw nres nkoj no yuav tso cai rau cov zej zog kom nrawm txhim kho OpenJDK cov yam ntxwv tshiab yam tsis tau nkim sij hawm tswj hwm Solaris- thiab SPARC cov yam ntxwv tshwj xeeb.
  • Rho tawm CMS (Concurrent Mark Sweep) cov khoom khib nyiab, uas tau cim tias tsis siv tau ob xyoos dhau los thiab tseem tsis tau saib xyuas (CMS tau hloov ntev dhau los los ntawm G1 cov khoom khib nyiab). Tsis tas li ntawd, tshaj tawm deprecated kev siv ntawm kev sib xyaw ntawm ParallelScavenge thiab SerialOld khib nyiab algorithms (khiav nrog cov kev xaiv "-XX: +UseParallelGC -XX:-UseParallelOldGC").
  • Kev sim txhawb nqa rau ZGC (Z khib nyiab Collector) cov khoom khib nyiab tau muab rau ntawm macOS thiab Windows platforms (yav dhau los txhawb nqa tsuas yog ntawm Linux). ZGC ua haujlwm nyob rau hauv hom passive, txo qis latency vim kev khaws cov khib nyiab ntau li ntau tau (lub sijhawm ua haujlwm thaum siv ZGC tsis pub tshaj 10 ms.) thiab tuaj yeem ua haujlwm nrog ob qho tib si me thiab loj heaps, xws li qhov loj ntawm ntau pua megabytes mus rau ntau terabytes.
  • Tshem tawm Cov cuab yeej thiab API rau compressing JAR cov ntaub ntawv siv Pack200 algorithm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib