JavaRush /Java Blog /Random-TL /Narito ang Java 12: ano ang bago?

Narito ang Java 12: ano ang bago?

Nai-publish sa grupo
Kaya, lumitaw ang Java sa numero 12. At kahit na hindi ito isang release ng LTS (iyon ay, hindi Pangmatagalang suporta, hindi isang release na susuportahan sa mahabang panahon. Ang Bersyon 11 ay itinuturing na unang release ng LTS na may walong- taon na panahon ng suporta ), ang mga kagiliw-giliw na bagay ay lumitaw sa mga update nito. Tingnan natin ang pinakamahalaga sa kanila. Alalahanin na sa Java, ang mga panukala sa pagbabago ay dinaglat bilang jeps (mula sa JDK Enhancement Proposal). Narito ang Java 12: ano ang bago?  - 1

Ang pinakakawili-wiling JDK 12 ni Jep

189: Shenandoah: Isang Low-Pause-Time Garbage Collector (Experimental) Gumagamit ang Garbage Collector, Shenandoah, ng bagong algorithm na nagpapababa ng runtime sa pamamagitan ng paglilinis nang sabay-sabay sa pagpapatakbo ng mga Java thread. Sa kasong ito, ang oras ng pag-pause sa Shenandoah ay magiging pareho anuman ang laki ng heap. Para sa ilang kadahilanan, hindi isinama ng Oracle ang Sheandoah sa mga "opisyal" na paglabas nito, sa kabila ng katotohanan na itinuturing ng mga developer ang tampok na ito bilang isa sa pinakamahalaga sa bagong release. Kaya kung plano mong subukan ang advanced na Garbage Collector, kailangan mong gumamit ng mga third-party na build, gaya ng Azul . 230: Microbenchmark Suite Ang Microbenchmark ay isang microbenchmark na sumusukat sa pagganap ng ilang maliit na elemento. Sa Java, ang mga ito ay isinulat at pinapatakbo gamit ang JMH framework. Mula noong bersyon 12, ang JMH ay naidagdag sa JDK, at mayroon nang mga pagsubok na nakasulat dito, na nagpapadali sa buhay para sa mga developer. 325: Switch Expressions (Preview) Isang bagong anyo ng pagsulat ng expression na may switch statement. Nagbibigay ang feature page ng halimbawang code gamit ang tradisyunal na switch, kung saan ang patuloy na paggamit ng break ay ginagawa itong hindi kinakailangang verbose, na humahantong sa mga madalas na random na error.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Iminumungkahi ng mga may-akda ng update na magpakilala ng bagong anyo ng switch label na "case L ->" para malinaw na ipahiwatig na ang code lang sa kanan ng label ang isasagawa kung naaangkop ang label na ito. Kaya, ang code na ipinapakita sa itaas ay maaaring makabuluhang paikliin gamit ang bagong syntax:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: JVM Constants API Ang constant pool ay naglalaman ng tinatawag na loadable constants. Ito ay mga halaga, halimbawa ng uri ng String o anumang primitive na uri, pati na rin ang mga artifact ng run-time, gaya ng mga klase at pamamaraan. Kapag nagtatrabaho sa mga file ng klase, makikinabang ang mga programmer mula sa mga maginhawang tool para sa pagmamanipula ng mga na-load na constant. Sinimulan ng mga may-akda ng jep na ito na lutasin ang problemang ito sa pamamagitan ng pagpapakilala ng mga bagong uri ng nakabatay sa halaga ng mga simbolikong link, na ang bawat isa ay maglalarawan ng isang partikular na uri ng mga constant. Code ng pagbabago . 340: One AArch64 Port, Not Two Itinago ng kumplikadong pangalan na ito ang solusyon sa problemang lumitaw sa Java 9, nang sabay-sabay na lumabas sa kit ang 64-bit ARM port ng Oracle at aarch64 mula sa Red Hat. Bukod dito, na sa oras ng paglabas ng JDK 11, kahit na ang Oracle mismo ay hindi sumusuporta sa 64-bit na bersyon ng mga port ng Oracle. Kaya ngayon ang 64-bit na Oracle port ay inalis na, nag-iiwan ng 32-bit ARM32, at 64-bit, mas produktibo, aarch64. 341: Default CDS Archives Isang napakagandang update dahil talagang pinapabilis nito ang paglulunsad ng application. Hindi lihim na kapag nagsimula ang isang Java application, isang malaking bilang ng mga klase ang magsisimulang mag-load, at ito ay medyo mahaba ang proseso. Ang CDS ay nangangahulugang Pagbabahagi ng Data ng Klase, at binibigyang-daan ka ng function na ito na i-pack ang lahat ng mga klase na ito na inilunsad sa pagsisimula sa isang espesyal na archive ng pagbabahagi ng data ng klase, gamit ang default na listahan ng mga parehong klase na ito. Bilang resulta, ang bilis ng paglulunsad ng application ay tumataas nang malaki. 344: Abortable Mixed Collections para sa G1 G1 ay isang basurero na naging pangunahing tagakolekta ng basura sa JDK 9, na pinalitan ang Parallel GC. Sa Java 10, natutunan ng G1 na mangolekta ng basura sa maraming mga thread. Gayunpaman, hindi lahat ay masaya sa kanyang trabaho; ang isa sa mga pangunahing problema ay mahabang paghinto. Ngayon ay maaari silang kanselahin. Tinutukoy ng G1, batay sa pagsusuri ng gawi ng programa, ang dami ng trabaho, at pagkatapos ay kinokolekta ang "live" na mga bagay sa isang Collection set hanggang sa makolekta nito ang lahat, nang walang tigil. Kadalasan ay hindi nakuha ng G1 ang pagkalkula ng dami ng trabaho at nagtrabaho nang masyadong mahaba. Kapag naipatupad na ang jep-344, maaaring lumipat ang G1 sa incremental na koleksyon ng basura at kung ang susunod na hakbang ay mas matagal upang makumpleto kaysa sa makatwiran, ang hakbang na iyon ay maaaring i-abort. 346: Agad na Ibalik ang Hindi Nagamit na Committed Memory mula sa G1 At ilan pang update sa kampo ng nabanggit na G1 assembler. Minsan nangyari na mayroong isang bungkos ng memorya ng Java heap, ngunit walang gumamit nito, ang memorya na ito. Sa Java 12, maaari mo na ngayong "ibalik" ang hindi aktibong memorya sa operating system. Dati, napakabihirang makakuha ng G1 upang isuko ang memorya, ngunit ngayon ang lahat ay pinasimple. Gamit ang bagong tampok, ang application ay tinukoy bilang hindi aktibo kung ang pagitan mula noong huling build ay nag-expire at walang kasabay na cycle. Ang isa pang sitwasyon ay kung o kung ang getloadavg() function, na matagal nang sinusubaybayan, ay nagpapakita ng load sa ibaba ng itinakdang katanggap-tanggap na threshold. Kung maganap ang isa sa dalawang kaganapan, magsisimula ang bahagyang pangongolekta ng basura. Ano ang wala sa Java 12: Raw String Literals Maraming developer ang interesado sa feature na ito, ngunit hindi ito lumabas sa release na ito. Napagpasyahan ng mga may-akda nito na kailangan pa rin itong magtrabaho. Kaya, nangangahas kaming umasa na ang isang function para sa maginhawang trabaho na may mga string literal ay lilitaw sa isa sa mga susunod na bersyon ng Java. Ang suporta para sa mga literal na hilaw na string ay nagbibigay-daan sa iyo upang gumana sa impormasyon ng string anuman ang wika. Tinatanggal nito ang pangangailangan para sa kalasag. Partikular na kapaki-pakinabang sa mga regular na expression, kung saan ang mga backslashes ay malawakang ginagamit, at sa Windows-path, kung saan ang mga backslashes ay ginagamit bilang mga delimiter. Ibig sabihin, para maiwasan ang mga ganitong construction: C:\\My\\Test\\Pack\\
Ang bawat programmer ay madalas na nakakaranas ng isa o isa pang kahirapan sa kanilang trabaho. Minsan nauugnay ang mga ito sa kawalan ng karanasan ng developer, ngunit kung minsan ay sa di-kasakdalan ng tool mismo. Ang Java ay isang mahusay na wika, ngunit ito ay malayo sa perpekto. Marahil ay nakatagpo ka na ng isang bagay sa Java at alam mo kung ano ang gusto mong baguhin sa iyong "tool" (wika)? Ibahagi sa mga komento!

mga konklusyon

Walang rebolusyon sa Java 12. Gayunpaman, walang nagplano nito. Gayunpaman, ang ilang mga inobasyon ay naglalayong i-optimize ang pagpapatakbo ng mga application at pabilisin ang trabaho, na isang magandang balita. Oo nga pala, sinusuportahan na ng IDEA ang JDK 12, kaya maaari mong subukan ang mga kakayahan nito. Siyempre, kakaunti ang mga pag-update na direktang nakakaapekto sa mga nagsisimula, kahit na ang mga nagsisimula pa lang mag-aral ng JavaRush ay maaaring maglaro sa bagong switch (pagkatapos itakda ang --enable-preview flag).
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION