logo

Java 8-funksjoner

Oracle ga ut en ny versjon av Java som Java 8 i 18. mars 2014. Det var en revolusjonerende utgivelse av Java for programvareutviklingsplattformen. Det inkluderer ulike oppgraderinger til Java-programmering, JVM, verktøy og biblioteker.

Java 8 programmeringsspråkforbedringer

Java 8 gir følgende funksjoner for Java-programmering:

  • Lambda uttrykk,
  • Metodereferanser,
  • Funksjonelle grensesnitt,
  • Stream API,
  • Standard metoder,
  • Base64 Encode Decode,
  • Statiske metoder i grensesnitt,
  • Valgfri klasse,
  • Samlerklasse,
  • ForEach()-metoden,
  • Rhino JavaScript-motor,
  • Parallell Array Sortering,
  • Skriv og repeter merknader,
  • IO-forbedringer,
  • Samtidig forbedringer,
  • JDBC-forbedringer osv.

Lambda-uttrykk

Lambda-uttrykk hjelper oss å skrive koden vår i funksjonell stil. Det gir en klar og konsis måte å implementere SAM-grensesnitt (Single Abstract Method) ved å bruke et uttrykk. Det er veldig nyttig i samlingsbibliotek der det hjelper å iterere, filtrere og trekke ut data.

For mer informasjon og eksempler: Klikk her


Metodereferanser

Java 8 Metodereferanse brukes til å referere metode for funksjonelt grensesnitt. Det er kompakt og lett form for lambda uttrykk. Hver gang du bruker lambda-uttrykk til bare å henvise til en metode, kan du erstatte lambda-uttrykket med metodereferanse.

For mer informasjon og eksempler: Klikk her


Funksjonelt grensesnitt

Et grensesnitt som bare inneholder én abstrakt metode er kjent som funksjonelt grensesnitt. Den kan ha et hvilket som helst antall standard og statiske metoder. Den kan også erklære metoder for objektklasse.

Funksjonelle grensesnitt er også kjent som Single Abstract Method Interfaces (SAM Interfaces).

For mer informasjon og eksempler: Klikk her


Valgfri

Java introduserte en ny klasse Valgfri i Java 8. Det er en offentlig siste klasse som brukes til å håndtere NullPointerException i Java-applikasjonen. Vi må importere java.util pakken for å bruke denne klassen. Det gir metoder for å sjekke tilstedeværelsen av verdi for en bestemt variabel.

For mer informasjon og eksempler: Klikk her


for hver

Java gir en ny metode forEach() for å iterere elementene. Det er definert i Iterable- og Stream-grensesnitt.

Det er en standardmetode definert i Iterable-grensesnittet. Samlingsklasser som utvider Iterable-grensesnittet kan bruke forEach()-metoden for å iterere elementer.

Denne metoden tar en enkelt parameter som er et funksjonelt grensesnitt. Så du kan bruke lambda-uttrykk som et argument.

For mer informasjon og eksempler: Klikk her


Dato/klokkeslett API

Java har introdusert en ny Date and Time API siden Java 8. Java.time-pakken inneholder Java 8 Date and Time-klasser.

For mer informasjon og eksempler: Klikk her


Standardmetoder

Java gir en mulighet for å lage standardmetoder inne i grensesnittet. Metoder som er definert i grensesnittet og merket med standard nøkkelord er kjent som standardmetoder. Disse metodene er ikke-abstrakte metoder og kan ha metodekropp.

For mer informasjon og eksempler: klikk her


Rhino JavaScript-motor

Nashorn er en JavaScript-motor. Den brukes til å kjøre JavaScript-kode dynamisk på JVM (Java Virtual Machine). Java tilbyr et kommandolinjeverktøy etc som brukes til å kjøre JavaScript-kode.

Du kan kjøre JavaScript-kode på to måter:

  1. Bruke jjs kommandolinjeverktøy, og
  2. Ved å bygge inn i Java-kildekoden.

For mer informasjon og eksempler: klikk her


StringJoiner

Java la til en ny siste klasse StringJoiner i java.util-pakken. Den brukes til å konstruere en sekvens av tegn atskilt med et skilletegn. Nå kan du lage en streng ved å sende skilletegn som komma(,), bindestrek(-) osv.

java boolsk

For mer informasjon og eksempler: klikk her


Samlere

Collectors er en siste klasse som utvider objektklassen. Det gir reduksjonsoperasjoner, som å samle elementer i samlinger, oppsummere elementer i henhold til ulike kriterier etc.

