Ukukhishwa kwe-Java SE 14

Ngemva kwezinyanga eziyisithupha zokuthuthuka, i-Oracle kukhishwe inkundla I-Java SE 14 (I-Java Platform, i-Standard Edition 14), iphrojekthi ye-OpenJDK yomthombo ovulekile isetshenziswa njengokuqaliswa kwereferensi. I-Java SE 14 igcina ukuhambisana okusemuva nokukhishwa kwangaphambilini kweplathifomu ye-Java; wonke amaphrojekthi e-Java abhalwe ngaphambilini azosebenza ngaphandle kwezinguquko lapho yethulwa ngaphansi kwenguqulo entsha. Izakhiwo ezilungele ukufaka i-Java SE 14 (i-JDK, i-JRE ne-Server JRE) ilungisiwe ye-Linux (x86_64), iWindows ne-macOS. Ukuqaliswa kwereferensi okuthuthukiswe iphrojekthi ye-OpenJDK I-Java 14 iwumthombo ovulekile ngokugcwele ngaphansi kwelayisensi ye-GPLv2, ngaphandle kwe-GNU ClassPath evumela ukuxhumanisa okunamandla nemikhiqizo yezentengiso.

I-Java SE 14 ihlukaniswa njengokukhululwa kosekelo olujwayelekile futhi izoqhubeka nokuthola izibuyekezo kuze kube ukukhishwa okulandelayo. Igatsha Lokusekela Isikhathi Eside (LTS) kufanele libe yi-Java SE 11, ezoqhubeka nokuthola izibuyekezo kuze kube ngu-2026. Igatsha langaphambilini le-LTS le-Java 8 lizosekelwa kuze kube nguDisemba 2020. Ukukhishwa okulandelayo kwe-LTS kuhlelelwe uSepthemba 2021. Ake sikukhumbuze ukuthi kusukela ngokukhululwa kwe-Java 10, iphrojekthi ishintshele kunqubo entsha yokuthuthukisa, okusho umjikelezo omfushane wokwakhiwa kokukhishwa okusha. Ukusebenza okusha manje sekuthuthukisiwe egatsheni elilodwa eliyinhloko elivuselelwe njalo, elihlanganisa izinguquko esezilungile futhi lapho amagatsha enziwa khona njalo ngemva kwezinyanga eziyisithupha ukuze kuzinziswe ukukhishwa okusha.

