Java 10 Nové funkcie

Tento článok je súčasťou série: • Inferencia typu Java 10 LocalVariable

• 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:

  1. 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
  2. Podpora pre vydanie tejto funkcie bude trvať iba šesť mesiacov, tj. do ďalšieho vydania funkcie
  3. Vydanie dlhodobej podpory bude označené ako LTS. Podpora tohto vydania bude trvať tri roky
  4. 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

$config[zx-auto] not found$config[zx-overlay] not found