For mer informasjon og eksempler: Klikk her


Stream API

Java 8 java.util.stream-pakken består av klasser, grensesnitt og en enum for å tillate funksjonelle operasjoner på elementene. Den utfører lat beregning. Så den kjøres bare når den krever det.

For mer informasjon og eksempler: Klikk her


Strømfilter

Java-strøm gir et metodefilter() for å filtrere strømelementer på grunnlag av gitt predikat. Anta at du bare ønsker å få jevne elementer av listen din, du kan gjøre dette enkelt ved hjelp av filter()-metoden.

Denne metoden tar predikatet som et argument og returnerer en strøm av resulterende elementer.

For mer informasjon og eksempler: Klikk her


Java Base64-koding og dekoding

Java gir en klasse Base64 for å håndtere kryptering og dekryptering. Du må importere java.util.Base64-klassen i kildefilen for å bruke metodene.

Denne klassen gir tre forskjellige kodere og dekodere for å kryptere informasjon på hvert nivå.

For mer informasjon og eksempler: Klikk her


Java Parallell Array Sortering

Java gir en ny tilleggsfunksjon i Arrays-klassen som brukes til å sortere array-elementer parallelt. ParallellSort()-metoden har lagt til java.util.Arrays-klassen som bruker JSR 166 Fork/Join-parallellisme felles pool for å gi sortering av arrays. Det er en overbelastet metode.

For mer informasjon og eksempler: klikk her


Java 8 sikkerhetsforbedringer

1) Java Secure Socket Extension (JSSE)-leverandøren aktiverer protokollene Transport Layer Security (TLS) 1.1 og TLS 1.2 som standard på klientsiden.

2) En forbedret metode AccessController.doPrivileged har blitt lagt til som gjør det mulig for koden å hevde et undersett av privilegiene sine, uten å hindre full kryssing av stabelen for å se etter andre tillatelser.

3) Advanced Encryption Standard (AES) og Password-Based Encryption (PBE) algoritmer, slik som PBEWithSHA256AndAES_128 og PBEWithSHA512AndAES_256 er lagt til SunJCE-leverandøren.

4) Java Secure Socket Extension (SunJSSE) har aktivert Server Name Indication (SNI) utvidelse for klientapplikasjoner som standard i JDK 7 og JDK 8 støtter SNI-utvidelsen for serverapplikasjoner. SNI-utvidelsen er en funksjon som utvider SSL/TLS-protokollene for å indikere hvilket servernavn klienten prøver å koble seg til under handshaking.

5) SunJSSE er forbedret for å støtte Authenticated Encryption with Associated Data (AEAD) algoritmer. Java Cryptography Extension (SunJCE)-leverandøren er forbedret for å støtte AES/GCM/NoPadding-chifferimplementering så vel som Galois/Counter Mode (GCM) algoritmeparametere.

6) Et nytt kommandoflagg -importpassword legges til keytool-verktøyet. Den brukes til å godta et passord og lagre det sikkert som en hemmelig nøkkel. Klasser som java.security.DomainLoadStoreParameter ogjava.security.PKCS12Attribute er lagt til for å støtte DKS-nøkkellagertypen.

7) I JDK 8 har de kryptografiske algoritmene blitt forbedret med SHA-224-varianten av SHA-2-familien av meldingssammendrag-implementeringer.

8) Forbedret støtte for NSA Suite B Cryptography som inkluderer:

  • OID-registrering for NSA Suite B kryptografialgoritmer
  • Støtte for generering av 2048-bits DSA-nøkkelpar og ekstra signaturalgoritmer for 2048-biters DSA-nøkler som SHA224withDSA og SHA256withDSA.
  • Oppheving av nøkkelstørrelsesbegrensningen fra 1024 til 2048 for Diffie-Hellman (DH) algoritme.

9) SecureRandom-klassen gir generering av kryptografisk sterke tilfeldige tall som brukes til private eller offentlige nøkler, chiffer og signerte meldinger. GetInstanceStrong()-metoden ble introdusert i JDK 8, som returnerer en forekomst av den sterkeste SecureRandom. Den bør brukes når du trenger å opprette RSA privat og offentlig nøkkel. SecureRandom inkluderer følgende andre endringer:

hashset vs hashmap
  • To nye implementeringer er introdusert for UNIX-plattformer, som gir blokkerende og ikke-blokkerende atferd.

