logo

Funkcije Java 8

Oracle je 18. marca 2014 izdal novo različico Jave kot Java 8. To je bila revolucionarna izdaja platforme Java za razvoj programske opreme. Vključuje različne nadgradnje programiranja Java, JVM, orodij in knjižnic.

Izboljšave programskega jezika Java 8

Java 8 ponuja naslednje funkcije za programiranje Java:

  • Lambda izrazi,
  • Reference metod,
  • Funkcionalni vmesniki,
  • Stream API,
  • Privzete metode,
  • Base64 Encode Decode,
  • Statične metode v vmesniku,
  • Izbirni pouk,
  • Razred zbirateljev,
  • metoda ForEach(),
  • Rhino JavaScript Engine,
  • vzporedno razvrščanje nizov,
  • Tipkanje in ponavljanje opomb,
  • Izboljšave IO,
  • Izboljšave sočasnosti,
  • Izboljšave JDBC itd.

Lambda izrazi

Lambda izraz nam pomaga napisati kodo v funkcionalnem slogu. Zagotavlja jasen in jedrnat način za implementacijo vmesnika SAM (enotna abstraktna metoda) z uporabo izraza. Zelo uporaben je v knjižnici zbirk, kjer pomaga ponavljati, filtrirati in ekstrahirati podatke.

Za več informacij in primere: Klikni tukaj


Reference metod

Referenca metode Java 8 se uporablja za sklicevanje na metodo funkcionalnega vmesnika. Je kompaktna in enostavna oblika lambda izraza. Vsakič, ko uporabljate lambda izraz samo za sklicevanje na metodo, lahko svoj lambda izraz zamenjate s sklicem na metodo.

Za več informacij in primere: Klikni tukaj


Funkcionalni vmesnik

Vmesnik, ki vsebuje samo eno abstraktno metodo, je znan kot funkcionalni vmesnik. Ima lahko poljubno število privzetih in statičnih metod. Lahko tudi deklarira metode objektnega razreda.

Funkcionalni vmesniki so znani tudi kot vmesniki ene abstraktne metode (SAM vmesniki).

Za več informacij in primere: Klikni tukaj


Neobvezno

Java je predstavila nov razred Optional v Javi 8. To je javni končni razred, ki se uporablja za obravnavo NullPointerException v aplikaciji Java. Moramo uvoziti java.util paket za uporabo tega razreda. Ponuja metode za preverjanje prisotnosti vrednosti za določeno spremenljivko.

Za več informacij in primere: Klikni tukaj


za vsakogar

Java ponuja novo metodo forEach() za ponavljanje elementov. Definiran je v vmesnikih Iterable in Stream.

Je privzeta metoda, definirana v vmesniku Iterable. Zbirni razredi, ki razširjajo vmesnik Iterable, lahko uporabljajo metodo forEach() za ponavljanje elementov.

Ta metoda ima en sam parameter, ki je funkcionalni vmesnik. Torej lahko posredujete lambda izraz kot argument.

Za več informacij in primere: Klikni tukaj


API za datum/čas

Java je od Jave 8 uvedla nov API za datum in čas. Paket java.time vsebuje razrede datuma in časa Java 8.

Za več informacij in primere: Klikni tukaj


Privzete metode

Java omogoča ustvarjanje privzetih metod znotraj vmesnika. Metode, ki so definirane znotraj vmesnika in označene s privzeto ključno besedo, so znane kot privzete metode. Te metode so neabstraktne metode in imajo lahko telo metode.

Za več informacij in primere: kliknite tukaj


Rhino JavaScript Engine

Nashorn je motor JavaScript. Uporablja se za dinamično izvajanje kode JavaScript v JVM (Java Virtual Machine). Java nudi orodje ukazne vrstice itd ki se uporablja za izvajanje kode JavaScript.

Kodo JavaScript lahko izvedete na dva načina:

  1. Z uporabo orodja ukazne vrstice jjs in
  2. Z vdelavo v izvorno kodo Jave.

Za več informacij in primere: kliknite tukaj


StringJoiner

Java je v paket java.util dodala nov končni razred StringJoiner. Uporablja se za sestavo zaporedja znakov, ločenih z ločilom. Zdaj lahko ustvarite niz tako, da podate ločila, kot so vejica(,), vezaj(-) itd.

če parafraziram Rudyarda Kiplinga

Za več informacij in primere: kliknite tukaj


Zbiratelji

Collectors je zadnji razred, ki razširja razred Object. Omogoča operacije zmanjševanja, kot je kopičenje elementov v zbirke, seštevanje elementov po različnih kriterijih itd.

