Java SE 14 tuku

I muri i nga marama e ono o te whanaketanga, Oracle i tukuna tūāpapa JavaSE 14 (Java Platform, Paerewa Putanga 14), ka whakamahia te kaupapa OpenJDK tuwhera-puna hei whakatinanatanga tohutoro. Ka mau tonu a Java SE 14 i te hototahi whakamuri me nga putanga o mua o te papaahi Java; ko nga kaupapa Java katoa i tuhia i mua ka mahi kaore he huringa ka whakahaerehia i raro i te putanga hou. Kua reri ki te whakauru i nga hanganga Java SE 14 (JDK, JRE me Server JRE) kua rite mo Linux (x86_64), Windows me macOS. Ko te whakatinanatanga tohutoro i whakawhanakehia e te kaupapa OpenJDK Java 14 he puna tuwhera katoa i raro i te raihana GPLv2, me nga tuunga a GNU ClassPath ka taea te hono hihiri me nga hua arumoni.

Ko te Java SE 14 kua whakarōpūhia hei tuku tautoko whanui me te whiwhi tonu i nga whakahoutanga tae noa ki te tukunga e whai ake nei. Ko Java SE 11 te peka Tautoko Roa (LTS), ka whiwhi tonu i nga whakahoutanga tae noa ki te tau 2026. Ko te peka LTS o mua o Java 8 ka tautokohia tae noa ki Hakihea 2020. Ko te tukunga LTS e whai ake nei kua whakaritea mo Mahuru 2021. Me whakamahara koe ki a koe i timata mai i te tukunga o Java 10, ka huri te kaupapa ki te tukanga whanaketanga hou, e kii ana i te huringa poto mo te hanganga o nga putanga hou. Inaianei kua whakawhanakehia nga mahi hou i roto i tetahi peka matua kua whakahoutia tonu, kei roto ko nga huringa kua oti te hanga me nga manga ka peka ia ono marama ki te whakapumau i nga putanga hou.

