Java 10 új funkciók

Ez a cikk egy sorozat része: • Java 10 LocalVariable Type-Inference

• Java 10 teljesítményjavítások

• Java 10 új funkciók (aktuális cikk)

1. Bemutatkozás

A JDK 10, amely a Java SE 10 megvalósítása, 2018. március 20-án jelent meg.

Ebben a cikkben a JDK 10 új szolgáltatásait és változásait ismertetjük.

2. Helyi változó típusú következtetés

Kövesse a linket a funkcióval kapcsolatos részletes cikkhez:

Java 10 helyi változó típusú következtetés

3. Nem módosítható gyűjtemények

A Java 10 módosíthatatlan gyűjteményeivel kapcsolatban néhány változás történt.

3.1. másolata()

java.util.List, java.util.Térkép és java.util.Set mindegyik kapott egy új statikus módszert copyOf (Gyűjtemény).

Visszaadja az adott módosítás módosíthatatlan másolatát Gyűjtemény:

@Test (várható = UnsupportedOperationException.class) public void whenModifyCopyOfList_thenThrowsException () {List copyList = List.copyOf (someIntList); copyList.add (4); }

Bármilyen kísérlet egy ilyen gyűjtemény módosítására azt eredményezné java.lang.UnsupportedOperationExceptionfutásidejű kivétel.

3.2. módosíthatatlan * ()

java.util.stream.Gyűjtők további módszerek beszerzése a Folyam módosíthatatlanná Lista, Térkép vagy Készlet:

@Test (várható = UnsupportedOperationException.class) public void whenModifyToUnmodifiableList_thenThrowsException () {List evenList = someIntList.stream () .filter (i -> i% 2 == 0) .collect (Collectors.toUnmodifiableList () evenList.add (4); }

Bármilyen kísérlet egy ilyen gyűjtemény módosítására azt eredményezné java.lang.UnsupportedOperationExceptionfutásidejű kivétel.

4. Opcionális * .orElseThrow ()

java.util.Opcionális, java.util.OptionalDouble, java.util.OptionalIntés java.util.OptionalLongmindegyik új módszert kapott vagyElseThrow ()ami nem vesz fel vitát és dob NoSuchElementExceptionha nincs érték:

@Test public void whenListContainsInteger_OrElseThrowReturnsInteger () {Egész egész firstEven = someIntList.stream () .filter (i -> i% 2 == 0) .findFirst () .orElseThrow (); is (firstEven) .egyenlő (Integer.valueOf (2)); }

Ez szinonimája a jelenlegi alternatívának kap()módszer.

5. Teljesítményjavítások

Kövesse a linket a funkcióval kapcsolatos részletes cikkhez:

Java 10 teljesítményjavítások

6. Konténer tudatosság

A JVM-ek már tudatában vannak annak, hogy Docker-tárolóban futtatják őket és kibontja a konténerspecifikus konfigurációt ahelyett, hogy lekérdezné magát az operációs rendszert - ez vonatkozik az olyan adatokra, mint a tárolókhoz rendelt CPU-k száma és teljes memória.

Ez a támogatás azonban csak Linux alapú platformokon érhető el. Ez az új támogatás alapértelmezés szerint engedélyezve van, és kikapcsolható a parancssorban a JVM opcióval:

-XX: -UseContainerSupport

Ez a változás hozzáad egy JVM-beállítást, amely lehetővé teszi a JVM által használt CPU-k számának megadását:

-XX: ActiveProcessorCount = count

Három új JVM-opcióval bővült, amelyek lehetővé teszik a Docker konténerfelhasználók számára, hogy finomabb szabályozást nyerjenek a Java Heap számára felhasználandó rendszermemória mennyisége felett:

-XX: InitialRAMPercentage -XX: MaxRAMPercentage -XX: MinRAMPercentage

7. Gyökértanúsítványok

A cacerts kulcstár, amely eredetileg eddig üres volt, egy gyökértanúsítvány-készletet hivatott tartalmazni, amelyek segítségével bizalmat lehet teremteni a különféle biztonsági protokollok által használt tanúsítványláncokban.

Ennek eredményeként az olyan kritikus biztonsági összetevők, mint a TLS, alapértelmezés szerint nem működtek az OpenJDK buildjei alatt.

A Java 10 segítségével az Oracle nyílt forráskódú a gyökérigazolásokat az Oracle Java SE Root CA programjában annak érdekében, hogy az OpenJDK buildeket vonzóbbá tegye a fejlesztők számára, és csökkentse az ezen és az Oracle JDK buildek közötti különbségeket.

8. Értékcsökkenések és eltávolítások

8.1. Parancssori opciók és eszközök

Eszköz javah eltávolításra került a Java 10-ből, amely C fejléceket és forrásfájlokat generált, amelyekre szükség volt a natív módszerek megvalósításához - most, javac -h használható helyette.

politytool UI alapú eszköz volt a házirend fájlok létrehozásához és kezeléséhez. Ezt most eltávolítottuk. A felhasználó egyszerű szövegszerkesztőt használhat a művelet végrehajtásához.

Eltávolítva java -Xprofválasztási lehetőség. Az opciót a futó program profilozására és profiladatok szabványos kimenetre küldésére használták. A felhasználónak most használnia kell jmap eszköz helyett.

8.2. API-k

Az elavult java.security.acl csomagot forRemoval = true jelöléssel látták el, és a Java SE jövőbeli verziójában eltávolításra szorulnak. Ezt felváltotta java.biztonság.politika és a kapcsolódó osztályok.

Hasonlóképpen, a java.security. {Certificate, Identity, IdentityScope, Signer} API-k megjelölve forRemoval = true.

9. Időalapú kiadásverzió

A Java 10-től kezdve az Oracle áttér a Java időalapú kiadására. Ennek a következményei vannak:

  1. Félévente egy új Java kiadás. A 2018. márciusi kiadás JDK 10., a szeptemberi kiadás a JDK 11. stb. Ezeket funkciókiadásoknak nevezzük, és várhatóan legalább egy vagy két jelentős tulajdonságot tartalmaznak
  2. A funkció kiadásának támogatása csak hat hónapig tart, azaz a következő szolgáltatás kiadásáig
  3. A hosszú távú támogatási kiadást LTS-ként jelöljük meg. Az ilyen kiadások támogatása három évre szól
  4. A Java 11 LTS kiadás lesz

java -verzió most tartalmazza a GA dátumot, megkönnyítve annak azonosítását, hogy hány éves a kiadás:

$ java -verzió openjdk "10" verzió

10. Következtetés

Ebben a cikkben láttuk a Java 10 új funkcióit és változásait.

Szokás szerint a kódrészletek megtalálhatók a GitHubon.

« Korábbi Java 10 teljesítményjavítások