Za več informacij in primere: Klikni tukaj


Stream API

Paket java.util.stream Java 8 je sestavljen iz razredov, vmesnikov in enum, ki omogoča operacije v funkcionalnem slogu na elementih. Izvaja leno računanje. Torej se izvaja le, ko je to potrebno.

Za več informacij in primere: Klikni tukaj


Filter toka

Tok Java ponuja metodo filter() za filtriranje elementov toka na podlagi podanega predikata. Recimo, da želite pridobiti samo sode elemente svojega seznama, to lahko preprosto storite s pomočjo metode filter().

Ta metoda vzame predikat kot argument in vrne tok rezultatov elementov.

Za več informacij in primere: Klikni tukaj


Kodiranje in dekodiranje Java Base64

Java nudi razred Base64 za šifriranje in dešifriranje. Za uporabo njegovih metod morate v izvorno datoteko uvoziti razred java.util.Base64.

Ta razred ponuja tri različne kodirnike in dekodirnike za šifriranje informacij na vsaki ravni.

Za več informacij in primere: Klikni tukaj


Java Parallel Array Sorting

Java nudi novo dodatno funkcijo v razredu Arrays, ki se uporablja za vzporedno razvrščanje elementov polja. Metoda parallelSort() je bila dodana razredu java.util.Arrays, ki uporablja skupno zbirko paralelizma Fork/Join JSR 166 za zagotavljanje razvrščanja nizov. To je preobremenjena metoda.

Za več informacij in primere: kliknite tukaj


Izboljšave varnosti Java 8

1) Ponudnik Java Secure Socket Extension (JSSE) privzeto omogoča protokola Transport Layer Security (TLS) 1.1 in TLS 1.2 na strani odjemalca.

2) Dodana je bila izboljšana metoda AccessController.doPrivileged, ki kodi omogoča, da uveljavlja podnabor svojih privilegijev, ne da bi preprečila popolno prečkanje sklada za preverjanje drugih dovoljenj.

3) Ponudniku SunJCE so bili dodani napredni standard šifriranja (AES) in algoritmi šifriranja na podlagi gesla (PBE), kot sta PBEWithSHA256AndAES_128 in PBEWithSHA512AndAES_256.

4) Java Secure Socket Extension (SunJSSE) je privzeto omogočila razširitev Server Name Indication (SNI) za odjemalske aplikacije v JDK 7 in JDK 8 podpira razširitev SNI za strežniške aplikacije. Razširitev SNI je funkcija, ki razširja protokole SSL/TLS, da pokaže, s katerim imenom strežnika se odjemalec poskuša povezati med rokovanjem.

5) SunJSSE je izboljšan za podporo algoritmov za overjeno šifriranje s povezanimi podatki (AEAD). Ponudnik Java Cryptography Extension (SunJCE) je izboljšan tako, da podpira implementacijo šifre AES/GCM/NoPadding kot tudi parametre algoritma Galois/Counter Mode (GCM).

6) Nova ukazna zastavica -importpassword je dodana pripomočku keytool. Uporablja se za sprejem gesla in njegovo varno shranjevanje kot skrivni ključ. Razredi, kot sta java.security.DomainLoadStoreParameter in java.security.PKCS12Attribute, so dodani za podporo tipa shrambe ključev DKS.

7) V JDK 8 so bili kriptografski algoritmi izboljšani z različico SHA-224 družine implementacij prebave sporočil SHA-2.

8) Izboljšana podpora za kriptografijo NSA Suite B, ki vključuje:

  • Registracija OID za kriptografske algoritme NSA Suite B
  • Podpora za generiranje parov ključev 2048-bitnega DSA in dodatne algoritme za podpisovanje za 2048-bitne ključe DSA, kot sta SHA224withDSA in SHA256withDSA.
  • Odprava omejitve velikosti ključa s 1024 na 2048 za algoritem Diffie-Hellman (DH).

9) Razred SecureRandom zagotavlja generiranje kriptografsko močnih naključnih števil, ki se uporabljajo za zasebne ali javne ključe, šifre in podpisana sporočila. Metoda getInstanceStrong() je bila uvedena v JDK 8, ki vrne primerek najmočnejšega SecureRandom. Uporabite ga, ko morate ustvariti zasebni in javni ključ RSA. SecureRandom vključuje naslednje druge spremembe:

  • Za platforme UNIX sta bili uvedeni dve novi izvedbi, ki zagotavljata blokirajoče in neblokirno vedenje.