Из emisha I-Java 14 can Maka:

  • Kwengezwe usekelo lokuhlola ukufanisa iphethini ku-opharetha "isibonelo", esikuvumela ukuthi uchaze ngokushesha okuguquguqukayo kwasendaweni ukuze ufinyelele inani elihloliwe. Isibonelo, ungabhala ngokushesha ukuthi “uma (obj exampleof String s && s.length() > 5) {.. s.contains(..) ..}” ngaphandle kokuchaza ngokucacile “String s = (String) obj”.

    Bekuyi:

    uma (obj exampleof Group) {
    Iqembu = (Iqembu) obj;
    var entries = group.getEntries();
    }

    Manje ungenza ngaphandle kwencazelo “Iqembu leqembu = (Iqembu) obj”:

    uma (obj exampleof Group group) {
    var entries = group.getEntries();
    }

  • Kwengezwe usekelo lokuhlola lwegama elingukhiye elisha "irekhodi", ehlinzeka ngefomu elihlangene lokuchaza amakilasi, okukuvumela ukuba ugweme ukuchaza ngokucacile izindlela ezihlukene zezinga eliphansi ezifana ne-equals(), i-hashCode() kanye ne-toString() ezimeni lapho idatha igcinwa kuphela ezinkambini ukuziphatha kwazo kungashintshi. Uma ikilasi lisebenzisa ukusetshenziswa okujwayelekile kwezindlela ezilinganayo(), i-hashCode() kanye ne-toString(), lingenza ngaphandle kwencazelo yazo esobala:

    irekhodi lomphakathi le-BankTransaction (Idethi ye-LocalDate,
    inani eliphindwe kabili
    Incazelo yeyunithi yezinhlamvu) {}

    Lesi simemezelo sizokwengeza ngokuzenzakalelayo ukusetshenziswa kwezindlela ze-equals(), hashCode() kanye ne-toString() ngaphezu kwezindlela zomakhi ne-getter.

  • Isezingeni futhi ukusekelwa kohlobo olusha lwezinkulumo zokuthi “switch” kunikwe amandla ngokuzenzakalela, okungadingi kucaciswe opharetha “wekhefu”, kukuvumela ukuthi uhlanganise amalebula aphindaphindiwe futhi angasetshenziswa hhayi nje ngesimo somsebenzisi, kodwa futhi nanjengomsebenzi. isisho.

    var log = shintsha (umcimbi) {
    icala DLALA -> “Umsebenzisi ucuphe inkinobho yokudlala”;
    icala MISA, IMA -> “Umsebenzisi udinga ikhefu”;
    okuzenzakalelayo -> {
    Umlayezo wentambo = event.toString();
    LocalDateTime manje = LocalDateTime.now();
    veza "Umcimbi ongaziwa" + umyalezo +
    » ungene ku» + manje;
    }
    };

  • Usekelo lokuhlola olunwetshiwe amabhlogo wombhalo - uhlobo olusha lwezintambo ezingokoqobo ezikuvumela ukuthi ufake idatha yombhalo wemigqa eminingi kukhodi yomthombo ngaphandle kokusebenzisa ukuphunyuka kohlamvu nokulondoloza ukufometha kombhalo wangempela kubhulokhi. Ibhulokhi inohlaka ngezingcaphuno ezintathu eziphindwe kabili. Ku-Java 14, amabhlokhi ombhalo manje asekela ukulandelana kokuphunyuka kokuthi "\s" ukuchaza isikhala esisodwa kanye nokuthi "\" ihambisane nomugqa olandelayo (ungazinaki imigqa emisha lapho udinga ukuphrinta umugqa omude kakhulu). Isibonelo, esikhundleni sekhodi

    Uchungechunge lwe-html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"I-Java 1 isifikile!\" » +
    "\n\t" + " » +
    "\n" + " ";

    ungacacisa:

    String html = """


    »Java 1\
    lapha!

    """;

  • Okuqukethwe kolwazi lokuxilongwa lapho okuhlukile kwenzeka kunwetshiwe I-NullPointerException. Nakuba ngaphambilini umlayezo wephutha wawubhekisela enombolweni yomugqa kuphela, manje usuchaza ukuthi iyiphi indlela ebangele okuhlukile. Ukuxilonga okuthuthukile okwamanje kunikwa amandla kuphela uma kwethulwa ngefulegi elithi “-XX:+ShowCodeDetailsInExceptionMessages”. Isibonelo, uma ucacisa leli fulegi, okuhlukile emgqeni

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

    kuzophumela kumlayezo

    Okuhlukile kuchungechunge oluthi "main" java.lang.NullPointerException: Ayikwazi ukuncenga okuthi "Location.getCity()"
    ngoba inani lokubuyisela elithi "User.getLocation()" alisebenzi
    ku-NullPointerExample.main(NullPointerExample.java:5):5)

    okwenza kucace ukuthi indlela ye-Location.getCity() ayizange ibizwe futhi i-User.getLocation() ibuye ingenalutho.

  • Kwenziwa Ukubuka kuqala kwensiza ye-jpackage, ekuvumela ukuthi udale amaphakheji wezinhlelo zokusebenza ze-Java eziqukethwe ngokwazo. Insiza isekelwe ku-javapackager evela ku-JavaFX futhi ikuvumela ukuthi udale amaphakheji ngamafomethi endabuko kumapulatifomu ahlukahlukene (i-msi ne-exe ye-Windows, pkg kanye ne-dmg ye-macOS, i-deb ne-rpm ye-Linux). Amaphakheji afaka konke okuncikile okudingekayo.
  • Emqoqweni wezibi we-G1 kungezwe indlela entsha yokwabiwa kwenkumbulo ecabangela imininingwane yokusebenza kumasistimu amakhulu usebenzisa i-architecture I-NUMA. Isabi senkumbulo esisha sinikwe amandla kusetshenziswa ifulegi elithi “+XX:+UseNUMA” futhi singathuthukisa kakhulu ukusebenza kumasistimu e-NUMA.
  • Kwengezwe I-API yokuqapha lapho undiza imicimbi ye-JFR (JDK Flight Recorder), isibonelo sokuhlela ukuqapha okuqhubekayo.
  • Kwengezwe jdk.nio.mapmode module, enikeza izindlela ezintsha (READ_ONLY_SYNC, WRITE_ONLY_SYNC) zokudala amabhafa ebhayithi afakwe kumephu (MappedByteBuffer) abhekisela kumemori engaguquki (NVM).
  • Kwenziwa Ukubuka kuqala kwe-Foreign-Memory Access API, okuvumela izinhlelo zokusebenza ze-Java ukuthi zifinyelele ngokuphephile nangempumelelo izifunda zenkumbulo ezingaphandle kwenqwaba ye-Java ngokushintsha izingcaphuno ezintsha ze-MemorySegment, MemoryAddress, kanye ne-MemoryLayout.
  • Kumenyezelwe izimbobo ezihoxisiwe ze-Solaris OS kanye nabacubunguli be-SPARC (i-Solaris/SPARC, i-Solaris/x64 ne-Linux/SPARC) ngenhloso yokususa lezi zimbobo ngokuzayo. Ukwenqaba lezi zimbobo kuzovumela umphakathi ukuthi usheshise ukuthuthukiswa kwezici ezintsha ze-OpenJDK ngaphandle kokumosha isikhathi ugcina izici eziqondene ne-Solaris- ne-SPARC.
  • Kususiwe umqoqi kadoti we-CMS (Concurrent Mark Sweep), owamakwa ukuthi awusasebenzi eminyakeni emibili edlule futhi wasala unganakekile (i-CMS yathathelwa indawo kudala umqoqi we-G1). Ngaphandle kwalokho, kumenyezelwe yehlise ukusetshenziswa kwenhlanganisela ye-ParallelScavenge kanye ne-SerialOld yokuqoqa udoti ama-algorithms (sebenzisa izinketho “-XX:+UseParallelGC -XX:-UseParallelOldGC”).
  • Ukusekelwa kokuhlola komqoqi kadoti we-ZGC (Z Ukuqoqwa kukadoti) kuhlinzekwe kuma-macOS kanye namapulatifomu e-Windows (owayekade esekelwa kuphela ku-Linux). I-ZGC isebenza ngemodi yokungenzi lutho, inciphisa ukubambezeleka ngenxa yokuqoqwa kukadoti ngangokunokwenzeka (isikhathi sokuhlala lapho usebenzisa i-ZGC asidluli ku-10 ms.) futhi ingasebenza ngazo zombili izinqwaba ezincane nezinkulu, ezinobukhulu obusuka kumamegabhayithi angamakhulu ambalwa kuya kumaterabhayithi amaningi.
  • Kususiwe Ikhithi yamathuluzi ne-API yokucindezela amafayela e-JAR usebenzisa i-algorithm ye-Pack200.

Source: opennet.ru

Engeza amazwana