10) En ny PKIXRevocationChecker-klasse er inkludert som sjekker tilbakekallingsstatusen til sertifikater med PKIX-algoritmen. Den støtter sjekk av beste innsats, sjekk av sertifikat for endeenheter og mekanismespesifikke alternativer.

11) Public Key Cryptography Standards 11 (PKCS) har blitt utvidet til å inkludere 64-bits støtte for Windows.

12) To nye rcache-typer er lagt til Kerberos 5. Type none betyr ingen rcache i det hele tatt, og type dfl betyr den filbaserte rcachen i DFL-stil. Dessuten støttes nå den forespurte undernøkkelen. De er konfigurert ved hjelp av systemegenskapene sun.security.krb5.rcache og sun.security.krb5.acceptor.subkey.

13) I JDK 8 støttes Kerberos 5-protokollovergang og begrenset delegering innenfor samme område.

14) Java 8 har deaktivert svak kryptering som standard. De DES-relaterte Kerberos 5-krypteringstypene støttes ikke som standard. Disse krypteringstypene kan aktiveres ved å legge til allow_weak_crypto=true i krb5.conf-filen.

15) Du kan sette servernavnet til null for å angi en ubundet server. Det betyr at en klient kan be om tjenesten ved å bruke et hvilket som helst servernavn. Etter at en kontekst er etablert, kan serveren hente navnet som en forhandlet egenskap med nøkkelnavnet SASL.BOUND_SERVER_NAME.

16) Java Native Interface (JNI)-bro til native Java Generic Security Service (JGSS) støttes nå på Mac OS X. Du kan sette systemegenskapen sun.security.jgss.native til true for å aktivere den.

17) En ny systemegenskap, jdk.tls.ephemeralDHKeySize er definert for å tilpasse de flyktige DH-nøkkelstørrelsene. Minste akseptable DH-nøkkelstørrelse er 1024 biter, bortsett fra eksporterbare chiffersuiter eller eldre modus (jdk.tls.ephemeralDHKeySize=legacy).

18) Java Secure Socket Extension (JSSE)-leverandør respekterer som standard klientens chiffersuitepreferanse. Atferden kan imidlertid endres for å respektere serverens chifferpakkepreferanse ved å kalle SSLParameters.setUseCipherSuitesOrder(true) over serveren.


Java 8-verktøyforbedringer

1) En jjs-kommando introduseres, som påkaller Nashorn-motoren enten i interaktiv skallmodus eller for å tolke skriptfiler.

2) Java-kommandoen er i stand til å starte JavaFX-applikasjoner, forutsatt at JavaFX-applikasjonen er riktig pakket.

3) Man-siden for java-kommandoen (både nroff og HTML) har blitt fullstendig omarbeidet. De avanserte alternativene er nå delt inn i Runtime, Compiler, Garbage Collection og Serviceability, i henhold til området de påvirker. Flere tidligere manglende alternativer er nå beskrevet. Det er også en seksjon for alternativer som ble avviklet eller fjernet siden forrige utgivelse.

4) Nytt kommandolinjeverktøy for jdeps lar utvikleren analysere klassefiler for å bestemme avhengigheter på pakkenivå eller klassenivå.

5) Du kan eksternt få tilgang til diagnostiske kommandoer, som tidligere kun var tilgjengelige lokalt via jcmd-verktøyet. Fjerntilgang gis ved hjelp av Java Management Extensions (JMX), så diagnostiske kommandoer blir eksponert for en MBean-plattform som er registrert på MBean-plattformen. MBean er com.sun.management.DiagnosticCommandMBean-grensesnittet.

6) Et nytt alternativ -tsapolicyid er inkludert i jarsigner-verktøyet som lar deg be om et signert tidsstempel fra en tidsstemplingsmyndighet og legge det ved en signert JAR-fil.

7) En ny metode java.lang.reflect.Executable.getParameters er inkludert som lar deg få tilgang til navnene på de formelle parameterne til enhver metode eller konstruktør. Klasse-filer lagrer imidlertid ikke formelle parameternavn som standard. For å lagre formelle parameternavn i en bestemt .class-fil, og dermed aktivere Reflection API for å hente formelle parameternavn, kompilerer du kildefilen med -parameters-alternativet til javac-kompilatoren.

8) Typereglene for binære sammenligninger i Java Language Specification (JLS) seksjon 15.21 vil nå håndheves korrekt av javac.

9) I denne utgivelsen er apt-verktøyet og tilhørende API i pakken com.sun.mirror fjernet.

Javadoc-forbedringer