10) Vključen je nov razred PKIXRevocationChecker, ki preverja status preklica potrdil z algoritmom PKIX. Podpira preverjanje najboljšega napora, preverjanje potrdila končne entitete in možnosti, specifične za mehanizem.

11) Standardi kriptografije javnih ključev 11 (PKCS) so bili razširjeni tako, da vključujejo 64-bitne podpore za Windows.

12) Dve novi vrsti rcache sta dodani v Kerberos 5. Tip none pomeni, da rcache sploh ni, tip dfl pa pomeni rcache v slogu datoteke DFL. Prav tako je zdaj podprt podključ, ki ga je zahteval sprejemnik. Konfigurirani so z uporabo sistemskih lastnosti sun.security.krb5.rcache in sun.security.krb5.acceptor.subkey.

13) V JDK 8 sta prehod protokola Kerberos 5 in omejeno delegiranje podprta znotraj istega področja.

14) Java 8 ima privzeto onemogočeno šibko šifriranje. Vrste šifriranja Kerberos 5, povezane z DES, privzeto niso podprte. Te vrste šifriranja je mogoče omogočiti z dodajanjem allow_weak_crypto=true v datoteko krb5.conf.

15) Ime strežnika lahko nastavite na ničelno, da označite nevezan strežnik. To pomeni, da lahko stranka zahteva storitev s katerim koli imenom strežnika. Ko je kontekst vzpostavljen, lahko strežnik pridobi ime kot dogovorjeno lastnost z imenom ključa SASL.BOUND_SERVER_NAME.

16) Most Java Native Interface (JNI) do izvorne Java Generic Security Service (JGSS) je zdaj podprt v Mac OS X. Sistemsko lastnost sun.security.jgss.native lahko nastavite na true, da jo omogočite.

17) Nova sistemska lastnost, jdk.tls.ephemeralDHKeySize, je definirana za prilagajanje velikosti kratkotrajnih ključev DH. Najmanjša sprejemljiva velikost ključa DH je 1024 bitov, razen za pakete šifre, ki jih je mogoče izvoziti, ali starejši način (jdk.tls.ephemeralDHKeySize=legacy).

18) Ponudnik Java Secure Socket Extension (JSSE) privzeto upošteva odjemalčeve nastavitve šifrirne zbirke. Vendar pa je mogoče vedenje spremeniti tako, da se upoštevajo nastavitve šifrirne zbirke strežnika, tako da prek strežnika pokličete SSLParameters.setUseCipherSuitesOrder(true).


Izboljšave orodij Java 8

1) Predstavljen je ukaz jjs, ki prikliče mehanizem Nashorn v interaktivnem načinu lupine ali za interpretacijo skriptnih datotek.

2) Ukaz java lahko zažene aplikacije JavaFX, če je aplikacija JavaFX pravilno zapakirana.

3) Stran z navodili za ukaze Java (tako nroff kot HTML) je bila popolnoma predelana. Napredne možnosti so zdaj razdeljene na Runtime, Compiler, Garbage Collection in Serviceability glede na področje, na katerega vplivajo. Zdaj je opisanih več prej manjkajočih možnosti. Obstaja tudi razdelek za možnosti, ki so bile opuščene ali odstranjene od prejšnje izdaje.

4) Novo orodje ukazne vrstice jdeps omogoča razvijalcu analizo datotek razreda, da določi odvisnosti na ravni paketa ali ravni razreda.

5) Na daljavo lahko dostopate do diagnostičnih ukazov, ki so bili prej dostopni samo lokalno prek orodja jcmd. Oddaljeni dostop je zagotovljen z uporabo razširitev upravljanja Java (JMX), tako da so diagnostični ukazi izpostavljeni platformi MBean, registrirani na platformi MBean strežnik. MBean je vmesnik com.sun.management.DiagnosticCommandMBean.

6) Nova možnost -tsapolicyid je vključena v orodje jarsigner, ki vam omogoča, da zahtevate podpisan časovni žig od organa za časovno žigosanje in ga priložite podpisani datoteki JAR.

7) Vključena je nova metoda java.lang.reflect.Executable.getParameters, ki vam omogoča dostop do imen formalnih parametrov katere koli metode ali konstruktorja. Vendar datoteke .class privzeto ne shranjujejo formalnih imen parametrov. Če želite shraniti formalna imena parametrov v določeno datoteko .class in tako omogočiti API-ju Reflection, da pridobi formalna imena parametrov, prevedite izvorno datoteko z možnostjo -parameters prevajalnika javac.

8) Pravila tipa za binarne primerjave v razdelku 15.21 specifikacije jezika Java (JLS) bo zdaj pravilno uveljavljal javac.

