Mogućnost switch izraza poboljšaće kodiranje, dozvoliti uparivanje uzoraka; sirovi string literali bi pojednostavili izraze sa više redova
Iako je Java Development Kit (JDK) 11 stigao prošlog meseca, rad se nastavlja na njegovom nasledniku, JDK 12, sa jednim skupom poboljšanja, jednim uklanjanjem funkcije i dve eksperimentalne (beta) mogućnosti koje su do sada predložene za puštanje u rad, koje se očekuje 19. marta, 2019.
JDK 12 je sada u razvoju u zajednici OpenJDK. Poboljšano pokretanje, CDS i sakupljanje smeća. Planira se unapređenje JDK procesa izgradnje na generisanje podrazumevane CDS arhive (deljene arhive klasa), koristeći podrazumevanu listu klasa, na 64-bitnim platformama. Cilj je da se uključi odmah upotrebljivo vreme pokretanja i ukloni potreba za pokretanjem -Xhare:dump-a da bi se koristio CDS. Planira se da se JDK izgradnja promeni tako da pokreće java-xshare:dump nakon povezivanja slike.
Moguće je uključiti dodatne opcije komandne linije za fino podešavanje vremena sakupljanja smeća kako bi se poboljšao raspored memorije za uobičajene slučajeve. Korisnici sa još naprednijim zahtevima, kao što su prilagođene liste klasa koje uključuju klase aplikacija i različite konfiguracije prikupljanja smeća, i dalje će moći da kreiraju prilagođenu CDS arhivu.
Smanjen broj ARM portova
Java 12 bi imala samo jedan port za ARM procesore, umesto dva. Plan je da se uklone svi izvori koji se odnose na port arm64, a zadrži se 32-bitni ARM i 64-bitni aarch64. Uklanjanje ovog porta omogućilo bi učesnicima da se usredsrede na jednu 64-bitnu ARM implementaciju i eliminiše se dupli posao potreban za održavanje dva porta. Trenutno se u JDK-u nalaze dva 64-bitna ARM porta.
Switch izrazi
Beta mogućnost switch izraza bi pojednostavila kodiranje jer će proširiti iskaz switch, tako da se može koristiti kao iskaz ili kao izraz. To bi omogućilo da oba oblika koriste bilo „tradicionalno“ bilo „pojednostavljeno“ ograničavanje i kontrolu toka. Ove promene će rezultirati pojednostavljenim „svakodnevnim“ kodiranjem i pripremiti način za korištenje uparivanja uzoraka u iskazu switch. Kako Java graditelji prelaze na podršku uparivanju uzoraka, postojeće neurednosti u postojećem iskazu switch postaju prepreka. Ovo uključuje podrazumevano ponašanje kontrole toka switch blokova; podrazumevani opseg switch blokova, u kojima se blok tretira kao jedan pojedinačni opseg; i switch koji radi samo kao iskaz. Sadašnji dizajn Javinog iskaza switch sledi bliže jezike kao što je C ++ i, podrazumevano, podržava semantiku propadanja. Ovaj kontrolni tok je bio koristan za pisanje koda niskog nivoa. Ali, kako se switch koristi u kontekstima višeg nivoa, njegova priroda sklona greškama počinje da preteže nad fleksibilnošću.
Sirovi string literali
Beta sirovi string literali bi obuhvatili više redova izvornog koda, ali ne bi tumačili izlazne sekvence, kao što je n, ili Unicode izlazne sekvence, u obliku /uXXX. Javini graditelji imaju više razloga za ovu mogućnost, uključujući:
– Omogućavanje lakšeg pravljenja sekvenci znakova u čitljivom obliku, bez Java zahteva Simplification kod pripreme stringova namenjenih gramatikama različitim od Jave.
– Pravljenje stringova koji sadrže više redova izvornog koda bez posebnih indikatora za nove redove.
– Sposobnost pravljenja stringova istih kao tradicionalni string literali, osim terminatora redova specifičnih za platformu.
– Podrška biblioteke za repliciranje tekuće javacstring interpretacije izlaznih sevenci i za upravljanje odsecanjem leve margine.
Programeri Jave 12 kažu da je Java kodu u realnom svetu potreban mehanizam za snimanje string literala kakvi jesu, bez posebnog rukovanja Unicode izlaznim sekvencama, obrnutim kosim crtama ili novim redovima. Sirovi string literal odvaja i Java izlazne sekvence i Java specifikacije terminatora redova, obezbeđujući sekvence znakova koje su u mnogim slučajevima čitljivije od postojećih string literala i lakše se održavaju. Java je ostao jedan od retkih jezika koji nema podršku sirovih stringova na nivou jezika. Predlog ne bi uvodio nove operatore stringova. Takođe, sirovi string literali takođe ne podržavaju interpolaciju stringova direktno. Ne bi bilo promene u interpolaciji tradicionalnih stringova.
Izvor: InfoWorld