I Java SE 8 ble følgende nye API-er lagt til Javadoc-verktøyet.

  • En ny DocTree API introduserer en skanner som lar deg krysse kildekode som er representert av et abstrakt syntakstre. Dette utvider Compiler Tree API for å gi strukturert tilgang til innholdet i javadoc-kommentarer.
  • Javax.tools-pakken inneholder klasser og grensesnitt som gjør at du kan starte Javadoc-verktøyet direkte fra en Java-applikasjon, uten å utføre en ny prosess.
  • 'Metodesammendrag'-delen av den genererte dokumentasjonen for en klasse eller grensesnitt har blitt omstrukturert. Metodebeskrivelser i denne delen er gruppert etter type. Som standard er alle metoder oppført. Du kan klikke på en fane for å vise metoder av en bestemt type (statiske, forekomster, abstrakte, konkrete eller avviklede, hvis de finnes i klassen eller grensesnittet).
  • Javadoc-verktøyet har nå støtte for å sjekke innholdet i javadoc-kommentarer for problemer som kan føre til ulike problemer, for eksempel ugyldig HTML eller tilgjengelighetsproblemer, i filene som genereres av javadoc. Funksjonen er aktivert som standard, og kan også kontrolleres av det nye -Xdoclint-alternativet.

Pack200-forbedringer

Java-klassens filformat har blitt oppdatert på grunn av JSR 292 som støtter dynamiske språk på Java-plattformen.

Pack200-motoren har blitt oppdatert for å sikre at Java SE 8-klassefiler komprimeres effektivt. Nå kan den gjenkjenne konstante pooloppføringer og nye bytekoder introdusert av JSR 292. Som et resultat vil ikke komprimerte filer opprettet med denne versjonen av pack200-verktøyet være kompatible med eldre versjoner av unpack200-verktøyet.


Java 8 I/O-forbedringer

I Java 8 er det flere forbedringer av java.nio.charset.Charset og utvidede tegnsettimplementeringer. Den inkluderer følgende:

  • En ny SelectorProvider som kan forbedre ytelsen eller skalerbarheten for serveren. /dev/poll SelectorProvider fortsetter å være standard. For å bruke Solaris hendelsesportmekanisme, kjør med systemegenskapen java.nio.channels.spi.Selector satt til verdien sun.nio.ch.EventPortSelectorProvider.
  • Størrelsen på filen /jre/lib/charsets.jar er redusert.
  • Ytelsen har vært forbedring for java.lang.String(byte[], ∗)-konstruktøren og java.lang.String.getBytes()-metoden.

Java 8 Nettverksforbedringer

1) En ny klasse java.net.URLPermission er lagt til. Det representerer en tillatelse for tilgang til en ressurs definert av en gitt URL.

2) En pakke jdk.net er lagt til som inneholder plattformspesifikke socket-alternativer og en mekanisme for å sette disse alternativene på alle standard socket-typer. Socket-alternativene er definert i jdk.net.ExtendedSocketOptions.

3) I klassen HttpURLConnection, hvis en sikkerhetsadministrator er installert, og hvis en metode kalles som resulterer i et forsøk på å åpne en tilkobling, må den som ringer ha enten en 'connect'SocketPermission til vert/port-kombinasjonen av destinasjonsadressen eller en URLPermission som tillater denne forespørselen.

Hvis automatisk omdirigering er aktivert, og denne forespørselen omdirigeres til en annen destinasjon, må den som ringer også ha tillatelse til å koble til den omdirigerte verten/URLen.


Java 8 samtidige forbedringer

Java.util.concurrent-pakken la til to nye grensesnitt og fire nye klasser.

Java.util.concurrent grensesnitt

Grensesnitt Beskrivelse
offentlig statisk grensesnitt CompletableFuture.AsynchronousCompletionTask Det er et markørgrensesnitt som brukes til å identifisere asynkrone oppgaver produsert av asynkrone metoder. Det kan være nyttig for overvåking, feilsøking og sporing av asynkrone aktiviteter.
offentlig grensesnitt CompletionStage Den oppretter et stadium av en muligens asynkron beregning, som utfører en handling eller beregner en verdi når en annen CompletionStage fullfører.

Java.util.samtidige klasser

