Java 10 új funkciók
• 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:
- 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
- A funkció kiadásának támogatása csak hat hónapig tart, azaz a következő szolgáltatás kiadásáig
- 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
- 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