Java 10 nove značajke
• 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:
- 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
- Podrška za izdanje značajke trajat će samo šest mjeseci, tj. do sljedećeg izdanja značajke
- Izdanje o dugotrajnoj podršci označit će se kao LTS. Podrška za takvo izdanje bit će tri godine
- 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