9) V tej izdaji sta bila odstranjena orodje apt in z njim povezan API, vsebovan v paketu com.sun.mirror.

Izboljšave Javadoc

V Javi SE 8 so bili orodju Javadoc dodani naslednji novi API-ji.

  • Nov API DocTree uvaja skener, ki vam omogoča pregledovanje izvorne kode, ki jo predstavlja drevo abstraktne sintakse. To razširi API drevesa prevajalnika za zagotavljanje strukturiranega dostopa do vsebine komentarjev javadoc.
  • Paket javax.tools vsebuje razrede in vmesnike, ki vam omogočajo, da prikličete orodje Javadoc neposredno iz aplikacije Java, brez izvajanja novega procesa.
  • Razdelek 'Povzetek metode' ustvarjene dokumentacije razreda ali vmesnika je bil prestrukturiran. Opisi metod v tem razdelku so razvrščeni glede na vrsto. Privzeto so navedene vse metode. Lahko kliknete zavihek, da si ogledate metode določene vrste (statične, instančne, abstraktne, konkretne ali zastarele, če obstajajo v razredu ali vmesniku).
  • Orodje javadoc ima zdaj podporo za preverjanje vsebine komentarjev javadoc za težave, ki bi lahko povzročile različne težave, kot je neveljaven HTML ali težave z dostopnostjo, v datotekah, ki jih ustvari javadoc. Funkcija je privzeto omogočena in jo lahko nadzirate tudi z novo možnostjo -Xdoclint.

Izboljšave Pack200

Format datoteke razreda Java je bil posodobljen zaradi JSR 292, ki podpira dinamično vnesene jezike na platformi Java.

Motor Pack200 je bil posodobljen, da zagotovi učinkovito stiskanje datotek razreda Java SE 8. Zdaj lahko prepozna stalne vnose v bazen in nove bajtne kode, ki jih je uvedel JSR 292. Posledično stisnjene datoteke, ustvarjene s to različico orodja pack200, ne bodo združljive s starejšimi različicami orodja unpack200.


Izboljšave V/I Java 8

V Javi 8 obstaja več izboljšav izvedbe java.nio.charset.Charset in razširjenega nabora znakov. Vključuje naslednje:

  • Nov SelectorProvider, ki lahko izboljša zmogljivost ali razširljivost strežnika. /dev/poll SelectorProvider je še naprej privzeti. Če želite uporabiti mehanizem vrat za dogodke Solaris, zaženite s sistemsko lastnostjo java.nio.channels.spi.Selector, nastavljeno na vrednost sun.nio.ch.EventPortSelectorProvider.
  • Velikost datoteke /jre/lib/charsets.jar je zmanjšana.
  • Zmogljivost je bila izboljšana za konstruktor java.lang.String(byte[], ∗) in metodo java.lang.String.getBytes().

Omrežne izboljšave Java 8

1) Dodan je bil nov razred java.net.URLPermission. Predstavlja dovoljenje za dostop do vira, ki ga določa dani URL.

2) Dodan je bil paket jdk.net, ki vsebuje možnosti vtičnic, specifičnih za platformo, in mehanizem za nastavitev teh možnosti na vseh standardnih vrstah vtičnic. Možnosti vtičnice so definirane v jdk.net.ExtendedSocketOptions.

3) V razredu HttpURLConnection, če je nameščen upravitelj varnosti in če je poklicana metoda, ki povzroči poskus odpiranja povezave, mora klicatelj imeti dovoljenje 'connect'SocketPermission za kombinacijo gostitelj/vrata ciljnega URL-ja ali URLPermission, ki dovoljuje to zahtevo.

Če je omogočeno samodejno preusmerjanje in je ta zahteva preusmerjena na drug cilj, mora imeti klicatelj tudi dovoljenje za povezavo s preusmerjenim gostiteljem/URL-jem.


Izboljšave sočasnosti Java 8

Paket java.util.concurrent je dodal dva nova vmesnika in štiri nove razrede.

Java.util.concurrent vmesniki

Vmesnik Opis
javni statični vmesnik CompletableFuture.AsynchronousCompletionTask Je označevalni vmesnik, ki se uporablja za identifikacijo asinhronih nalog, ki jih ustvarijo asinhrone metode. Morda je uporaben za spremljanje, odpravljanje napak in sledenje asinhronim dejavnostim.
javni vmesnik CompletionStage Ustvari stopnjo po možnosti asinhronega izračuna, ki izvede dejanje ali izračuna vrednost, ko se zaključi druga CompletionStage.

Java.util.concurrent razredi

