logo

Značajke Jave 8

Oracle je 18. ožujka 2014. objavio novu verziju Jave kao Java 8. Bilo je to revolucionarno izdanje platforme Jave za razvoj softvera. Uključuje različite nadogradnje Java programiranja, JVM, alate i biblioteke.

Poboljšanja programskog jezika Java 8

Java 8 nudi sljedeće značajke za Java programiranje:

  • Lambda izrazi,
  • Reference metoda,
  • Funkcionalna sučelja,
  • Stream API,
  • Zadane metode,
  • Base64 Encode Decode,
  • Statičke metode u sučelju,
  • Izborni razred,
  • Klasa kolekcionara,
  • Metoda ForEach(),
  • Rhino JavaScript Engine,
  • Paralelno sortiranje polja,
  • Upisivanje i ponavljanje komentara,
  • IO poboljšanja,
  • Poboljšanja istovremenosti,
  • JDBC poboljšanja itd.

Lambda izrazi

Lambda izraz nam pomaže napisati naš kod u funkcionalnom stilu. Omogućuje jasan i koncizan način implementacije SAM sučelja (Jedna apstraktna metoda) korištenjem izraza. Vrlo je koristan u knjižnici zbirki u kojoj pomaže ponavljati, filtrirati i izdvajati podatke.

Za više informacija i primjere: kliknite ovdje


Reference metoda

Referenca Java 8 metode koristi se za upućivanje na metodu funkcionalnog sučelja. To je kompaktan i jednostavan oblik lambda izraza. Svaki put kada koristite lambda izraz samo za referiranje metode, možete zamijeniti svoj lambda izraz referencom metode.

Za više informacija i primjere: kliknite ovdje


Funkcionalno sučelje

Sučelje koje sadrži samo jednu apstraktnu metodu poznato je kao funkcionalno sučelje. Može imati bilo koji broj zadanih i statičkih metoda. Također može deklarirati metode klase objekata.

Funkcionalna sučelja poznata su i kao sučelja jedne apstraktne metode (SAM sučelja).

Za više informacija i primjere: kliknite ovdje


Neobavezno

Java je predstavila novu klasu Optional u Javi 8. To je javna finalna klasa koja se koristi za rješavanje NullPointerException u Java aplikaciji. Moramo uvoziti java.util paket za korištenje ove klase. Pruža metode za provjeru prisutnosti vrijednosti za određenu varijablu.

Za više informacija i primjere: kliknite ovdje


za svakoga

Java nudi novu metodu forEach() za ponavljanje elemenata. Definirano je u sučeljima Iterable i Stream.

To je zadana metoda definirana u Iterable sučelju. Klase zbirke koje proširuju Iterable sučelje mogu koristiti forEach() metodu za ponavljanje elemenata.

Ova metoda uzima jedan parametar koji je funkcionalno sučelje. Dakle, možete proslijediti lambda izraz kao argument.

Za više informacija i primjere: kliknite ovdje


API za datum/vrijeme

Java je uvela novi API za datum i vrijeme od Jave 8. Paket java.time sadrži Java 8 klase datuma i vremena.

Za više informacija i primjere: kliknite ovdje


Zadane metode

Java pruža mogućnost stvaranja zadanih metoda unutar sučelja. Metode koje su definirane unutar sučelja i označene zadanom ključnom riječi poznate su kao zadane metode. Ove metode su neapstraktne metode i mogu imati tijelo metode.

Za više informacija i primjere: kliknite ovdje


Rhino JavaScript Engine

Nashorn je JavaScript motor. Koristi se za dinamičko izvršavanje JavaScript koda na JVM (Java Virtual Machine). Java pruža alat naredbenog retka itd koji se koristi za izvršavanje JavaScript koda.

JavaScript kôd možete izvršiti na dva načina:

  1. Korištenje jjs alata naredbenog retka i
  2. Ugradnjom u Java izvorni kod.

Za više informacija i primjere: kliknite ovdje


StringJoiner

Java je dodala novu završnu klasu StringJoiner u paketu java.util. Koristi se za konstruiranje niza znakova odvojenih graničnikom. Sada možete stvoriti niz dodavanjem graničnika kao što su zarez(,), crtica(-) itd.

što je hibernacija u Javi

Za više informacija i primjere: kliknite ovdje


Kolekcionari

Collectors je zadnja klasa koja proširuje klasu Object. Omogućuje operacije smanjivanja, kao što je gomilanje elemenata u zbirke, sažimanje elemenata prema različitim kriterijima itd.

