Java 10 nove značajke

Ovaj je članak dio serije: • Java 10 LocalVariable Type-Inference

• Poboljšanja performansi Java 10

• Java 10 nove značajke (trenutni članak)

1. Uvod

JDK 10, koji je implementacija Jave SE 10, objavljen je 20. ožujka 2018.

U ovom ćemo članku pokriti i istražiti nove značajke i promjene uvedene u JDK 10.

2. Lokalno zaključivanje tipa varijable

Slijedite vezu za detaljni članak o ovoj značajci:

Učinak lokalnog varijabla Java 10

3. Neizmjenjive zbirke

Postoji nekoliko promjena povezanih s neizmjenjivim zbirkama u Javi 10.

3.1. kopija od()

java.util.Popis, java.util.Map i java.util.Set svaki je dobio novu statičku metodu copyOf (Zbirka).

Vraća neizmijenjivu kopiju datog Kolekcija:

@Test (očekuje se = UnsupportedOperationException.class) javna praznina kadaModifyCopyOfList_thenThrowsException () {Lista copyList = List.copyOf (someIntList); copyList.add (4); }

Svaki pokušaj modificiranja takve kolekcije rezultirao bi java.lang.UnsupportedOperationExceptionizuzetak tijekom izvođenja.

3.2. toUnmodifiable * ()

java.util.stream.Kolektori dobiti dodatne metode za prikupljanje a Stream u nemodificirane Popis, Karta ili Postavi:

@Test (očekuje se = UnsupportedOperationException.class) javna praznina whenModifyToUnmodifiableList_thenThrowsException () {Lista evenList = someIntList.stream () .filter (i -> i% 2 == 0) .collect (Collectors.toUnmodifiableList) evenList.add (4); }

Svaki pokušaj modificiranja takve kolekcije rezultirao bi java.lang.UnsupportedOperationExceptionizuzetak tijekom izvođenja.

4. Neobvezno * .orElseThrow ()

java.util.Izborno, java.util.OptionalDouble, java.util.O optionalInti java.util.IzbornoDugosvaka je dobila novu metodu iliElseThrow ()koja ne uzima nikakav argument i baca NoSuchElementExceptionako nije prisutna vrijednost:

@Test public void whenListContainsInteger_OrElseThrowReturnsInteger () {Integer firstEven = someIntList.stream () .filter (i -> i% 2 == 0) .findFirst () .orElseThrow (); je (firstEven) .equals (Integer.valueOf (2)); }

Sinonim je i sada je preferirana alternativa postojećem dobiti()metoda.

5. Poboljšanja izvedbe

Slijedite vezu za detaljni članak o ovoj značajci:

Poboljšanja performansi Java 10

6. Svijest o kontejneru

JVM-ovi su sada svjesni da se pokreću u Dockerovom spremniku i izdvojit će konfiguraciju specifičnu za spremnik, umjesto da pita sam operativni sustav - odnosi se na podatke poput broja CPU-a i ukupne memorije dodijeljene spremniku.

Međutim, ova je podrška dostupna samo za platforme zasnovane na Linuxu. Ova nova podrška omogućena je prema zadanim postavkama i može se onemogućiti u naredbenom retku pomoću JVM opcije:

-XX: -UseContainerSupport

Također, ova promjena dodaje JVM opciju koja pruža mogućnost određivanja broja CPU-a koje će JVM koristiti:

-XX: ActiveProcessorCount = count

Također, dodane su tri nove JVM opcije koje omogućuju korisnicima spremnika Docker da steknu precizniju kontrolu nad količinom sistemske memorije koja će se koristiti za Java Heap:

-XX: PočetniRAMPercentage -XX: MaxRAMPercentage -XX: MinRAMPercentage

7. Root certifikati

Pohrana ključeva cacerts, koja je do sada bila prazna, trebala bi sadržavati skup korijenskih certifikata koji se mogu koristiti za uspostavljanje povjerenja u lance certifikata koje koriste različiti sigurnosni protokoli.

Kao rezultat toga, kritične sigurnosne komponente kao što je TLS nisu radile prema zadanim postavkama u OpenJDK gradnjama.

S Javom 10, Oracle je otvorio izvorne certifikate u Oracleovom Java SE Root CA programu kako bi OpenJDK gradnje bile privlačnije programerima i smanjile razlike između tih gradnji i Oracle JDK gradnji.

8. Ukidanje i uklanjanje

8.1. Opcije i alati naredbenog retka

Alat javah je uklonjen s Jave 10 koja je generirala C zaglavlja i izvorne datoteke potrebne za implementaciju izvornih metoda - sada, javac -h može se koristiti umjesto toga.

alat politike bio je alat temeljen na korisničkom sučelju za stvaranje i upravljanje datotekama s pravilima. Ovo je sada uklonjeno. Za izvođenje ove operacije korisnik se može koristiti jednostavnim uređivačem teksta.

Uklonjeno java -Xprofopcija. Opcija je korištena za profiliranje pokrenutog programa i slanje podataka profiliranja na standardni izlaz. Korisnik bi sada trebao koristiti jmap alat umjesto toga.

8.2. Apis

Zastarjeli paket java.security.acl označen je zaRemoval = true i podložan je uklanjanju u budućoj verziji Java SE. Zamijenjen je s java.sigurnost.Politika i srodnih razreda.

Slično su označeni API-ji java.security. {Certificate, Identity, IdentityScope, Signer} forRemoval = true.

9. Verzija izdanja zasnovana na vremenu

Počevši od Jave 10, Oracle je prešao na vremensko izdanje Jave. To ima sljedeće implikacije:

  1. Svako šest mjeseci novo izdanje Java. Izdanje u ožujku 2018. je JDK 10, izdanje u rujnu 2018. JDK 11 i tako dalje. Oni se nazivaju izdanjima značajki i očekuje se da sadrže barem jednu ili dvije značajne značajke
  2. Podrška za izdanje značajke trajat će samo šest mjeseci, tj. do sljedećeg izdanja značajke
  3. Izdanje o dugotrajnoj podršci označit će se kao LTS. Podrška za takvo izdanje bit će tri godine
  4. Java 11 bit će LTS izdanje

java -verzija sadat će datum GA, olakšavajući prepoznavanje starosti izdanja:

$ java -verzija openjdk verzija "10" 2018-03-20 OpenJDK Runtime Environment 18.3 (gradnja 10 + 46) OpenJDK 64-bitni poslužitelj VM 18.3 (gradnja 10 + 46, mješoviti način)

10. Zaključak

U ovom smo članku vidjeli nove značajke i promjene koje je unijela Java 10.

Kao i obično, isječke koda možete pronaći na GitHubu.

« Prethodna poboljšanja performansi Java 10