Razred Opis
javni razred CompletableFuture extends Object izvaja Future, CompletionStage To je prihodnost, ki jo je mogoče eksplicitno dokončati in jo je mogoče uporabiti kot stopnjo dokončanja, ki podpira odvisne funkcije in dejanja, ki se sprožijo po njenem zaključku.
javni statični razred ConcurrentHashMap.KeySetView razširja Object izvaja Set, Serializable To je pogled na ConcurrentHashMap kot nabor ključev, v katerem je mogoče dodatke po želji omogočiti s preslikavo v skupno vrednost.
javni abstraktni razred CountedCompleter razširja ForkJoinTask ForkJoinTask z zaključnim dejanjem, ki se izvede ob sprožitvi in ​​ni preostalih čakajočih dejanj.
javni razred CompletionException razširja RuntimeException Vrže izjemo, ko med dokončanjem rezultata ali opravila naleti na napako ali drugo izjemo.

Nove metode v razredu java.util.concurrent.ConcurrentHashMap

Razred ConcurrentHashMap v svoji zadnji izdaji uvaja več novih metod. Vključuje različne metode forEach (forEach, forEachKey, forEachValue in forEachEntry), iskalne metode (search, searchKeys, searchValues ​​in searchEntries) in veliko število metod redukcije (reduce, reduceToDouble, reduceToLong itd.). Dodane so bile tudi druge različne metode (mappingCount in newKeySet).

Novi razredi v java.util.concurrent.atomic

Najnovejša izdaja uvaja razširljivo podporo spremenljivk, ki jo je mogoče posodobiti, prek majhnega nabora novih razredov DoubleAccumulator, DoubleAdder, LongAccumulator in LongAdder. Interno uporablja tehnike zmanjševanja sporov, ki zagotavljajo ogromne izboljšave prepustnosti v primerjavi s spremenljivkami Atomic.

namestite maven
Razred Opis
javni razred DoubleAccumulator razširi Number implementira Serializable Uporablja se za eno ali več spremenljivk, ki skupaj vzdržujejo tekočo dvojno vrednost, posodobljeno s pomočjo priložene funkcije.
javni razred DoubleAdder razširi Number izvaja Serializable Uporablja se za eno ali več spremenljivk, ki skupaj ohranjajo začetno dvojno vsoto nič.
javni razred LongAccumulator razširi Number implementira Serializable Uporablja se za eno ali več spremenljivk, ki skupaj vzdržujejo tekočo dolgo vrednost, posodobljeno s priloženo funkcijo.
javni razred LongAdder extends Number izvaja Serializable Uporablja se za eno ali več spremenljivk, ki skupaj vzdržujejo začetno dolgo vsoto nič.

Nove metode v razredu java.util.concurrent.ForkJoinPool

Ta razred je dodal dve novi metodi getCommonPoolParallelism() in commonPool(), ki vrneta ciljno raven vzporednosti skupnega bazena oziroma primerka skupnega bazena.

Metoda Opis
javni statični ForkJoinPool commonPool() Vrne primer skupnega bazena.
Javni statični int getCommonPoolParallelism() Vrne ciljno raven vzporednosti skupnega bazena.

Nov razred java.util.concurrent.locks.StampedLock

Dodan je nov razred StampedLock, ki se uporablja za dodajanje zaklepanja na podlagi zmogljivosti s tremi načini za nadzor dostopa za branje/pisanje (pisanje, branje in optimistično branje). Ta razred podpira tudi metode, ki pogojno zagotavljajo pretvorbe v treh načinih.

Razred Opis
javni razred StampedLock razširja Object implementira Serializable Ta razred predstavlja zaklepanje na podlagi zmogljivosti s tremi načini za nadzor dostopa za branje/pisanje.

Java API za obdelavo XML (JAXP) 1.6 Izboljšave

V Javi 8 je Java API dodan za obdelavo XML (JAXP) 1.6. Za nalaganje storitev iz konfiguracijskih datotek storitev zahteva uporabo pripomočka za nalaganje ponudnika storitev, ki ga definira java.util.ServiceLoader.

Utemeljitev za to je omogočiti prihodnjo modularizacijo platforme Java SE, kjer bodo ponudniki storitev lahko nameščeni s sredstvi, ki niso datoteke JAR in morda brez konfiguracijskih datotek storitve.


Izboljšave Java Virtual Machine

Preverjanje invokespecial ukazov je bilo poostreno, tako da je mogoče priklicati samo metodo inicializacije primerka v trenutnem razredu ali njegovem neposrednem nadrazredu.


Java Mission Control 5.3 je vključena v Javo 8