Klasse Beskrivelse
offentlig klasse CompletableFuture utvider Objekt implementerer Future, CompletionStage Det er aFuture som kan være eksplisitt fullført, og kan brukes som et CompletionStage, som støtter avhengige funksjoner og handlinger som utløser ved fullføringen.
offentlig statisk klasse ConcurrentHashMap.KeySetView utvider Objektimplementer Set, Serialiserbar Det er en visning av et ConcurrentHashMap som et sett med nøkler, der tillegg eventuelt kan aktiveres ved å tilordne en felles verdi.
offentlig abstrakt klasse CountedCompleter utvider ForkJoinTask En ForkJoinTask med en fullføringshandling utført når den utløses og det er ingen gjenværende ventende handlinger.
public class CompletionException utvider RuntimeException Den gir et unntak når det oppstår en feil eller annet unntak i løpet av å fullføre et resultat eller en oppgave.

Nye metoder i java.util.concurrent.ConcurrentHashMap-klassen

ConcurrentHashMap-klassen introduserer flere nye metoder i sin siste utgivelse. Den inkluderer ulike forEach-metoder (forEach, forEachKey, forEachValue og forEachEntry), søkemetoder (søk, searchKeys, searchValues ​​og searchEntries) og et stort antall reduksjonsmetoder (reduce, reduceToDouble, reduceToLong etc.). Andre diverse metoder (mappingCount og newKeySet) er også lagt til.

Nye klasser i java.util.concurrent.atomic

Siste utgivelse introduserer skalerbar, oppdaterbar, variabel støtte gjennom et lite sett med nye klasser DoubleAccumulator, DoubleAdder, LongAccumulator ogLongAdder. Den bruker internt stridsreduksjonsteknikker som gir enorme gjennomstrømningsforbedringer sammenlignet med atomvariabler.

Klasse Beskrivelse
offentlig klasse DoubleAccumulator utvider Antall implementerer Serialiserbar Den brukes for en eller flere variabler som sammen opprettholder en løpende dobbel verdi oppdatert ved hjelp av en medfølgende funksjon.
offentlig klasse DoubleAdder utvider Antall implementerer Serialiserbar Den brukes for en eller flere variabler som til sammen opprettholder en i utgangspunktet null dobbeltsum.
offentlig klasse LongAccumulator utvider Antall implementerer Serialiserbare Den brukes for en eller flere variabler som sammen opprettholder en løpende lang verdi oppdatert ved hjelp av en medfølgende funksjon.
offentlig klasse LongAdder utvider Antall implementerer Serialiserbare Den brukes for en eller flere variabler som sammen opprettholder en i utgangspunktet null lang sum.

Nye metoder i java.util.concurrent.ForkJoinPool Class

Denne klassen har lagt til to nye metoder getCommonPoolParallelism() og commonPool(), som returnerer det målrettede parallellitetsnivået til henholdsvis den felles poolen eller den felles pool-forekomsten.

Metode Beskrivelse
offentlig statisk ForkJoinPool commonPool() Den returnerer den felles pool-forekomsten.
Offentlig statisk int getCommonPoolParallelism() Den returnerer det målrettede parallellitetsnivået til felles pool.

Ny klasse java.util.concurrent.locks.StampedLock

En ny klasse StampedLock er lagt til som brukes til å legge til funksjonsbasert lås med tre moduser for å kontrollere lese-/skrivetilgang (skriving, lesing og optimistisk lesing). Denne klassen støtter også metoder som betinget gir konverteringer på tvers av de tre modusene.

Klasse Beskrivelse
offentlig klasse StampedLock utvider Objekt implementerer Serializable Denne klassen representerer en funksjonsbasert lås med tre moduser for å kontrollere lese-/skrivetilgang.

Java API for XML-behandling (JAXP) 1.6 Forbedringer

I Java 8 er Java API lagt til for XML Processing (JAXP) 1.6. Det krever bruk av tjenesteleverandørens lastefunksjon som er definert av java.util.ServiceLoader for å laste tjenester fra tjenestekonfigurasjonsfiler.

Begrunnelsen for dette er å tillate fremtidig modularisering av Java SE-plattformen der tjenesteleverandører kan distribueres på andre måter enn JAR-filer og kanskje uten tjenestekonfigurasjonsfilene.


Java Virtual Machine Enhancements

Verifikasjonen av påkallingsspesielle instruksjoner er strammet slik at bare en instansinitieringsmetode i gjeldende klasse eller dens direkte superklasse kan påkalles.


Java Mission Control 5.3 er inkludert i Java 8

Java Mission Control (JMC) er et avansert sett med verktøy som muliggjør effektiv og detaljert dataanalyse og leverer avansert, diskret Java-overvåking og -administrasjon. JMC tilbyr seksjoner for vanlige analyseområder som kodeytelse, minne og latens.