Tuhinga ka whai mai nga mahi auaha Java 14 taea Mark:

  • Kua taapirihia he tautoko whakamatautau whakaōrite tauira i roto i te kaiwhakahaere "instanceof", ka taea e koe te tautuhi tonu i tetahi taurangi rohe ki te uru atu ki te uara kua tirohia. Hei tauira, ka taea e koe te tuhi tonu “mehemea (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” me te kore e tino tautuhia “String s = (String) obj”.

    Ko:

    if (obj instanceof Group) {
    Rōpū rōpū = (Rōpū)obj;
    var tāurunga = group.getEntries();
    }

    Inaianei ka taea e koe te mahi me te kore te whakamaramatanga "Rōpū Rōpū = (Rōpū) obj":

    if (obj instanceof Rōpū Rōpū) {
    var tāurunga = group.getEntries();
    }

  • He tautoko whakamatautau mo te kupu matua hou "record", e whakarato ana i te puka kiato mo te tautuhi i nga karaehe, ka taea e koe te karo ki te tautuhi i nga tikanga taumata-iti penei i te rite(), hashCode() me toString() i roto i nga keehi ka penapena nga raraunga ki nga mara kaore e rereke ana te whanonga. Ina whakamahi ana te karaehe i nga whakatinanatanga paerewa o nga tikanga rite(), hashCode() me toString(), ka taea te mahi me te kore he whakamaramatanga marama:

    rekoata a te iwi mo te BankTransaction(Rā rohe,
    moni rua
    Whakaahuatanga aho) {}

    Ma tenei whakapuakanga ka taapiri aunoa i nga whakatinanatanga o nga tikanga rite(), hashCode() me toString() hei taapiri atu ki nga tikanga hanga me te tiki.

  • Paerewa me te tautoko mo te ahua hou o nga korero "whakawhiti" ka taea ma te taunoa, kaore e hiahia ki te tautuhi i te kaiwhakahaere "pakaru", ka taea e koe te whakakotahi i nga tapanga tukurua ka taea te whakamahi ehara i te ahua o te kaiwhakahaere anake, engari ano he whakapuakitanga.

    var log = whakawhiti (takahanga) {
    take PLAY -> "Na te Kaiwhakamahi i whakaoho te paatene purei";
    case STOP, PAUSE -> "Me okioki te kaiwhakamahi";
    taunoa -> {
    Karere aho = event.toString();
    LocalDateTime inaianei = LocalDateTime.now();
    tukua "Takanga Unknown" + karere +
    » kua takiuru » + inaianei;
    }
    };

  • Te tautoko whakamatautau kua whakawhānuihia poraka kuputuhi - he ahua hou o nga reta aho e taea ai e koe te whakauru i nga raraunga kuputuhi raina-maha ki te waehere puna me te kore e whakamahi i te ahua o te mawhiti me te pupuri i te whakatakotoranga kuputuhi taketake i roto i te poraka. Ka anga te poraka e toru nga korukī rua. I roto i te Java 14, ka tautokohia e nga poraka kuputuhi te raupapa mawhiti "\s" ki te tautuhi i te mokowā kotahi me te "\" ki te hono ki te rarangi e whai ake nei (kaore e aro ki nga rarangi hou ina hiahia koe ki te tuhi i tetahi rarangi tino roa). Hei tauira, hei utu mo te waehere

    Aho html = " »+
    "\n\t" + " »+
    "\n\t\t" + " \"Kei konei a Java 1!\" »+
    "\n\t" + " »+
    "\n" + " ";

    ka taea e koe te tohu:

    String html = """


    »Java 1\
    kei konei!

    """;

  • Kua whakawhänuihia te ihirangi o nga korero mo nga tātaritanga ina puta he atanga NullPointerException. I te mea i mua ko te karere hapa i korero noa ki te nama raina, inaianei ka korerohia he aha te tikanga i puta ke ai. I tenei wa ka whakahohehia nga tātaritanga matatau ina whakarewahia me te haki "-XX:+ShowCodeDetailsInExceptionMessages". Hei tauira, i te wa e tohu ana i tenei haki, ko te tuunga ki te raina

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

    ka puta he karere

    Okotahi i te miro "matua" java.lang.NullPointerException: Kaore e taea te tono "Location.getCity()"
    no te mea he kore te uara whakahoki o "User.getLocation()".
    i NullPointerExample.main(NullPointerExample.java:5):5)

    e marama ana ko te tikanga Location.getCity() kaore i karangahia, ka hoki mai a User.getLocation() kore.

  • Kua whakatinanahia He arokite mo te taputapu jpackage, e taea ai e koe te hanga kete mo nga tono Java-whaiaro. Ko te whaipainga kei runga i te javapackager mai i JavaFX ka taea e koe te hanga i nga kete i roto i nga whakatakotoranga taketake ki nga momo papaaho (msi me te exe mo Windows, pkg me dmg mo macOS, deb me rpm mo Linux). Kei roto i nga kohinga nga whakawhirinaki katoa e hiahiatia ana.
  • Ki te kaikohi para G1 kua taapirihia he tikanga tohatoha mahara hou e whai whakaaro ana ki nga ahuatanga o te mahi i runga i nga punaha nui ma te whakamahi i te hoahoanga Tau. Ka taea te tohatoha mahara hou ma te whakamahi i te haki "+XX:+UseNUMA" ka taea te whakapai ake i nga mahi i runga i nga punaha NUMA.
  • Kua tapirihia API mo te aroturuki i runga i te rere o nga huihuinga JFR (JDK Flight Recorder), hei tauira mo te whakarite i te tirotiro haere tonu.
  • Kua tapirihia jdk.nio.mapmode kōwae, e tuku aratau hou (READ_ONLY_SYNC, WRITE_ONLY_SYNC) mo te hanga mapi paita buffers (MappedByteBuffer) tohutoro mahara-kore (NVM).
  • Kua whakatinanahia He arokite mo te API Uru-Mahara-Tahi, ka taea e nga tono Java te uru haumaru me te whai hua ki nga rohe mahara kei waho o te puranga Java ma te raweke i nga tangohanga hou o MemorySegment, MemoryAddress, me MemoryLayout.
  • Kua panuitia kua whakakorehia nga tauranga mo te Solaris OS me te SPARC tukatuka (Solaris / SPARC, Solaris / x64 me Linux / SPARC) me te whakaaro ki te tango i enei tauranga a muri ake nei. Ko te whakakore i enei tauranga ka taea e te hapori te whakatere i te whanaketanga o nga ahuatanga OpenJDK hou me te kore e moumou taima ki te pupuri i nga ahuatanga motuhake o Solaris me SPARC.
  • Kua mukua te CMS (Concurrent Mark Sweep) kaikohi para, i tohuhia kua tawhitotia i nga tau e rua ki muri, ka noho kore tonu (kua whakakapihia a CMS i mua e te kaikohi paru G1). I tua atu, i panuihia kua whakakorehia te whakamahi i te huinga o ParallelScavenge me te SerialOld kohinga paru algorithms (whakahaere me nga whiringa "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • Ko te tautoko whakamatautau mo te kaikohi paru ZGC (Z Garbage Collector) kua tukuna i runga i nga papaaho macOS me Windows (i tautokohia i mua i runga i te Linux anake). Ka mahi a ZGC i roto i te aratau hāngū, ka whakaiti i te roanga na te kohinga para i te mea ka taea (te wa o te waahi ka whakamahi i te ZGC kaua e neke ake i te 10 ms.) ka taea te mahi me nga puranga iti me nga puranga nui, mai i te maha rau megabytes ki te maha terabytes.
  • Kua tangohia Utauta me te API mo te kopiri i nga konae JAR ma te whakamahi i te Pack200 algorithm.

Source: opennet.ru

Tāpiri i te kōrero