Java Mission Control (JMC) je napreden nabor orodij, ki omogoča učinkovito in podrobno analizo podatkov ter zagotavlja napredno, nevsiljivo spremljanje in upravljanje Java. JMC nudi razdelke za pogosta področja analize, kot so zmogljivost kode, pomnilnik in zakasnitev.

Jezikovni paketi Babel v japonščini in poenostavljeni kitajščini so zdaj privzeto vključeni v Java Mission Control, ki je vključen v JDK 8.


Izboljšave internacionalizacije Java 8

1) Izboljšave Unicode

JDK 8 vključuje podporo za Unicode 6.2.0. Vsebuje naslednje funkcije.

  • 733 novih znakov, vključno z znakom za turško liro.
  • 7 novih skriptov:
    • Meroitski hieroglifi
    • Meroitski kurziv
    • Sora Sompeng
    • Čakma
    • Sharada
    • Takri
    • Miao
  • 11 novih blokov: vključno s 7 bloki za zgoraj navedene nove skripte in 4 bloki za naslednje obstoječe skripte:
  • Arabski razširjeni-A
  • Sundanski dodatek
  • Meeting Extensions
  • Arabski matematični abecedni simboli

Sprejetje podatkov Unicode CLDR in sistemske lastnosti java.locale.providers

Konzorcij Unicode je izdal projekt Common Locale Data Repository (CLDR) za 'podporo svetovnim jezikom z največjim in najobsežnejšim standardnim repozitorijem podatkov o področnih nastavitvah, ki so na voljo.' CLDR postaja de facto standard za področne podatke. Lokalni podatki CLDR, ki temeljijo na XML, so bili vključeni v izdajo JDK 8, vendar so privzeto onemogočeni.

Obstajajo štirje različni viri za lokalne podatke:

  • CLDR predstavlja področne podatke, ki jih zagotavlja projekt Unicode CLDR.
  • HOST predstavlja prilagoditev trenutnega uporabnika nastavitev osnovnega operacijskega sistema. Deluje samo z uporabniškimi privzetimi lokalnimi nastavitvami in prilagodljive nastavitve se lahko razlikujejo glede na operacijski sistem, vendar so podprti predvsem formati datuma, časa, števila in valute.
  • SPI predstavlja storitve, občutljive na področne nastavitve, implementirane v nameščenih ponudnikih SPI.
  • JRE predstavlja področne podatke, ki so združljivi s prejšnjimi izdajami JRE.

Če želite izbrati želeni področni izvor podatkov, uporabite sistemsko lastnost java.locale.providers. navaja vire podatkov v želenem vrstnem redu. Na primer: java.locale.providers=HOST,SPI,CLDR,JRE Privzeto vedenje je enakovredno naslednji nastavitvi: java.locale.providers=JRE,SPI


Java 8 Novi koledar in lokalni API-ji

JDK 8 vključuje dva nova razreda, več novih metod in novo povratno vrednost za obstoječo statično metodo.

V paket java.util.spi sta dodana dva nova abstraktna razreda za ponudnike storitev.

Razred Opis
javni abstraktni razred CalendarDataProvider razširja LocaleServiceProvider Je abstrakten razred za ponudnike storitev, ki zagotavljajo parametre koledarja, odvisne od področne nastavitve.
javni abstraktni razred CalendarNameProvider razširja LocaleServiceProvider To je abstraktni razred za ponudnike storitev, ki zagotavljajo lokalizirane predstavitve nizov (prikazna imena) vrednosti polj koledarja.

Statična metoda lahko zdaj prepozna Locale.UNICODE_LOCALE_EXTENSION za sistem številčenja.

Metoda Opis
public static final DecimalFormatSymbols getInstance(Locale locale) Uporablja se za pridobitev primerka DecimalFormatSymbols za podane področne nastavitve. Ta metoda omogoča dostop do primerkov DecimalFormatSymbols za lokalne nastavitve, ki jih podpira samo izvajalno okolje Jave, kot tudi za tiste, ki jih podpirajo nameščene implementacije DecimalFormatSymbolsProvider. Vrže NullPointerException, če je področna nastavitev nič.

Dodane nove metode v API-ju koledarja:

siva koda
Metoda Opis
javna logična vrednost isSupportedLocale(lokalne nastavitve) Vrne true, če ta ponudnik področnih storitev podpira dano področno nastavitev. Dane področne nastavitve lahko vsebujejo razširitve, ki jih je treba upoštevati pri določanju podpore. Definirano je v razredu java.util.spi.LocaleServiceProvider
javni niz getCalendarType() Vrne vrsto koledarja tega koledarja. Vrste koledarjev so določene s specifikacijo Unicode Locale Data Markup Language (LDML). Definiran je v razredu java.util.Calendar.

