Java 10 Nové funkcie
• Vylepšenia výkonu Java 10
• Nové funkcie Java 10 (aktuálny článok)
1. Úvod
JDK 10, čo je implementácia Java SE 10, bola vydaná 20. marca 2018.
V tomto článku sa budeme venovať a preskúmať nové funkcie a zmeny zavedené v JDK 10.
2. Odvodenie typu lokálnej premennej
Kliknite na odkaz na podrobný článok o tejto funkcii:
Odvod lokálnych premenných typu Java 10
3. Nemodifikovateľné zbierky
V prostredí Java 10 existuje niekoľko zmien týkajúcich sa nemodifikovateľných zbierok.
3.1. kópia()
java.util.List, java.util.Map a java.util.Set každý dostal novú statickú metódu copyOf (zbierka).
Vráti neupraviteľnú kópiu daného Zbierka:
@Test (očakáva sa = UnsupportedOperationException.class) public void whenModifyCopyOfList_thenThrowsException () {List copyList = List.copyOf (someIntList); copyList.add (4); }
Výsledkom by bol akýkoľvek pokus o úpravu takejto zbierky java.lang.UnsupportedOperationExceptionruntime výnimka.
3.2. toUnmodifiable * ()
java.util.stream.Collectors získajte ďalšie metódy na zhromažďovanie a Prúd na neupraviteľné Zoznam, Mapa alebo Nastaviť:
@Test (expect = UnsupportedOperationException.class) public void whenModifyToUnmodifiableList_thenThrowsException () {List evenList = someIntList.stream () .filter (i -> i% 2 == 0) .collect (Collectors.toUnmodifiableList ()); evenList.add (4); }
Výsledkom by bol akýkoľvek pokus o úpravu takejto zbierky java.lang.UnsupportedOperationExceptionruntime výnimka.
4. Voliteľné * .orElseThrow ()
java.util.Voliteľné, java.util.OptionalDouble, java.util.OptionalInta java.util.OptionalLongkaždý dostal novú metódu aleboElseThrow ()čo neberie žiadny argument a hodí NoSuchElementExceptionak nie je k dispozícii žiadna hodnota:
@Test public void whenListContainsInteger_OrElseThrowReturnsInteger () {Integer firstEven = someIntList.stream () .filter (i -> i% 2 == 0) .findFirst () .orElseThrow (); is (firstEven) .equals (Integer.valueOf (2)); }
Je to synonymum pre a je teraz preferovanou alternatívou k existujúcemu dostať ()metóda.
5. Zlepšenie výkonu
Kliknite na odkaz na podrobný článok o tejto funkcii:
Vylepšenia výkonu Java 10
6. Povedomie o kontajneri
Spoločnosti JVM teraz vedia, že sú spustené v kontajneri Docker a namiesto dotazu na samotný operačný systém extrahuje konfiguráciu špecifickú pre kontajner - vzťahuje sa na údaje, ako je počet CPU a celková pamäť, ktoré boli kontajneru pridelené.
Táto podpora je však k dispozícii iba pre platformy založené na systéme Linux. Táto nová podpora je predvolene povolená a je možné ju zakázať v príkazovom riadku pomocou možnosti JVM:
-XX: -UseContainerSupport
Táto zmena tiež pridáva možnosť JVM, ktorá poskytuje možnosť určiť počet CPU, ktoré bude JVM používať:
-XX: ActiveProcessorCount = počet
Boli tiež pridané tri nové možnosti JVM, ktoré umožňujú používateľom kontajnerov Docker získať jemnejšiu kontrolu nad veľkosťou systémovej pamäte, ktorá sa použije pre haldu Java:
-XX: InitialRAMPercentage -XX: MaxRAMPercentage -XX: MinRAMPercentage
7. Koreňové certifikáty
Úložisko kľúčov cacerts, ktoré bolo pôvodne zatiaľ prázdne, má obsahovať sadu koreňových certifikátov, ktoré možno použiť na vytvorenie dôvery v reťazce certifikátov používané rôznymi bezpečnostnými protokolmi.
Výsledkom bolo, že kritické bezpečnostné komponenty, ako napríklad TLS, v rámci stavieb OpenJDK predvolene nefungovali.
V prostredí Java 10 spoločnosť Oracle otvorila koreňové certifikáty otvoreným zdrojom v programe Oracle Java SE Root CA s cieľom zatraktívniť zostavy OpenJDK pre vývojárov a zmenšiť rozdiely medzi týmito zostavami a zostavami Oracle JDK.
8. Odpisy a odstránenie
8.1. Možnosti a nástroje príkazového riadku
Nástroj javah bol odstránený z Java 10, ktorý generoval hlavičky C a zdrojové súbory, ktoré boli potrebné na implementáciu natívnych metód - teraz, javac -h môže byť použitý namiesto toho.
politický nástroj bol UI nástroj na vytváranie a správu súborov politík. Toto bolo teraz odstránené. Používateľ môže na vykonanie tejto operácie použiť jednoduchý textový editor.
Odstránený java -Xprofmožnosť. Táto voľba bola použitá na profilovanie bežiaceho programu a odoslanie profilových údajov na štandardný výstup. Používateľ by teraz mal použiť jmap namiesto toho nástroj.
8.2. API
Zastaraný balík java.security.acl bol označený pre Remem = = true a v budúcej verzii Java SE môže byť odstránený. To bolo nahradené java.bezpečnosť.Politika a súvisiace triedy.
Podobne je označená aj java.security. {Certificate, Identity, IdentityScope, Signer} API sú označené forRemoval = true.
9. Správa verzií podľa času
Počnúc programom Java 10 prešla spoločnosť Oracle k časovo závislému vydaniu Java. To má nasledujúce dôsledky:
- Nové vydanie Java každých šesť mesiacov. Vydanie z marca 2018 je 10 JDK, vydanie zo septembra 2018 je JDK 11 a tak ďalej. Nazývajú sa vydania funkcií a očakáva sa, že budú obsahovať minimálne jednu alebo dve významné funkcie
- Podpora pre vydanie tejto funkcie bude trvať iba šesť mesiacov, tj. do ďalšieho vydania funkcie
- Vydanie dlhodobej podpory bude označené ako LTS. Podpora tohto vydania bude trvať tri roky
- Java 11 bude vydaním LTS
java -verzia teraz bude obsahovať dátum GA, čo uľahčuje identifikáciu veku vydania:
$ java -version openjdk verzia "10" 2018-03-20 OpenJDK Runtime Environment 18.3 (build 10 + 46) OpenJDK 64-bitový server VM 18.3 (build 10 + 46, zmiešaný režim)
10. Záver
V tomto článku sme videli nové funkcie a zmeny, ktoré priniesla Java 10.
Útržky kódu ako obvykle nájdete na GitHub.
« Predchádzajúce vylepšenia výkonu v Java 10