Za više informacija i primjere: kliknite ovdje


Stream API

Paket Java 8 java.util.stream sastoji se od klasa, sučelja i enuma kako bi se omogućile operacije u funkcionalnom stilu na elementima. Izvodi lijeno izračunavanje. Dakle, izvršava se samo kada je potrebno.

Za više informacija i primjere: kliknite ovdje


Filtar toka

Java stream pruža metodu filter() za filtriranje elemenata toka na temelju zadanog predikata. Pretpostavimo da želite dobiti samo parne elemente svoje liste, to možete lako učiniti uz pomoć metode filter().

Ova metoda uzima predikat kao argument i vraća tok rezultirajućih elemenata.

Za više informacija i primjere: kliknite ovdje


Java Base64 kodiranje i dekodiranje

Java nudi klasu Base64 za enkripciju i dešifriranje. Morate uvesti klasu java.util.Base64 u svoju izvornu datoteku da biste koristili njezine metode.

Ova klasa nudi tri različita kodera i dekodera za šifriranje informacija na svakoj razini.

Za više informacija i primjere: kliknite ovdje


Java Parallel Array Sortiranje

Java pruža novu dodatnu značajku u klasi Arrays koja se koristi za paralelno sortiranje elemenata niza. Metoda parallelSort() dodana je klasi java.util.Arrays koja koristi JSR 166 Fork/Join zajednički skup paralelizma za pružanje sortiranja nizova. To je preopterećena metoda.

Za više informacija i primjere: kliknite ovdje


Sigurnosna poboljšanja Java 8

1) Dobavljač Java Secure Socket Extension (JSSE) omogućuje protokole Transport Layer Security (TLS) 1.1 i TLS 1.2 prema zadanim postavkama na strani klijenta.

2) Dodana je poboljšana metoda AccessController.doPrivileged koja omogućuje kodu da potvrdi podskup svojih povlastica, bez sprječavanja potpunog obilaženja hrpa radi provjere drugih dopuštenja.

3) Algoritmi Advanced Encryption Standard (AES) i Password-Based Encryption (PBE), kao što su PBEWithSHA256AndAES_128 i PBEWithSHA512AndAES_256, dodani su pružatelju usluga SunJCE.

4) Java Secure Socket Extension (SunJSSE) je prema zadanim postavkama omogućio proširenje indikacije imena poslužitelja (SNI) za klijentske aplikacije u JDK 7, a JDK 8 podržava SNI proširenje za poslužiteljske aplikacije. SNI ekstenzija je značajka koja proširuje SSL/TLS protokole kako bi ukazala na koji se naziv poslužitelja klijent pokušava spojiti tijekom rukovanja.

5) SunJSSE je poboljšan kako bi podržao algoritme autentificirane enkripcije s pridruženim podacima (AEAD). Dobavljač Java Cryptography Extension (SunJCE) poboljšan je tako da podržava implementaciju šifre AES/GCM/NoPadding kao i parametre algoritma Galois/Counter Mode (GCM).

6) Nova zastavica naredbe -importpassword dodana je uslužnom programu keytool. Koristi se za prihvaćanje lozinke i sigurno pohranjivanje kao tajni ključ. Klase kao što su java.security.DomainLoadStoreParameter i java.security.PKCS12Attribute dodane su za podršku DKS tipu pohrane ključeva.

7) U JDK 8, kriptografski algoritmi su poboljšani sa SHA-224 varijantom SHA-2 obitelji implementacija sažimanja poruka.

8) Poboljšana podrška za NSA Suite B kriptografiju koja uključuje:

  • OID registracija za NSA Suite B kriptografske algoritme
  • Podrška za 2048-bitno generiranje para ključeva DSA i dodatne algoritme potpisa za 2048-bitne DSA ključeve kao što su SHA224withDSA i SHA256withDSA.
  • Ukidanje ograničenja veličine ključa s 1024 na 2048 za Diffie-Hellmanov (DH) algoritam.

9) Klasa SecureRandom omogućuje generiranje kriptografski jakih nasumičnih brojeva koji se koriste za privatne ili javne ključeve, šifre i potpisane poruke. Metoda getInstanceStrong() uvedena je u JDK 8, koja vraća instancu najjačeg SecureRandoma. Trebalo bi ga koristiti kada trebate stvoriti RSA privatni i javni ključ. SecureRandom uključuje sljedeće promjene:

  • Uvedene su dvije nove implementacije za UNIX platforme, koje pružaju blokirajuće i neblokirajuće ponašanje.