hva er størrelsen på datamaskinens skjerm

Babel-språkpakker på japansk og forenklet kinesisk er nå inkludert som standard i Java Mission Control som er inkludert i JDK 8.


Java 8 internasjonaliseringsforbedringer

1) Unicode-forbedringer

JDK 8 inkluderer støtte for Unicode 6.2.0. Den inneholder følgende funksjoner.

  • 733 nye karakterer inkludert tyrkisk lira-tegn.
  • 7 nye skript:
    • Meroitiske hieroglyfer
    • Meroitisk kursiv
    • Sora Sompeng
    • Chakma
    • Sharada
    • Takri
    • Miao
  • 11 nye blokker: inkludert 7 blokker for de nye skriptene som er oppført ovenfor og 4 blokker for følgende eksisterende skript:
  • Arabisk utvidet-A
  • Sundanesisk tillegg
  • Meeting Meek Extensions
  • Arabiske matematiske alfabetiske symboler

Adopsjon av Unicode CLDR Data og java.locale.providers System Property

Unicode-konsortiet har utgitt prosjektet Common Locale Data Repository (CLDR) for å 'støtte verdens språk, med det største og mest omfattende standardlageret med lokaldata tilgjengelig.' CLDR er i ferd med å bli de-facto-standarden for lokaldata. CLDRs XML-baserte lokalitetsdata har blitt innlemmet i JDK 8-utgivelsen, men den er deaktivert som standard.

Det er fire forskjellige kilder for lokalitetsdata:

  • CLDR representerer lokalitetsdataene levert av Unicode CLDR-prosjektet.
  • HOST representerer gjeldende brukers tilpasning av det underliggende operativsystemets innstillinger. Det fungerer bare med brukerens standardlokale, og de tilpassbare innstillingene kan variere avhengig av operativsystemet, men primært formater for dato, klokkeslett, tall og valuta støttes.
  • SPI representerer de lokalitetssensitive tjenestene implementert i de installerte SPI-leverandørene.
  • JRE representerer lokalitetsdataene som er kompatible med tidligere JRE-utgivelser.

For å velge ønsket lokalitetsdatakilde, bruk java.locale.providers-systemegenskapen. liste opp datakildene i foretrukket rekkefølge. For eksempel: java.locale.providers=VERT,SPI,CLDR,JRE Standardoppførselen tilsvarer følgende innstilling: java.locale.providers=JRE,SPI


Java 8 Nye Kalender og Locale APIer

JDK 8 inkluderer to nye klasser, flere nye metoder og en ny returverdi for en eksisterende statisk metode.

To nye abstrakte klasser for tjenesteleverandører er lagt til java.util.spi-pakken.

Klasse Beskrivelse
offentlig abstrakt klasse CalendarDataProvider utvider LocaleServiceProvider Det er en abstrakt klasse for tjenesteleverandører som gir stedsavhengige kalenderparametere.
offentlig abstrakt klasse CalendarNameProvider utvider LocaleServiceProvider Det er en abstrakt klasse for tjenesteleverandører som gir lokaliserte strengrepresentasjoner (visningsnavn) av kalenderfeltverdier.

En statisk metode er nå i stand til å gjenkjenne Locale.UNICODE_LOCALE_EXTENSION for nummereringssystemet.

Metode Beskrivelse
public static final DesimalFormatSymbols getInstance(Locale locale) Den brukes til å hente DecimalFormatSymbols-forekomsten for den angitte lokaliteten. Denne metoden gir tilgang til DecimalFormatSymbols-forekomster for lokaliteter som støttes av selve Java-kjøretiden, så vel som for de som støttes av installerte DecimalFormatSymbolsProvider-implementeringer. Det kaster NullPointerException hvis locale er null.

Lagt til nye metoder i kalender-API:

Metode Beskrivelse
offentlig boolsk erSupportedLocale(Locale locale) Den returnerer sann hvis den gitte lokaliteten støttes av denne lokalitetstjenesteleverandøren. Den gitte lokaliteten kan inneholde utvidelser som bør tas i betraktning for støtteavgjørelsen. Den er definert i klassen java.util.spi.LocaleServiceProvider
offentlig streng getCalendarType() Den returnerer kalendertypen til denne kalenderen. Kalendertyper er definert av Unicode Locale Data Markup Language (LDML)-spesifikasjonen. Det er definert i klassen java.util.Calendar.