Dodani so novi specifikatorji sloga za metode Calendar.getDisplayName in Calendar.getDisplayNames za določitev oblike imena koledarja.


Specifikator Opis
public static final int SHORT_FORMAT Je specifikator sloga za getDisplayName in getDisplayNames, ki označuje kratko ime, uporabljeno za format.
javni statični končni int LONG_FORMAT Je specifikator sloga za getDisplayName in getDisplayNames, ki označuje dolgo ime, uporabljeno za format.
javni statični končni int SHORT_STANDALONE Je specifikator sloga za getDisplayName in getDisplayNames, ki označuje kratko ime, ki se uporablja neodvisno, kot je okrajšava meseca kot glave koledarja.
javni statični končni int LONG_STANDALONE Je specifikator sloga za getDisplayName in getDisplayNames, ki označuje dolgo ime, uporabljeno neodvisno, kot je ime meseca kot glave koledarja.

Dve novi metodi področnih nastavitev za obravnavanje (izbirnih) razširitev področnih nastavitev.

Metoda Opis
javno logično hasExtensions() Vrne vrednost true, če ima ta jezik razširitve.
public Locale stripExtensions() Vrne kopijo tega jezika brez razširitev. Če ta lokalna nastavitev nima razširitev, se ta lokalna nastavitev vrne sama.

Dve novi metodi Locale.filter vrneta seznam primerkov Locale, ki se ujemajo s podanimi kriteriji, kot je opredeljeno v RFC 4647:

Metoda Opis
filter javnega statičnega seznama (List priorityList, Collection locales) Vrne seznam ujemajočih se primerkov Locale z uporabo mehanizma filtriranja, definiranega v RFC 4647. To je enakovredno filter(List, Collection, FilteringMode), če je način Locale.FilteringMode.AUTOSELECT_FILTERING.
filter javnega statičnega seznama (List priorityList, Collection locales, Locale.FilteringMode mode) Vrne seznam ujemajočih se primerkov Locale z uporabo mehanizma filtriranja, definiranega v RFC 4647.

Dve novi metodi Locale.filterTags vrneta seznam jezikovnih oznak, ki ustrezajo podanim kriterijem, kot je opredeljeno v RFC 4647.

Metoda Opis
public static List filterTags(List priorityList, Collection tags) Vrne seznam ujemajočih se jezikovnih oznak z uporabo osnovnega mehanizma filtriranja, definiranega v RFC 4647. To je enakovredno filterTags(List, Collection, FilteringMode), če je način Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags(List priorityList, Collection tags, Locale.FilteringMode mode) Vrne seznam ujemajočih se jezikovnih oznak z uporabo osnovnega mehanizma filtriranja, opredeljenega v RFC 4647.

Dve novi metodi iskanja vrneta najbolj ujemajočo se področno ali jezikovno oznako z uporabo mehanizma iskanja, opredeljenega v RFC 4647.

Metoda Opis
javno statično iskanje področne nastavitve (prioritetni seznam seznama, področne nastavitve zbirke) Vrne instanco Locale za jezikovno oznako, ki se najbolje ujema, z uporabo mehanizma iskanja, opredeljenega v RFC 4647.
Javni statični String lookupTag(List priorityList,Zbirke oznak) Z uporabo mehanizma iskanja, opredeljenega v RFC 4647, vrne jezikovno oznako, ki se najbolje ujema.

Druge izboljšave različice Jave 8

Izboljšave v JDK 8u5

1) Pogostost, v kateri so prikazani varnostni pozivi za aplikacijo, je bila zmanjšana.


Izboljšave v JDK 8u11

1) Možnost za zavrnitev ponudb sponzorjev, ko je JRE nameščen ali posodobljen, je na voljo na zavihku Napredno na nadzorni plošči Jave.

2) Atribut Entry-Point lahko vključite v manifest datoteke JAR, da identificirate enega ali več razredov kot veljavno vstopno točko za vašo RIA (Rich Internet application).


Izboljšave v JDK 8u20

1) Orodje javafxpackager je bilo preimenovano v javapackager. To orodje je bilo izboljšano z novimi argumenti za samostojne povezovalnike aplikacij.

Naslednje izboljšave so povezane z orodjem java:

  • Dodana je bila poskusna možnost prevajalnika JIT, povezana z omejenim transakcijskim pomnilnikom (RTM).
  • Dodanih je več možnosti, povezanih z deduplikacijo nizov.
  • Dodanih je bilo več možnosti, povezanih z naprednim standardom šifriranja (AES).
  • Kombinacije možnosti zbiranja smeti so opuščene.