10) Uključena je nova klasa PKIXRevocationChecker koja provjerava status opoziva certifikata pomoću PKIX algoritma. Podržava najbolju provjeru, provjeru certifikata krajnjeg entiteta i opcije specifične za mehanizam.

11) Standardi kriptografije javnog ključa 11 (PKCS) prošireni su tako da uključuju 64-bitnu podršku za Windows.

12) Dvije nove vrste rcache dodane su u Kerberos 5. Tip none znači da uopće nema rcachea, a tip dfl znači datotečni rcache u stilu DFL. Također, potključ koji je tražio prihvatitelj sada je podržan. Konfiguriraju se pomoću svojstava sustava sun.security.krb5.rcache i sun.security.krb5.acceptor.subkey.

13) U JDK 8, prijelaz protokola Kerberos 5 i ograničeno delegiranje podržani su unutar istog područja.

java if izjava

14) Java 8 je prema zadanim postavkama onemogućila slabu enkripciju. Vrste šifriranja Kerberos 5 povezane s DES-om nisu podržane prema zadanim postavkama. Ove vrste enkripcije mogu se omogućiti dodavanjem allow_weak_crypto=true u datoteci krb5.conf.

15) Možete postaviti naziv poslužitelja na null da biste označili nevezanog poslužitelja. To znači da klijent može zatražiti uslugu koristeći bilo koji naziv poslužitelja. Nakon uspostavljanja konteksta, poslužitelj može dohvatiti ime kao dogovoreno svojstvo s imenom ključa SASL.BOUND_SERVER_NAME.

16) Most Java izvornog sučelja (JNI) do izvorne Java generičke sigurnosne usluge (JGSS) sada je podržan na Mac OS X. Možete postaviti svojstvo sustava sun.security.jgss.native na true kako biste ga omogućili.

17) Novo svojstvo sustava, jdk.tls.ephemeralDHKeySize definirano je za prilagodbu veličina kratkotrajnih DH ključeva. Minimalna prihvatljiva veličina DH ključa je 1024 bita, osim za pakete šifri za izvoz ili naslijeđeni način (jdk.tls.ephemeralDHKeySize=legacy).

18) Dobavljač Java Secure Socket Extension (JSSE) prema zadanim postavkama poštuje klijentovu postavku paketa šifri. Međutim, ponašanje se može promijeniti tako da se poštuje preferenca paketa šifri poslužitelja pozivanjem SSLParameters.setUseCipherSuitesOrder(true) preko poslužitelja.


Poboljšanja Java 8 alata

1) Predstavljena je naredba jjs koja poziva Nashorn mehanizam ili u interaktivnom načinu rada ljuske ili za tumačenje skriptnih datoteka.

2) Java naredba može pokrenuti JavaFX aplikacije, pod uvjetom da je JavaFX aplikacija ispravno zapakirana.

3) Man stranica java naredbi (i nroff i HTML) potpuno je prerađena. Napredne opcije sada su podijeljene na Runtime, Compiler, Garbage Collection i Serviceability, prema području na koje utječu. Sada je opisano nekoliko prethodno nedostajućih opcija. Također postoji odjeljak za opcije koje su zastarjele ili uklonjene od prethodnog izdanja.

4) Novi jdeps alat za naredbeni redak omogućuje programeru da analizira datoteke klase kako bi odredio ovisnosti na razini paketa ili na razini klase.

5) Možete daljinski pristupiti dijagnostičkim naredbama, koje su prije bile dostupne samo lokalno putem alata jcmd. Daljinski pristup omogućen je korištenjem Java Management Extensions (JMX), tako da su dijagnostičke naredbe izložene MBean platformi registriranoj na poslužitelju MBean platforme. MBean je sučelje com.sun.management.DiagnosticCommandMBean.

6) Nova opcija -tsapolicyid uključena je u alat jarsigner koji vam omogućuje da zatražite potpisani vremenski žig od tijela za vremensko žigosanje i priložite ga potpisanoj JAR datoteci.

7) Uključena je nova metoda java.lang.reflect.Executable.getParameters koja vam omogućuje pristup nazivima formalnih parametara bilo koje metode ili konstruktora. Međutim, .class datoteke prema zadanim postavkama ne pohranjuju formalna imena parametara. Kako biste pohranili formalna imena parametara u određenu .class datoteku i tako omogućili Reflection API-ju da dohvati formalna imena parametara, prevedite izvornu datoteku s opcijom -parameters javac prevoditelja.