Nye stilspesifikasjoner legges til for metodene Calendar.getDisplayName og Calendar.getDisplayNames for å bestemme formatet til kalendernavnet.


Spesifiser Beskrivelse
offentlig statisk endelig int SHORT_FORMAT Det er en stilspesifikasjon for getDisplayName og getDisplayNames som indikerer et kort navn som brukes for format.
offentlig statisk finale int LONG_FORMAT Det er en stilspesifikasjon for getDisplayName og getDisplayNames som indikerer et langt navn som brukes for format.
offentlig statisk finale int SHORT_STANDALONE Det er en stilspesifikasjon for getDisplayName og getDisplayNames som indikerer et kort navn som brukes uavhengig, for eksempel en månedsforkortelse som kalenderoverskrifter.
offentlig statisk finale int LONG_STANDALONE Det er en stilspesifikasjon for getDisplayName og getDisplayNames som indikerer et langt navn som brukes uavhengig, for eksempel et månedsnavn som kalenderoverskrifter.

To nye lokalitetsmetoder for å håndtere en lokalitets (valgfrie) utvidelser.

Metode Beskrivelse
public boolean hasExtensions() Den returnerer sann hvis denne lokaliteten har noen utvidelser.
public Locale stripExtensions() Den returnerer en kopi av denne lokaliteten uten utvidelser. Hvis denne lokaliteten ikke har noen utvidelser, returneres denne lokaliteten selv.

To nye Locale.filter-metoder returnerer en liste over Locale-forekomster som samsvarer med de angitte kriteriene, som definert i RFC 4647:

Metode Beskrivelse
offentlig statisk listefilter (listeprioritetsliste, samlingslokaliteter) Den returnerer en liste over samsvarende Locale-forekomster ved å bruke filtreringsmekanismen definert i RFC 4647. Dette tilsvarer filter(List, Collection, FilteringMode) når modusen er Locale.FilteringMode.AUTOSELECT_FILTERING.
offentlig statisk listefilter (listeprioritetsliste, samlingslokaliteter, Locale.FilteringMode-modus) Den returnerer en liste over samsvarende Locale-forekomster ved å bruke filtreringsmekanismen definert i RFC 4647.

To nye Locale.filterTags-metoder returnerer en liste over språkkoder som samsvarer med de angitte kriteriene, som definert i RFC 4647.

Metode Beskrivelse
offentlige statiske listefilter-tags(listeprioritetsliste, samlingskoder) Den returnerer en liste over samsvarende språkkoder ved å bruke den grunnleggende filtreringsmekanismen definert i RFC 4647. Dette tilsvarer filterTags(List, Collection, FilteringMode) når modusen er Locale.FilteringMode.AUTOSELECT_FILTERING.
offentlige statiske listefilterTags(Listeprioritetsliste, Samlingskoder, Locale.FilteringMode-modus) Den returnerer en liste over samsvarende språkkoder ved å bruke den grunnleggende filtreringsmekanismen definert i RFC 4647.

To nye oppslagsmetoder returnerer den best samsvarende lokaliteten eller språkkoden ved å bruke oppslagsmekanismen definert i RFC 4647.

Metode Beskrivelse
offentlig statisk lokalitetsoppslag (listeprioritetsliste, samlingslokaliteter) Den returnerer en Locale-forekomst for den best-matchende språkkoden ved å bruke oppslagsmekanismen definert i RFC 4647.
Offentlig statisk String lookupTag (Listeprioritetsliste, Samlingskoder) Den returnerer den best matchende språkkoden ved å bruke oppslagsmekanismen definert i RFC 4647.

Andre Java 8-versjonsforbedringer

Forbedringer i JDK 8u5

1) Frekvensen som sikkerhetsmeldingene vises for en applikasjon er redusert med.


Forbedringer i JDK 8u11

1) Et alternativ for å undertrykke tilbud fra sponsorer når JRE er installert eller oppdatert er tilgjengelig i kategorien Avansert i Java-kontrollpanelet.

2) Entry-Point-attributtet kan inkluderes i JAR-filmanifestet for å identifisere en eller flere klasser som et gyldig inngangspunkt for din RIA (Rich Internet application).


Forbedringer i JDK 8u20

1) Javafxpackager-verktøyet har fått nytt navn til javapackager. Dette verktøyet har blitt forbedret med nye argumenter for selvstendige applikasjonspakker.