2) Navideznemu stroju Java HotSpot je bil dodan vodnik za nastavitev zbiranja smeti. Opisuje zbiralnike smeti, vključene v Java HotSpot VM, in vam pomaga pri odločitvi, kateri zbiralnik smeti lahko najbolje optimizira delovanje vaše aplikacije, zlasti če obravnava velike količine podatkov (več gigabajtov), ​​ima veliko niti in visoke stopnje transakcij. .


Izboljšave v JDK 8u31

1) V tej izdaji je protokol SSLv3 odstranjen iz naprednih možnosti nadzorne plošče Java.


Izboljšave v JDK 8u40

Java orodje

1) -XX:+CheckEndorsedAndExtDirs je bil dodan, ker sta bila mehanizem za preglasitev potrjenih standardov (JDK-8065675) in mehanizem razširitve (JDK-8065702) opuščena. Možnost pomaga prepoznati vse obstoječe uporabe teh mehanizmov in je podprta v JDK 7u80 in JDK 8u40.

2) Java Flight Recorder (JFR) ponuja različne načine za odklepanje komercialnih funkcij in omogočanje JFR med izvajanjem aplikacije.

Vključuje možnosti ukazne vrstice java, kot so diagnostični ukazi jcmd in kontrole grafičnega uporabniškega vmesnika (GUI) znotraj Java Mission Control. Ta prilagodljivost vam omogoča, da zagotovite ustrezne možnosti ob zagonu ali pozneje komunicirate z JFR.

3) Možnost -XX:StartFlightRecording=parameter=value ima nov parameter, dumponexit=true, ki določa, ali naj se ustvari datoteka izpisa podatkov JFR, ko se JVM konča na nadzorovan način.

4) Možnosti, povezane z omejenim transakcijskim pomnilnikom (RTM), niso več poskusne. Te možnosti vključujejo -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt in -XX:+UseRTMLocking.

5) V Javi 8 je bila uvedena skupna raba podatkov aplikacijskega razreda (AppCDS). AppCDS razširja CDS (Skupna raba podatkov o razredih), da omogoči namestitev razredov iz imenikov standardnih razširitev in poti razreda aplikacije v skupni arhiv. To je komercialna funkcija in se ne šteje več za eksperimentalno.

6) Dodani sta bili novi možnosti -XX:+ResourceManagement in -XX:ResourceManagementSampleInterval=value.

7) Dodane so bile dodatne informacije o velikih straneh. Velike strani, znane tudi kot ogromne strani, so pomnilniške strani, ki so znatno večje od standardne velikosti pomnilniške strani. Velike strani optimizirajo procesor Translation-Lookaside Buffers. Možnosti Linuxa -XX:+UseHugeTLBFS, -XX:+UseSHM in -XX:+UseTransparentHugePages so dokumentirane.

8) Možnost -XX:ObjectAlignmentInBytes=alignment je bila dokumentirana.

Orodje JJS

1) Dodana je možnost --optimistic-types=[true|false]. Omogoči ali onemogoči predpostavke optimističnega tipa z deoptimizirajočim ponovnim prevajanjem.

2) Orodju jjs je bila dodana možnost --language=[es5]. Določa jezikovno različico ECMAScript.

Orodje Javapackager

1) Na voljo so novi argumenti za povezovalnike OS X. Argument mac.CFBundleVersion identificira interno številko različice, ki bo uporabljena.

2) Argument mac.dmg.simple označuje, ali so koraki prilagajanja DMG, ki so odvisni od izvajanja kode AppleScript, preskočeni.

Orodje Jcmd

Orodje Jcmd se uporablja za dinamično interakcijo z Java Flight Recorder (JFR). Z njim lahko odklenete komercialne funkcije, omogočite/zaženete/ustavite snemanje letov in pridobite različna sporočila o stanju iz sistema.

Orodje Jstat

Orodje jstat je bilo posodobljeno z informacijami o stisnjenem prostoru razreda, ki je poseben del metaprostora.

Navidezni stroj

Funkcija Scalable Native Memory Tracking HotSpot VM pomaga diagnosticirati puščanje pomnilnika VM in uporabnikom razjasniti, kdaj puščanje pomnilnika ni v VM. Native Memory Tracker je mogoče zagnati brez samoizklopa v velikih sistemih in brez povzročitve pomembnega vpliva na zmogljivost, ki presega tisto, kar velja za sprejemljivo za majhne programe.