8) Pravila tipa za binarne usporedbe u Java Language Specification (JLS) Odjeljak 15.21 sada će javac ispravno provoditi.

9) U ovom izdanju, apt alat i njegov povezani API sadržani u paketu com.sun.mirror su uklonjeni.

Javadoc poboljšanja

U Javi SE 8, sljedeći novi API-ji dodani su Javadoc alatu.

  • Novi DocTree API predstavlja skener koji vam omogućuje pregled izvornog koda koji je predstavljen stablom apstraktne sintakse. Ovo proširuje API stabla prevoditelja kako bi omogućio strukturirani pristup sadržaju javadoc komentara.
  • Paket javax.tools sadrži klase i sučelja koja vam omogućuju da pozovete Javadoc alat izravno iz Java aplikacije, bez izvođenja novog procesa.
  • Odjeljak 'Sažetak metode' generirane dokumentacije klase ili sučelja je restrukturiran. Opisi metoda u ovom odjeljku grupirani su prema vrsti. Prema zadanim postavkama, sve metode su navedene. Možete kliknuti karticu da biste vidjeli metode određene vrste (statičke, instance, apstraktne, konkretne ili zastarjele, ako postoje u klasi ili sučelju).
  • Alat javadoc sada ima podršku za provjeru sadržaja javadoc komentara za probleme koji bi mogli dovesti do raznih problema, kao što su nevažeći HTML ili problemi s pristupačnošću, u datotekama koje generira javadoc. Značajka je omogućena prema zadanim postavkama, a također se može kontrolirati pomoću nove opcije -Xdoclint.

Pack200 poboljšanja

Format datoteke klase Java je ažuriran zbog JSR 292 koji podržava dinamički tipizirane jezike na Java platformi.

Pack200 mehanizam je ažuriran kako bi se osiguralo učinkovito komprimiranje datoteka klase Java SE 8. Sada može prepoznati stalne unose skupa i nove bajt-kodove koje je uveo JSR 292. Kao rezultat toga, komprimirane datoteke stvorene ovom verzijom alata pack200 neće biti kompatibilne sa starijim verzijama alata unpack200.


Java 8 I/O poboljšanja

U Javi 8 postoji nekoliko poboljšanja implementacije java.nio.charset.Charset i proširenog skupa znakova. Uključuje sljedeće:

  • Novi SelectorProvider koji može poboljšati performanse ili skalabilnost za poslužitelj. /dev/poll SelectorProvider i dalje je zadana vrijednost. Za korištenje mehanizma priključka događaja Solaris, pokrenite sa svojstvom sustava java.nio.channels.spi.Selector postavljenim na vrijednost sun.nio.ch.EventPortSelectorProvider.
  • Veličina /jre/lib/charsets.jar datoteke je smanjena.
  • Performanse su poboljšane za java.lang.String(byte[], ∗) konstruktor i java.lang.String.getBytes() metodu.

Java 8 mrežna poboljšanja

1) Dodana je nova klasa java.net.URLPermission. Predstavlja dopuštenje za pristup resursu definiranom danim URL-om.

2) Dodan je paket jdk.net koji sadrži opcije soketa specifične za platformu i mehanizam za postavljanje ovih opcija na svim standardnim tipovima soketa. Opcije utičnice definirane su u jdk.net.ExtendedSocketOptions.

3) U klasi HttpURLConnection, ako je instaliran sigurnosni upravitelj i ako se pozove metoda koja rezultira pokušajem otvaranja veze, pozivatelj mora posjedovati ili 'connect'SocketPermission za kombinaciju host/port odredišnog URL-a ili URLPermission koji dopušta ovaj zahtjev.

Ako je omogućeno automatsko preusmjeravanje, a ovaj zahtjev je preusmjeren na drugo odredište, pozivatelj također mora imati dozvolu za povezivanje s preusmjerenim hostom/URL-om.


Java 8 poboljšanja konkurentnosti

Paket java.util.concurrent dodao je dva nova sučelja i četiri nove klase.

Java.util.concurrent sučelja

Sučelje Opis
javno statičko sučelje CompletableFuture.AsynchronousCompletionTask To je marker sučelje koje se koristi za identifikaciju asinkronih zadataka koje proizvode asinkrone metode. Može biti korisno za nadzor, otklanjanje pogrešaka i praćenje asinkronih aktivnosti.
javno sučelje CompletionStage Stvara fazu mogućeg asinkronog izračunavanja, koja izvodi radnju ili izračunava vrijednost kada završi druga faza CompletionStage.