Følgende forbedringer er relatert til java-verktøyet:

  • Et eksperimentelt JIT-kompilatoralternativ relatert til Restricted Transactional Memory (RTM) er lagt til.
  • Flere alternativer knyttet til strengdeduplisering er lagt til.
  • Flere alternativer knyttet til Advanced Encryption Standard (AES) iboende er lagt til.
  • Kombinasjoner av alternativer for søppelhenting er avviklet.

2) Garbage Collection Tuning Guide har blitt lagt til Java HotSpot Virtual Machine. Den beskriver søppelsamlere som følger med Java HotSpot VM og hjelper deg med å bestemme hvilken søppeloppsamler som best kan optimalisere ytelsen til applikasjonen din, spesielt hvis den håndterer store datamengder (flere gigabyte), har mange tråder og har høye transaksjonshastigheter .


Forbedringer i JDK 8u31

1) I denne utgivelsen er SSLv3-protokollen fjernet fra Java Control Panel Advanced-alternativene.


Forbedringer i JDK 8u40

Java-verktøy

1) -XX:+CheckEndorsedAndExtDirs er lagt til fordi overstyringsmekanismen for godkjente standarder (JDK-8065675) og utvidelsesmekanismen (JDK-8065702) er avviklet. Alternativet hjelper til med å identifisere eksisterende bruk av disse mekanismene og støttes i JDK 7u80 og JDK 8u40.

2) Java Flight Recorder (JFR) tilbyr en rekke måter å låse opp kommersielle funksjoner og aktivere JFR under kjøretiden til en applikasjon.

Den inkluderer java-kommandolinjealternativer som jcmd-diagnosekommandoer og grafiske brukergrensesnitt (GUI)-kontroller i Java Mission Control. Denne fleksibiliteten lar deg tilby de riktige alternativene ved oppstart, eller samhandle med JFR senere.

3) Alternativet -XX:StartFlightRecording=parameter=verdi har en ny parameter, dumponexit=true, som spesifiserer om en dumpfil med JFR-data skal genereres når JVM avsluttes på en kontrollert måte.

4) Alternativene knyttet til begrenset transaksjonsminne (RTM) er ikke lenger eksperimentelle. Disse alternativene inkluderer -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt og -XX:+UseRTMLocking.

5) I Java 8 er Application Class Data Sharing (AppCDS) introdusert. AppCDS utvider CDS (Class Data Sharing) for å gjøre det mulig å plassere klasser fra standard utvidelseskataloger og applikasjonsklassebanen i det delte arkivet. Dette er en kommersiell funksjon og regnes ikke lenger som eksperimentell.

6) Nye alternativer -XX:+ResourceManagement og -XX:ResourceManagementSampleInterval=verdi er lagt til.

7) Ytterligere informasjon om store sider er lagt til. Store sider, også kjent som enorme sider, er minnesider som er betydelig større enn standard minnesidestørrelse. Store sider optimaliserer prosessorens oversettelsesbuffere. Linux-alternativene -XX:+UseHugeTLBFS, -XX:+UseSHM og -XX:+UseTransparentHugePages er dokumentert.

8) Alternativet -XX:ObjectAlignmentInBytes=alignment er dokumentert.

JJS verktøy

1) Alternativet --optimistic-types=[true|false] er lagt til. Den aktiverer eller deaktiverer optimistiske antakelser med deoptimerende rekompilering.

2) Alternativet --language=[es5] er lagt til jjs-verktøyet. Den spesifiserer ECMAScript-språkversjonen.

Javapackager-verktøy

1) Nye argumenter er tilgjengelige for OS X-buntere. Argumentet mac.CFBundleVersion identifiserer det interne versjonsnummeret som skal brukes.

2) Argumentet mac.dmg.simple indikerer om DMG-tilpasningstrinn som er avhengig av å kjøre AppleScript-kode, hoppes over.

Jcmd verktøy

Jcmd-verktøyet brukes til å samhandle dynamisk med Java Flight Recorder (JFR). Du kan bruke den til å låse opp kommersielle funksjoner, aktivere/starte/stoppe flyopptak og hente ulike statusmeldinger fra systemet.

Jstat-verktøy

Jstat-verktøyet er oppdatert med informasjon om komprimert klasserom som er en spesiell del av metaspace.

Virtuell maskin

Scalable Native Memory Tracking HotSpot VM-funksjonen hjelper til med å diagnostisere VM-minnelekkasjer og avklare brukere når minnelekkasjer ikke er i VM. Native Memory Tracker kan kjøres uten selvavslutning på store systemer og uten å forårsake en betydelig ytelsespåvirkning utover det som anses som akseptabelt for små programmer.