Java.util.concurrent klase

Klasa Opis
javna klasa CompletableFuture extends Object implementira Future, CompletionStage To je Budućnost koja se može eksplicitno dovršiti i može se koristiti kao CompletionStage, podržavajući ovisne funkcije i radnje koje se pokreću po njegovom dovršetku.
javna statička klasa ConcurrentHashMap.KeySetView extends Object implements Set, Serializable To je pogled na ConcurrentHashMap kao skup ključeva, u kojem se dodaci mogu opcionalno omogućiti preslikavanjem na zajedničku vrijednost.
javna apstraktna klasa CountedCompleter proširuje ForkJoinTask ForkJoinTask s radnjom završetka koja se izvodi kada se pokrene i nema preostalih radnji na čekanju.
javna klasa CompletionException proširuje RuntimeException Izbacuje iznimku kada se naiđe na pogrešku ili drugu iznimku tijekom dovršavanja rezultata ili zadatka.

Nove metode u klasi java.util.concurrent.ConcurrentHashMap

Klasa ConcurrentHashMap predstavlja nekoliko novih metoda u svom najnovijem izdanju. Uključuje razne metode forEach (forEach, forEachKey, forEachValue i forEachEntry), metode pretraživanja (search, searchKeys, searchValues ​​i searchEntries) i veliki broj metoda redukcije (reduce, reduceToDouble, reduceToLong itd.). Dodane su i druge razne metode (mappingCount i newKeySet).

Nove klase u java.util.concurrent.atomic

Najnovije izdanje uvodi skalabilnu, ažuriranu, varijabilnu podršku kroz mali skup novih klasa DoubleAccumulator, DoubleAdder, LongAccumulator i LongAdder. Interno koristi tehnike smanjenja sukoba koje pružaju velika poboljšanja propusnosti u usporedbi s Atomic varijablama.

Klasa Opis
javna klasa DoubleAccumulator extends Number implementira Serializable Koristi se za jednu ili više varijabli koje zajedno održavaju radnu dvostruku vrijednost ažuriranu pomoću dostavljene funkcije.
javna klasa DoubleAdder extends Number implementira Serializable Koristi se za jednu ili više varijabli koje zajedno održavaju inicijalno nultu dvostruku sumu.
javna klasa LongAccumulator extends Number implementira Serializable Koristi se za jednu ili više varijabli koje zajedno održavaju tekuću dugu vrijednost ažuriranu pomoću priložene funkcije.
javna klasa LongAdder extends Number implementira Serializable Koristi se za jednu ili više varijabli koje zajedno održavaju inicijalno nultu dugu sumu.

Nove metode u klasi java.util.concurrent.ForkJoinPool

Ova klasa je dodala dvije nove metode getCommonPoolParalleism() i commonPool(), koje vraćaju ciljanu razinu paralelizma zajedničkog skupa, odnosno instance zajedničkog bazena.

metoda Opis
javni statički ForkJoinPool commonPool() Vraća instancu zajedničkog bazena.
Javni statički int getCommonPoolParalleism() Vraća ciljanu razinu paralelizma zajedničkog bazena.

Nova klasa java.util.concurrent.locks.StampedLock

Dodana je nova klasa StampedLock koja se koristi za dodavanje zaključavanja temeljenog na mogućnostima s tri načina za kontrolu pristupa za čitanje/pisanje (pisanje, čitanje i optimistično čitanje). Ova klasa također podržava metode koje uvjetno pružaju pretvorbe u tri načina.

Klasa Opis
javna klasa StampedLock extends Object implementira Serializable Ova klasa predstavlja zaključavanje temeljeno na mogućnostima s tri načina za kontrolu pristupa za čitanje/pisanje.

Java API za XML obradu (JAXP) 1.6 poboljšanja

U Javi 8, Java API je dodan za XML obradu (JAXP) 1.6. Zahtijeva korištenje značajke učitavanja pružatelja usluga koju definira java.util.ServiceLoader za učitavanje usluga iz konfiguracijskih datoteka usluge.

Obrazloženje za to je omogućiti buduću modularizaciju Java SE platforme gdje se pružatelji usluga mogu implementirati sredstvima koja nisu JAR datoteke i možda bez konfiguracijskih datoteka usluge.


Poboljšanja Java virtualnog stroja

Provjera invokespecial instrukcija je pooštrena tako da se može pozvati samo metoda inicijalizacije instance u trenutnoj klasi ili njezinoj izravnoj superklasi.


Java Mission Control 5.3 uključena je u Javu 8

Java Mission Control (JMC) je napredni skup alata koji omogućuje učinkovitu i detaljnu analizu podataka i pruža napredno, nenametljivo praćenje i upravljanje Javom. JMC pruža odjeljke za uobičajena područja analize kao što su performanse koda, memorija i latencija.

Babel jezični paketi na japanskom i pojednostavljenom kineskom sada su uključeni prema zadanim postavkama u Java Mission Control koja je uključena u JDK 8.


Java 8 poboljšanja internacionalizacije

1) Unicode poboljšanja

JDK 8 uključuje podršku za Unicode 6.2.0. Sadrži sljedeće značajke.

  • 733 nova znaka uključujući znak turske lire.
  • 7 novih skripti:
    • Meroitski hijeroglifi
    • Meroitski kurziv
    • Sora Sompeng
    • Čakma
    • Sharada
    • Takri
    • Miao
  • 11 novih blokova: uključujući 7 blokova za nove gore navedene skripte i 4 bloka za sljedeće postojeće skripte:
  • Arapski prošireni-A
  • Sundanski dodatak
  • Meeting Meek Extensions
  • Arapski matematički abecedni simboli

Usvajanje Unicode CLDR podataka i svojstva sustava java.locale.providers

Konzorcij Unicode objavio je projekt Common Locale Data Repository (CLDR) za 'podršku svjetskim jezicima, s najvećim i najopsežnijim standardnim repozitorijem dostupnih podataka o lokalitetima.' CLDR postaje de facto standard za lokalne podatke. CLDR-ovi podaci o lokalnom standardu temeljeni na XML-u uključeni su u izdanje JDK 8, ali su prema zadanim postavkama onemogućeni.

Postoje četiri različita izvora za podatke o lokalizaciji:

  • CLDR predstavlja podatke o lokalizaciji koje pruža Unicode CLDR projekt.
  • HOST predstavlja trenutnu korisničku prilagodbu postavki temeljnog operativnog sustava. Radi samo s korisničkim zadanim jezikom, a prilagodljive postavke mogu varirati ovisno o OS-u, ali prvenstveno su podržani formati datuma, vremena, broja i valute.
  • SPI predstavlja usluge osjetljive na lokalizaciju implementirane u instaliranim SPI pružateljima usluga.
  • JRE predstavlja podatke o lokalizaciji koji su kompatibilni s prethodnim JRE izdanjima.

Da biste odabrali željeni izvor podataka o lokalizaciji, koristite svojstvo sustava java.locale.providers. navodeći izvore podataka po željenom redoslijedu. Na primjer: java.locale.providers=HOST,SPI,CLDR,JRE Zadano ponašanje je ekvivalentno sljedećoj postavci: java.locale.providers=JRE,SPI


Java 8 Novi kalendar i lokalni API-ji

JDK 8 uključuje dvije nove klase, nekoliko novih metoda i novu povratnu vrijednost za postojeću statičku metodu.

Dvije nove apstraktne klase za pružatelje usluga dodane su u paket java.util.spi.

Klasa Opis
javna apstraktna klasa CalendarDataProvider proširuje LocaleServiceProvider To je apstraktna klasa za pružatelje usluga koji daju parametre kalendara ovisne o lokalnom standardu.
javna apstraktna klasa CalendarNameProvider proširuje LocaleServiceProvider To je apstraktna klasa za pružatelje usluga koji pružaju lokalizirane prikaze nizova (imena za prikaz) vrijednosti polja kalendara.

Statička metoda sada može prepoznati Locale.UNICODE_LOCALE_EXTENSION za sustav numeriranja.

metoda Opis
public static final DecimalFormatSymbols getInstance(Locale locale) Koristi se za dobivanje instance DecimalFormatSymbols za navedenu lokalizaciju. Ova metoda omogućuje pristup instancama DecimalFormatSymbols za lokalizacije koje podržava samo Java runtime kao i za one koje podržavaju instalirane implementacije DecimalFormatSymbolsProvider. Izbacuje NullPointerException ako je lokalizacija null.

Dodane nove metode u API kalendara:

metoda Opis
javni booleov isSupportedLocale(lokalna oznaka) Vraća vrijednost true ako ovaj pružatelj usluga lokalne postavke podržava danu lokalizaciju. Zadana lokalizacija može sadržavati ekstenzije koje treba uzeti u obzir za određivanje podrške. Definirano je u klasi java.util.spi.LocaleServiceProvider
javni niz getCalendarType() Vraća vrstu kalendara ovog kalendara. Vrste kalendara definirane su specifikacijom Unicode Locale Data Markup Language (LDML). Definirano je u klasi java.util.Calendar.

Novi specifikatori stila dodani su za metode Calendar.getDisplayName i Calendar.getDisplayNames za određivanje formata naziva kalendara.


Specifikator Opis
public static final int SHORT_FORMAT To je specifikator stila za getDisplayName i getDisplayNames koji označava kratko ime koje se koristi za format.
public static final int LONG_FORMAT To je specifikator stila za getDisplayName i getDisplayNames koji označava dugo ime koje se koristi za format.
public static final int SHORT_STANDALONE To je specifikator stila za getDisplayName i getDisplayNames koji ukazuje na kratko ime koje se koristi neovisno, kao što je kratica mjeseca kao zaglavlja kalendara.
public static final int LONG_STANDALONE To je specifikator stila za getDisplayName i getDisplayNames koji označava dugo ime koje se koristi neovisno, kao što je naziv mjeseca kao zaglavlja kalendara.

Dvije nove metode lokalizacije za rad s (neobaveznim) ekstenzijama lokalizacije.

metoda Opis
javni booleov hasExtensions() Vraća true ako ova lokalizacija ima bilo kakva proširenja.
public Locale stripExtensions() Vraća kopiju ovog jezika bez ekstenzija. Ako ovaj lokalitet nema ekstenzije, ovaj lokalitet se sam vraća.

Dvije nove metode Locale.filter vraćaju popis instanci Locale koje odgovaraju navedenim kriterijima, kako je definirano u RFC 4647:

harald baldr
metoda Opis
filtar javnog statičkog popisa (List priorityList, Collection locales) Vraća popis odgovarajućih instanci lokalizacije pomoću mehanizma filtriranja definiranog u RFC 4647. Ovo je ekvivalent filter(List, Collection, FilteringMode) kada je način rada Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filter (List priorityList, Collection locales, Locale.FilteringMode mode) Vraća popis podudarnih instanci jezika koristeći mehanizam filtriranja definiran u RFC 4647.

Dvije nove metode Locale.filterTags vraćaju popis jezičnih oznaka koje odgovaraju navedenim kriterijima, kako je definirano u RFC 4647.

metoda Opis
public static List filterTags(List priorityList, Collection tags) Vraća popis podudarnih jezičnih oznaka pomoću osnovnog mehanizma filtriranja definiranog u RFC 4647. To je ekvivalentno filterTags(List, Collection, FilteringMode) kada je način rada Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags(List priorityList, Collection tags, Locale.FilteringMode mode) Vraća popis podudarnih jezičnih oznaka pomoću osnovnog mehanizma filtriranja definiranog u RFC 4647.

Dvije nove metode pretraživanja vraćaju oznaku lokalizacije ili jezika koja najbolje odgovara koristeći mehanizam traženja definiran u RFC 4647.

metoda Opis
public static Locale lookup (List priorityList, Collection locales) Vraća instancu jezika za jezičnu oznaku koja najbolje odgovara pomoću mehanizma pretraživanja definiranog u RFC 4647.
Javni statički String lookupTag(List priorityList,Oznake zbirke) Vraća jezičnu oznaku koja najbolje odgovara pomoću mehanizma pretraživanja definiranog u RFC 4647.

Ostala poboljšanja verzije Jave 8

Poboljšanja u JDK 8u5

1) Učestalost prikaza sigurnosnih upita za aplikaciju je smanjena.


Poboljšanja u JDK 8u11

1) Opcija za suzbijanje ponuda od sponzora kada je JRE instaliran ili ažuriran dostupna je na kartici Advanced na Javinoj upravljačkoj ploči.

2) Atribut Entry-Point može se uključiti u manifest JAR datoteke za identifikaciju jedne ili više klasa kao važeće ulazne točke za vašu RIA (Rich Internet aplikaciju).


Poboljšanja u JDK 8u20

1) Alat javafxpackager preimenovan je u javapackager. Ovaj je alat poboljšan novim argumentima za samostalne pakete aplikacija.

Sljedeća poboljšanja povezana su s java alatom:

  • Dodana je eksperimentalna opcija JIT prevoditelja povezana s ograničenom transakcijskom memorijom (RTM).
  • Dodano je nekoliko opcija povezanih s deduplikacijom nizova.
  • Dodano je nekoliko opcija povezanih s naprednim standardom šifriranja (AES).
  • Kombinacije opcija skupljanja smeća su zastarjele.

2) Vodič za podešavanje skupljanja smeća dodan je u Java HotSpot Virtual Machine. Opisuje skupljače smeća uključene u Java HotSpot VM i pomaže vam da odlučite koji sakupljač smeća može najbolje optimizirati izvedbu vaše aplikacije, posebno ako obrađuje velike količine podataka (više gigabajta), ima mnogo niti i visoke stope transakcija .


Poboljšanja u JDK 8u31

1) U ovom izdanju, SSLv3 protokol je uklonjen iz naprednih opcija Java Control Panela.


Poboljšanja u JDK 8u40

Java alat

1) -XX:+CheckEndorsedAndExtDirs je dodan jer su mehanizam nadjačavanja potvrđenih standarda (JDK-8065675) i mehanizam proširenja (JDK-8065702) zastarjeli. Opcija pomaže identificirati sve postojeće upotrebe ovih mehanizama i podržana je u JDK 7u80 i JDK 8u40.

2) Java Flight Recorder (JFR) nudi razne načine za otključavanje komercijalnih značajki i omogućavanje JFR-a tijekom izvođenja aplikacije.

Uključuje opcije java naredbenog retka kao što su jcmd dijagnostičke naredbe i kontrole grafičkog korisničkog sučelja (GUI) unutar Java Mission Control. Ova fleksibilnost omogućuje vam da pružite odgovarajuće opcije pri pokretanju ili kasnije komunicirate s JFR-om.

3) Opcija -XX:StartFlightRecording=parameter=value ima novi parametar, dumponexit=true, koji određuje treba li se generirati dump datoteka JFR podataka kada JVM završi na kontrolirani način.

4) Opcije povezane s ograničenom transakcijskom memorijom (RTM) više nisu eksperimentalne. Ove opcije uključuju -XX:RTMAbortRatio=omjer_prekida, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt i -XX:+UseRTMLocking.

5) U Javi 8 uvedeno je dijeljenje podataka klase aplikacije (AppCDS). AppCDS proširuje CDS (Class Data Sharing) kako bi omogućio da se klase iz standardnih direktorija proširenja i put klase aplikacije smjeste u zajedničku arhivu. Ovo je komercijalna značajka i više se ne smatra eksperimentalnom.

6) Nove opcije -XX:+ResourceManagement i -XX:ResourceManagementSampleInterval=vrijednost su dodane.

7) Dodane su dodatne informacije o velikim stranicama. Velike stranice, poznate i kao ogromne stranice, memorijske su stranice koje su znatno veće od standardne veličine memorijske stranice. Velike stranice optimiziraju procesor Translation-Lookaside Buffers. Linux opcije -XX:+UseHugeTLBFS, -XX:+UseSHM i -XX:+UseTransparentHugePages su dokumentirane.

8) Opcija -XX:ObjectAlignmentInBytes=alignment je dokumentirana.

JJS alat

1) Dodana je opcija --optimistic-types=[true|false]. Omogućuje ili onemogućuje pretpostavke optimističnog tipa s deoptimizirajućom rekompilacijom.

2) Opcija --language=[es5] dodana je jjs alatu. Određuje verziju jezika ECMAScript.

Javapackager alat

1) Dostupni su novi argumenti za OS X pakete. Argument mac.CFBundleVersion identificira interni broj verzije koji će se koristiti.

2) Argument mac.dmg.simple označava jesu li koraci prilagodbe DMG-a koji ovise o izvršavanju AppleScript koda preskočeni.

Alat Jcmd

Alat Jcmd koristi se za dinamičku interakciju s Java Flight Recorderom (JFR). Možete ga koristiti za otključavanje komercijalnih značajki, omogućavanje/pokretanje/zaustavljanje snimanja leta i dobivanje raznih statusnih poruka od sustava.

Jstat alat

Alat jstat je ažuriran informacijama o komprimiranom prostoru klase koji je poseban dio metaprostora.

Virtualni stroj

Značajka Scalable Native Memory Tracking HotSpot VM pomaže u dijagnosticiranju curenja memorije VM-a i razjašnjava korisnike kada curenje memorije nije u VM-u. Native Memory Tracker može se pokrenuti bez samoisključivanja na velikim sustavima i bez značajnog utjecaja na performanse izvan onoga što se smatra prihvatljivim za male programe.