logo

Java 8 funktioner

Oracle udgav en ny version af Java som Java 8 i marts 18, 2014. Det var en revolutionerende udgivelse af Java til softwareudviklingsplatformen. Det inkluderer forskellige opgraderinger til Java-programmering, JVM, værktøjer og biblioteker.

Java 8-programmeringssprogsforbedringer

Java 8 giver følgende funktioner til Java-programmering:

  • Lambda udtryk,
  • Metodereferencer,
  • Funktionelle grænseflader,
  • Stream API,
  • Standard metoder,
  • Base64 Encode Decode,
  • Statiske metoder i interface,
  • Valgfri klasse,
  • Samler klasse,
  • ForEach() metode,
  • Rhino JavaScript Engine,
  • Parallel Array Sortering,
  • Indtast og gentag anmærkninger,
  • IO-forbedringer,
  • Samtidig forbedringer,
  • JDBC-forbedringer osv.

Lambda udtryk

Lambda-udtryk hjælper os med at skrive vores kode i funktionel stil. Det giver en klar og kortfattet måde at implementere SAM-grænseflade (Single Abstract Method) ved at bruge et udtryk. Det er meget nyttigt i samlingsbiblioteket, hvor det hjælper med at iterere, filtrere og udtrække data.

For mere information og eksempler: Klik her


Metodereferencer

Java 8 Metodereference bruges til at henvise metode til funktionel grænseflade. Det er kompakt og let form for lambda udtryk. Hver gang du bruger lambda-udtryk til blot at henvise til en metode, kan du erstatte dit lambda-udtryk med metodereference.

For mere information og eksempler: Klik her


Funktionel grænseflade

En grænseflade, der kun indeholder én abstrakt metode, er kendt som funktionel grænseflade. Det kan have et hvilket som helst antal standard- og statiske metoder. Det kan også erklære metoder for objektklasse.

Funktionelle grænseflader er også kendt som Single Abstract Method Interfaces (SAM Interfaces).

For mere information og eksempler: Klik her


Valgfri

Java introducerede en ny klasse Valgfri i Java 8. Det er en offentlig afsluttende klasse, som bruges til at håndtere NullPointerException i Java-applikationen. Vi skal importere java.util pakke for at bruge denne klasse. Det giver metoder til at kontrollere tilstedeværelsen af ​​værdi for en bestemt variabel.

For mere information og eksempler: Klik her


for hver

Java giver en ny metode forEach() til at iterere elementerne. Det er defineret i Iterable- og Stream-grænseflader.

Det er en standardmetode, der er defineret i Iterable-grænsefladen. Samlingsklasser, der udvider Iterable-grænsefladen, kan bruge forEach()-metoden til at iterere elementer.

Denne metode tager en enkelt parameter, som er en funktionel grænseflade. Så du kan sende lambda-udtryk som et argument.

For mere information og eksempler: Klik her


Dato/tid API

Java har introduceret en ny Date and Time API siden Java 8. Java.time-pakken indeholder Java 8 Date and Time klasser.

For mere information og eksempler: Klik her


Standardmetoder

Java giver mulighed for at oprette standardmetoder inde i grænsefladen. Metoder, der er defineret i grænsefladen og tagget med standardnøgleord, er kendt som standardmetoder. Disse metoder er ikke-abstrakte metoder og kan have metodetekst.

For mere information og eksempler: klik her


Rhino JavaScript Engine

Nashorn er en JavaScript-motor. Det bruges til at udføre JavaScript-kode dynamisk på JVM (Java Virtual Machine). Java giver et kommandolinjeværktøj etc som bruges til at udføre JavaScript-kode.

Du kan udføre JavaScript-kode på to måder:

  1. Brug af jjs kommandolinjeværktøj, og
  2. Ved at indlejre i Java-kildekode.

For mere information og eksempler: klik her


StringJoiner

Java tilføjede en ny sidste klasse StringJoiner i java.util-pakken. Det bruges til at konstruere en sekvens af tegn adskilt af et skilletegn. Nu kan du oprette en streng ved at sende skilletegn som komma(,), bindestreg(-) osv.

java boolesk

For mere information og eksempler: klik her


Samlere

Collectors er en sidste klasse, der udvider objektklassen. Det giver reduktionsoperationer, såsom at akkumulere elementer i samlinger, opsummere elementer i henhold til forskellige kriterier osv.

For mere information og eksempler: Klik her


Stream API

Java 8 java.util.stream-pakken består af klasser, grænseflader og en enum for at tillade funktionelle handlinger på elementerne. Den udfører doven beregning. Så det udføres kun, når det kræver det.

For mere information og eksempler: Klik her


Stream filter

Java-stream giver et metodefilter() til at filtrere strømelementer på basis af et givet prædikat. Antag, at du kun ønsker at få lige elementer af din liste, kan du gøre dette nemt ved hjælp af filter() metoden.

Denne metode tager prædikatet som et argument og returnerer en strøm af resulterende elementer.

For mere information og eksempler: Klik her


Java Base64-kodning og afkodning

Java leverer en klasse Base64 til at håndtere kryptering og dekryptering. Du skal importere java.util.Base64-klassen i din kildefil for at bruge dens metoder.

Denne klasse giver tre forskellige indkodere og dekodere til at kryptere information på hvert niveau.

For mere information og eksempler: Klik her


Java Parallel Array Sortering

Java giver en ny ekstra funktion i Arrays-klassen, som bruges til at sortere array-elementer parallelt. ParallelSort()-metoden er tilføjet til java.util.Arrays-klassen, der bruger JSR 166 Fork/Join-parallelisme fælles pool til at give sortering af arrays. Det er en overbelastet metode.

For mere information og eksempler: klik her


Java 8 sikkerhedsforbedringer

1) Java Secure Socket Extension (JSSE)-udbyderen aktiverer protokollerne Transport Layer Security (TLS) 1.1 og TLS 1.2 som standard på klientsiden.

2) En forbedret metode AccessController.doPrivileged er blevet tilføjet, som gør det muligt for kode at hævde et undersæt af dets privilegier, uden at forhindre fuld gennemgang af stakken for at tjekke for andre tilladelser.

3) Advanced Encryption Standard (AES) og Password-Based Encryption (PBE) algoritmer, såsom PBEWithSHA256AndAES_128 og PBEWithSHA512AndAES_256 er blevet tilføjet til SunJCE-udbyderen.

4) Java Secure Socket Extension (SunJSSE) har aktiveret Server Name Indication (SNI)-udvidelsen til klientapplikationer som standard i JDK 7, og JDK 8 understøtter SNI-udvidelsen til serverapplikationer. SNI-udvidelsen er en funktion, der udvider SSL/TLS-protokollerne for at angive, hvilket servernavn klienten forsøger at oprette forbindelse til under handshaking.

5) SunJSSE er forbedret til at understøtte Authenticated Encryption with Associated Data (AEAD) algoritmer. Java Cryptography Extension (SunJCE)-udbyderen er forbedret til at understøtte AES/GCM/NoPadding-chifferimplementering samt Galois/Counter Mode (GCM) algoritmeparametre.

6) Et nyt kommandoflag -importpassword tilføjes til nøgleværktøjet. Den bruges til at acceptere en adgangskode og gemme den sikkert som en hemmelig nøgle. Klasser såsom java.security.DomainLoadStoreParameter ogjava.security.PKCS12Attribute tilføjes for at understøtte DKS-nøglelagertypen.

7) I JDK 8 er de kryptografiske algoritmer blevet forbedret med SHA-224-varianten af ​​SHA-2-familien af ​​message-digest implementeringer.

8) Forbedret understøttelse af NSA Suite B Cryptography, som inkluderer:

  • OID registrering for NSA Suite B kryptografialgoritmer
  • Understøttelse af 2048-bit DSA-nøglepargenerering og yderligere signaturalgoritmer til 2048-bit DSA-nøgler såsom SHA224withDSA og SHA256withDSA.
  • Ophævelse af nøglestørrelsesbegrænsningen fra 1024 til 2048 for Diffie-Hellman (DH) algoritme.

9) SecureRandom-klassen giver generering af kryptografisk stærke tilfældige tal, som bruges til private eller offentlige nøgler, ciphers og signerede meddelelser. Metoden getInstanceStrong() blev introduceret i JDK 8, som returnerer en forekomst af den stærkeste SecureRandom. Den skal bruges, når du skal oprette RSA privat og offentlig nøgle. SecureRandom inkluderer følgende andre ændringer:

indeks over listen
  • To nye implementeringer er introduceret til UNIX-platforme, som giver blokerende og ikke-blokerende adfærd.

10) En ny PKIXRevocationChecker-klasse er inkluderet, som kontrollerer tilbagekaldelsesstatus for certifikater med PKIX-algoritmen. Det understøtter kontrol af den bedste indsats, kontrol af slutentitetscertifikater og mekanismespecifikke muligheder.

11) Public Key Cryptography Standards 11 (PKCS) er blevet udvidet til at omfatte 64-bit understøttelse af Windows.

12) To nye rcache-typer er tilføjet til Kerberos 5. Type none betyder slet ingen rcache, og type dfl betyder den filbaserede rcache i DFL-stil. Også den acceptoranmodede undernøgle er nu understøttet. De konfigureres ved hjælp af systemegenskaberne sun.security.krb5.rcache og sun.security.krb5.acceptor.subkey.

13) I JDK 8 understøttes Kerberos 5-protokolovergang og begrænset delegering inden for samme område.

14) Java 8 har som standard deaktiveret svag kryptering. De DES-relaterede Kerberos 5-krypteringstyper understøttes ikke som standard. Disse krypteringstyper kan aktiveres ved at tilføje allow_weak_crypto=true i filen krb5.conf.

15) Du kan indstille servernavnet til null for at angive en ubundet server. Det betyder, at en klient kan anmode om tjenesten ved hjælp af et hvilket som helst servernavn. Efter en kontekst er etableret, kan serveren hente navnet som en forhandlet ejendom med nøglenavnet SASL.BOUND_SERVER_NAME.

16) Java Native Interface (JNI) bro til native Java Generic Security Service (JGSS) understøttes nu på Mac OS X. Du kan indstille systemegenskaben sun.security.jgss.native til true for at aktivere den.

17) En ny systemegenskab, jdk.tls.ephemeralDHKeySize, er defineret for at tilpasse de flygtige DH-nøglestørrelser. Den mindst acceptable DH-nøglestørrelse er 1024 bit, undtagen for eksporterbare krypteringspakker eller ældre tilstand (jdk.tls.ephemeralDHKeySize=legacy).

18) Java Secure Socket Extension (JSSE) udbyder respekterer klientens præference for krypteringssuite som standard. Adfærden kan dog ændres for at respektere serverens krypteringspakkepræference ved at kalde SSLParameters.setUseCipherSuitesOrder(true) over serveren.


Java 8 Værktøjsforbedringer

1) En jjs-kommando introduceres, som aktiverer Nashorn-motoren enten i interaktiv shell-tilstand eller for at fortolke scriptfiler.

2) Java-kommandoen er i stand til at starte JavaFX-applikationer, forudsat at JavaFX-applikationen er pakket korrekt.

3) Java-kommandoman-siden (både nroff og HTML) er blevet fuldstændig omarbejdet. De avancerede muligheder er nu opdelt i Runtime, Compiler, Garbage Collection og Serviceability, alt efter det område, de påvirker. Flere tidligere manglende muligheder er nu beskrevet. Der er også en sektion for muligheder, der er blevet forældet eller fjernet siden den forrige udgivelse.

4) Nyt jdeps kommandolinjeværktøj gør det muligt for udvikleren at analysere klassefiler for at bestemme afhængigheder på pakkeniveau eller klasseniveau.

5) Du kan få fjernadgang til diagnostiske kommandoer, som tidligere kun var tilgængelige lokalt via jcmd-værktøjet. Fjernadgang gives ved hjælp af Java Management Extensions (JMX), så diagnostiske kommandoer eksponeres for en platform MBean, der er registreret til platformens MBean server. MBean er com.sun.management.DiagnosticCommandMBean-grænsefladen.

6) En ny mulighed -tsapolicyid er inkluderet i jarsigner-værktøjet, som gør det muligt for dig at anmode om et underskrevet tidsstempel fra en tidsstemplingsmyndighed og vedhæfte det til en underskrevet JAR-fil.

7) En ny metode java.lang.reflect.Executable.getParameters er inkluderet, som giver dig adgang til navnene på de formelle parametre for enhver metode eller konstruktør. Men .class-filer gemmer ikke formelle parameternavne som standard. For at gemme formelle parameternavne i en bestemt .class-fil og dermed gøre det muligt for Reflection API at hente formelle parameternavne, kompilér kildefilen med -parameters-indstillingen i javac-kompileren.

8) Typereglerne for binære sammenligninger i Java Language Specification (JLS) afsnit 15.21 vil nu blive korrekt håndhævet af javac.

9) I denne udgivelse er apt-værktøjet og dets tilhørende API indeholdt i pakken com.sun.mirror blevet fjernet.

Javadoc-forbedringer

I Java SE 8 blev følgende nye API'er tilføjet til Javadoc-værktøjet.

  • En ny DocTree API introducerer en scanner, som gør det muligt for dig at krydse kildekode, der er repræsenteret af et abstrakt syntakstræ. Dette udvider Compiler Tree API til at give struktureret adgang til indholdet af javadoc-kommentarer.
  • Javax.tools-pakken indeholder klasser og grænseflader, der gør dig i stand til at starte Javadoc-værktøjet direkte fra en Java-applikation uden at udføre en ny proces.
  • Sektionen 'Metodeoversigt' i den genererede dokumentation for en klasse eller grænseflade er blevet omstruktureret. Metodebeskrivelser i dette afsnit er grupperet efter type. Som standard er alle metoder angivet. Du kan klikke på en fane for at se metoder af en bestemt type (statisk, instans, abstrakt, konkret eller forældet, hvis de findes i klassen eller grænsefladen).
  • Javadoc-værktøjet har nu understøttelse til at kontrollere indholdet af javadoc-kommentarer for problemer, der kan føre til forskellige problemer, såsom ugyldig HTML eller tilgængelighedsproblemer, i de filer, der genereres af javadoc. Funktionen er aktiveret som standard og kan også styres af den nye -Xdoclint-indstilling.

Pakke200 Forbedringer

Java-klassens filformat er blevet opdateret på grund af JSR 292, som understøtter dynamisk indtastede sprog på Java-platformen.

Pack200-motoren er blevet opdateret for at sikre, at Java SE 8-klassefiler komprimeres effektivt. Nu kan den genkende konstante pool-indgange og nye bytekoder introduceret af JSR 292. Som et resultat vil komprimerede filer, der er oprettet med denne version af pack200-værktøjet, ikke være kompatible med ældre versioner af unpack200-værktøjet.


Java 8 I/O-forbedringer

I Java 8 er der flere forbedringer til java.nio.charset.Charset og udvidede tegnsætimplementeringer. Det omfatter følgende:

  • En ny SelectorProvider, som kan forbedre ydeevne eller skalerbarhed for serveren. /dev/poll SelectorProvider er fortsat standard. For at bruge Solaris-hændelsesportmekanismen skal du køre med systemegenskaben java.nio.channels.spi.Selector indstillet til værdien sun.nio.ch.EventPortSelectorProvider.
  • Størrelsen på filen /jre/lib/charsets.jar er reduceret.
  • Ydeevnen er blevet forbedret for java.lang.String(byte[], ∗)-konstruktøren og java.lang.String.getBytes()-metoden.

Java 8-netværksforbedringer

1) En ny klasse java.net.URLPermission er blevet tilføjet. Det repræsenterer en tilladelse til at få adgang til en ressource defineret af en given URL.

2) Der er tilføjet en pakke jdk.net, som indeholder platformsspecifikke socket muligheder og en mekanisme til indstilling af disse muligheder på alle standard socket typer. Socket mulighederne er defineret i jdk.net.ExtendedSocketOptions.

3) I klasse HttpURLConnection, hvis en sikkerhedsmanager er installeret, og hvis der kaldes en metode, som resulterer i et forsøg på at åbne en forbindelse, skal den, der ringer, have enten en 'connect'SocketPermission til vært/port-kombinationen af ​​destinations-URL'en eller en URLPermission, der tillader denne anmodning.

Hvis automatisk omdirigering er aktiveret, og denne anmodning omdirigeres til en anden destination, skal den, der ringer, også have tilladelse til at oprette forbindelse til den omdirigerede vært/URL.


Java 8 samtidighedsforbedringer

Java.util.concurrent-pakken tilføjede to nye grænseflader og fire nye klasser.

Java.util.concurrent grænseflader

Interface Beskrivelse
offentlig statisk grænseflade CompletableFuture.AsynchronousCompletionTask Det er en markørgrænseflade, som bruges til at identificere asynkrone opgaver, der er produceret af asynkrone metoder. Det kan være nyttigt til overvågning, fejlretning og sporing af asynkrone aktiviteter.
offentlig grænseflade CompletionStage Det opretter en fase af en muligvis asynkron beregning, der udfører en handling eller beregner en værdi, når en anden CompletionStage fuldfører.

Java.util.concurrent klasser

Klasse Beskrivelse
public class CompletableFuture udvider Objekt implementerer Future, CompletionStage Det er aFuture, der eksplicit kan afsluttes og kan bruges som et CompletionStage, der understøtter afhængige funktioner og handlinger, der udløses ved fuldførelsen.
offentlig statisk klasse ConcurrentHashMap.KeySetView udvider Objektimplementer Set, Serialiserbar Det er en visning af et ConcurrentHashMap som et sæt nøgler, hvor tilføjelser eventuelt kan aktiveres ved at tilknytte en fælles værdi.
offentlig abstrakt klasse CountedCompleter udvider ForkJoinTask En ForkJoinTask med en fuldførelseshandling udført, når den udløses, og der er ingen resterende afventende handlinger.
public class CompletionException udvider RuntimeException Det kaster en undtagelse, når der opstår en fejl eller anden undtagelse i løbet af fuldførelsen af ​​et resultat eller en opgave.

Nye metoder i klassen java.util.concurrent.ConcurrentHashMap

ConcurrentHashMap-klassen introducerer flere nye metoder i sin seneste udgivelse. Det omfatter forskellige forHver-metoder (forHver, forHverKey, forHverVærdi og forHverEntry), søgemetoder (søgning, søgenøgler, søgeværdier og søgeindtastninger) og et stort antal reduktionsmetoder (reducer, reducerToDouble, reducerToLong osv.). Andre forskellige metoder (mappingCount og newKeySet) er også blevet tilføjet.

Nye klasser i java.util.concurrent.atomic

Seneste udgivelse introducerer skalerbar, opdaterbar, variabel support gennem et lille sæt nye klasser DoubleAccumulator, DoubleAdder, LongAccumulator ogLongAdder. Det anvender internt stridsreduktionsteknikker, der giver enorme gennemstrømningsforbedringer sammenlignet med atomvariabler.

Klasse Beskrivelse
offentlig klasse DoubleAccumulator udvider Nummer implementerer Serialiserbar Den bruges til en eller flere variable, der tilsammen opretholder en kørende dobbeltværdi opdateret ved hjælp af en medfølgende funktion.
offentlig klasse DoubleAdder udvider Nummer implementerer Serialiserbar Den bruges til en eller flere variable, der tilsammen opretholder en initialt nul dobbeltsum.
offentlig klasse LongAccumulator udvider Antal redskaber Serialiserbar Den bruges til en eller flere variable, der tilsammen opretholder en løbende lang værdi opdateret ved hjælp af en medfølgende funktion.
offentlig klasse LongAdder udvider Antal redskaber Serialiserbar Det bruges til en eller flere variable, der tilsammen opretholder en i starten nul lang sum.

Nye metoder i java.util.concurrent.ForkJoinPool Class

Denne klasse har tilføjet to nye metoder getCommonPoolParallelism() og commonPool(), som returnerer det målrettede parallelitetsniveau for henholdsvis den fælles pool eller den fælles pool-instans.

Metode Beskrivelse
offentlig statisk ForkJoinPool commonPool() Det returnerer den fælles pool-instans.
Offentlig statisk int getCommonPoolParallelism() Det returnerer det målrettede parallelitetsniveau for den fælles pulje.

Ny klasse java.util.concurrent.locks.StampedLock

En ny klasse StampedLock er tilføjet, som bruges til at tilføje kapacitetsbaseret lås med tre tilstande til styring af læse-/skriveadgang (skrivning, læsning og optimistisk læsning). Denne klasse understøtter også metoder, der betinget giver konverteringer på tværs af de tre tilstande.

Klasse Beskrivelse
offentlig klasse StampedLock udvider Objektimplementer Serialiserbar Denne klasse repræsenterer en kapacitetsbaseret lås med tre tilstande til styring af læse-/skriveadgang.

Java API til XML-behandling (JAXP) 1.6 Forbedringer

I Java 8 er Java API tilføjet til XML Processing (JAXP) 1.6. Det kræver brug af tjenesteudbyderens loader-facilitet, som er defineret af java.util.ServiceLoader for at indlæse tjenester fra tjenestekonfigurationsfiler.

Begrundelsen for dette er at give mulighed for fremtidig modularisering af Java SE-platformen, hvor tjenesteudbydere kan implementeres på andre måder end JAR-filer og måske uden tjenestekonfigurationsfilerne.


Java Virtual Machine Enhancements

Verifikationen af ​​påkalde særlige instruktioner er blevet strammet, så kun en instansinitialiseringsmetode i den aktuelle klasse eller dens direkte superklasse kan påberåbes.


Java Mission Control 5.3 er inkluderet i Java 8

Java Mission Control (JMC) er et avanceret sæt værktøjer, der muliggør effektiv og detaljeret dataanalyse og leverer avanceret, diskret Java-overvågning og -styring. JMC leverer sektioner til almindelige analyseområder såsom kodeydeevne, hukommelse og latens.

hvordan man opgraderer java

Babel-sprogpakker på japansk og forenklet kinesisk er nu inkluderet som standard i Java Mission Control, der er inkluderet i JDK 8.


Java 8 Internationaliseringsforbedringer

1) Unicode-forbedringer

JDK 8 inkluderer understøttelse af Unicode 6.2.0. Den indeholder følgende funktioner.

  • 733 nye karakterer inklusive tyrkisk lira-tegn.
  • 7 nye scripts:
    • Meroitiske hieroglyffer
    • Meroitisk Kursiv
    • Sora Sompeng
    • Chakma
    • Sharada
    • Takri
    • Miao
  • 11 nye blokke: inklusive 7 blokke til de nye scripts ovenfor og 4 blokke til følgende eksisterende scripts:
  • Arabisk Extended-A
  • Sundanesisk tillæg
  • Meeting Meek Extensions
  • Arabiske matematiske alfabetiske symboler

Adoption af Unicode CLDR Data og java.locale.providers System Property

Unicode-konsortiet har udgivet projektet Common Locale Data Repository (CLDR) for at 'understøtte verdens sprog, med det største og mest omfattende standardlager af lokaldata til rådighed.' CLDR er ved at blive de-facto-standarden for lokaldata. CLDR's XML-baserede lokalitetsdata er blevet indarbejdet i JDK 8-udgivelsen, men det er deaktiveret som standard.

Der er fire forskellige kilder til lokalitetsdata:

  • CLDR repræsenterer lokalitetsdataene leveret af Unicode CLDR-projektet.
  • HOST repræsenterer den aktuelle brugers tilpasning af det underliggende operativsystems indstillinger. Det fungerer kun med brugerens standardlokalitet, og de tilpassede indstillinger kan variere afhængigt af operativsystemet, men primært formater for dato, klokkeslæt, tal og valuta understøttes.
  • SPI repræsenterer de lokalitetsfølsomme tjenester implementeret i de installerede SPI-udbydere.
  • JRE repræsenterer de lokalitetsdata, der er kompatible med de tidligere JRE-udgivelser.

For at vælge den ønskede lokalitetsdatakilde skal du bruge java.locale.providers-systemegenskaben. liste datakilderne i den foretrukne rækkefølge. For eksempel: java.locale.providers=HOST,SPI,CLDR,JRE Standardadfærden svarer til følgende indstilling: java.locale.providers=JRE,SPI


Java 8 Nye Kalender og Locale API'er

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

To nye abstrakte klasser for tjenesteudbydere er tilføjet til java.util.spi-pakken.

Klasse Beskrivelse
public abstract class CalendarDataProvider udvider LocaleServiceProvider Det er en abstrakt klasse for tjenesteudbydere, der leverer lokalitetsafhængige kalenderparametre.
public abstract class CalendarNameProvider udvider LocaleServiceProvider Det er en abstrakt klasse for tjenesteudbydere, der leverer lokaliserede strengrepræsentationer (visningsnavne) af kalenderfeltværdier.

En statisk metode er nu i stand til at genkende Locale.UNICODE_LOCALE_EXTENSION for nummereringssystemet.

Metode Beskrivelse
public static final DecimalFormatSymbols getInstance(Locale locale) Det bruges til at hente DecimalFormatSymbols-forekomsten for den angivne landestandard. Denne metode giver adgang til DecimalFormatSymbols-instanser for lokaliteter, der understøttes af selve Java-runtimen, samt for dem, der understøttes af installerede DecimalFormatSymbolsProvider-implementeringer. Det kaster NullPointerException, hvis locale er null.

Tilføjet nye metoder i kalender API:

Metode Beskrivelse
public boolean isSupportedLocale(Locale locale) Det returnerer sandt, hvis den givne lokalitet understøttes af denne lokalitetstjenesteudbyder. Den givne lokalitet kan indeholde udvidelser, der bør tages i betragtning ved støttebestemmelsen. Det er defineret i klassen java.util.spi.LocaleServiceProvider
offentlig streng getCalendarType() Det returnerer kalendertypen for denne kalender. Kalendertyper er defineret af Unicode Locale Data Markup Language (LDML)-specifikationen. Det er defineret i klassen java.util.Calendar.

Nye stilspecifikationer tilføjes til metoderne Calendar.getDisplayName og Calendar.getDisplayNames for at bestemme formatet på kalendernavnet.


Specifikator Beskrivelse
offentlig statisk endelig int SHORT_FORMAT Det er en stilspecifikation for getDisplayName og getDisplayNames, der angiver et kort navn, der bruges til format.
offentlig statisk endelig int LONG_FORMAT Det er en stilspecifikation for getDisplayName og getDisplayNames, der angiver et langt navn, der bruges til format.
offentlig statisk endelig int SHORT_STANDALONE Det er en stilspecifikation for getDisplayName og getDisplayNames, der angiver et kort navn, der bruges uafhængigt, såsom en månedsforkortelse som kalenderoverskrifter.
offentlig statisk finale int LONG_STANDALONE Det er en stilspecifikation for getDisplayName og getDisplayNames, der angiver et langt navn, der bruges uafhængigt, såsom et månedsnavn som kalenderoverskrifter.

To nye lokalitetsmetoder til at håndtere en lokalitets (valgfri) udvidelser.

Metode Beskrivelse
public boolean hasExtensions() Det returnerer sandt, hvis denne lokalitet har nogen udvidelser.
public Locale stripExtensions() Det returnerer en kopi af denne lokalitet uden udvidelser. Hvis denne lokalitet ikke har nogen udvidelser, returneres denne lokalitet selv.

To nye Locale.filter-metoder returnerer en liste over Locale-forekomster, der matcher de angivne kriterier, som defineret i RFC 4647:

Metode Beskrivelse
offentlig statisk listefilter (listeprioritetsliste, samlingslokaliteter) Det returnerer en liste over matchende Locale-instanser ved hjælp af filtreringsmekanismen defineret i RFC 4647. Dette svarer til filter(List, Collection, FilteringMode), når tilstanden er Locale.FilteringMode.AUTOSELECT_FILTERING.
offentligt statisk listefilter (Listeprioritetsliste, Samlingslokaliteter, Locale.Filtertilstandstilstand) Det returnerer en liste over matchende Locale-forekomster ved hjælp af filtreringsmekanismen defineret i RFC 4647.

To nye Locale.filterTags-metoder returnerer en liste over sprogtags, der matcher de angivne kriterier, som defineret i RFC 4647.

Metode Beskrivelse
offentlige statiske listefilterTags(listeprioritetsliste, samlingstags) Det returnerer en liste over matchende sprog-tags ved hjælp af den grundlæggende filtreringsmekanisme defineret i RFC 4647. Dette svarer til filterTags(List, Collection, FilteringMode), når tilstanden er Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags (Listeprioritetsliste, Samlingstags, Locale.FilteringMode-tilstand) Det returnerer en liste over matchende sprog-tags ved hjælp af den grundlæggende filtreringsmekanisme defineret i RFC 4647.

To nye opslagsmetoder returnerer det bedst matchende lokalitet eller sprogtag ved hjælp af opslagsmekanismen defineret i RFC 4647.

Metode Beskrivelse
offentlig statisk lokalitetsopslag (listeprioritetsliste, samlingslokaliteter) Det returnerer en Locale-instans for det bedst matchende sprogtag ved hjælp af opslagsmekanismen defineret i RFC 4647.
Offentlig statisk String lookupTag (Liste prioritetsliste, Samling tags) Det returnerer det bedst matchende sprogtag ved hjælp af opslagsmekanismen defineret i RFC 4647.

Andre Java 8-versionsforbedringer

Forbedringer i JDK 8u5

1) Hyppigheden, hvormed sikkerhedsmeddelelserne vises for en applikation, er blevet reduceret.


Forbedringer i JDK 8u11

1) En mulighed for at undertrykke tilbud fra sponsorer, når JRE er installeret eller opdateret, er tilgængelig på fanen Avanceret i Java-kontrolpanelet.

2) Entry-Point-attributten kan inkluderes i JAR-filmanifestet for at identificere en eller flere klasser som et gyldigt indgangspunkt for din RIA (Rich Internet-applikation).


Forbedringer i JDK 8u20

1) Javafxpackager-værktøjet er blevet omdøbt til javapackager. Dette værktøj er blevet forbedret med nye argumenter for selvstændige applikationsbundtere.

Følgende forbedringer er relateret til java-værktøjet:

  • En eksperimentel JIT-kompileringsmulighed relateret til Restricted Transactional Memory (RTM) er blevet tilføjet.
  • Flere muligheder relateret til strengdeduplikering er blevet tilføjet.
  • Adskillige muligheder relateret til Advanced Encryption Standard (AES) egenskaber er blevet tilføjet.
  • Kombinationer af muligheder for affaldsindsamling er blevet forældet.

2) Garbage Collection Tuning Guide er blevet tilføjet til Java HotSpot Virtual Machine. Den beskriver de skraldeopsamlere, der følger med Java HotSpot VM og hjælper dig med at beslutte, hvilken skraldeopsamler der bedst kan optimere ydeevnen af ​​din applikation, især hvis den håndterer store mængder data (flere gigabyte), har mange tråde og har høje transaktionsrater .


Forbedringer i JDK 8u31

1) I denne udgivelse er SSLv3-protokollen fjernet fra Java-kontrolpanelets avancerede indstillinger.


Forbedringer i JDK 8u40

Java værktøj

1) -XX:+CheckEndorsedAndExtDirs er blevet tilføjet, fordi den godkendte standardtilsidesættelsesmekanisme (JDK-8065675) og forlængelsesmekanismen (JDK-8065702) er blevet forældet. Indstillingen hjælper med at identificere eksisterende anvendelser af disse mekanismer og understøttes i JDK 7u80 og JDK 8u40.

2) Java Flight Recorder (JFR) tilbyder en række måder at låse op for kommercielle funktioner og aktivere JFR i løbet af en applikation.

Det inkluderer java-kommandolinjeindstillinger såsom jcmd-diagnosekommandoer og grafiske brugergrænseflade-kontroller (GUI) i Java Mission Control. Denne fleksibilitet giver dig mulighed for at give de passende muligheder ved opstart eller interagere med JFR senere.

3) Valgmuligheden -XX:StartFlightRecording=parameter=værdi har en ny parameter, dumponexit=true, som specificerer, om en dumpfil med JFR-data skal genereres, når JVM'en afsluttes på en kontrolleret måde.

4) Mulighederne relateret til Restricted Transactional Memory (RTM) er ikke længere eksperimentelle. Disse muligheder 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) blevet introduceret. AppCDS udvider CDS (Class Data Sharing) for at gøre det muligt at placere klasser fra standardudvidelsesbibliotekerne og applikationsklassestien i det delte arkiv. Dette er en kommerciel funktion og betragtes ikke længere som eksperimenterende.

6) Nye muligheder -XX:+ResourceManagement og -XX:ResourceManagementSampleInterval=værdi er blevet tilføjet.

7) Yderligere information om store sider er tilføjet. Store sider, også kendt som enorme sider, er hukommelsessider, der er betydeligt større end standard hukommelsessidestørrelse. Store sider optimerer processorens oversættelses-lookaside-buffere. Linux-indstillingerne -XX:+UseHugeTLBFS, -XX:+UseSHM og -XX:+UseTransparentHugePages er blevet dokumenteret.

8) Muligheden -XX:ObjectAlignmentInBytes=alignment er blevet dokumenteret.

JJS værktøj

1) Indstillingen --optimistic-types=[sand|false] er blevet tilføjet. Det aktiverer eller deaktiverer optimistiske antagelser med deoptimerende rekompilering.

2) Indstillingen --language=[es5] er blevet tilføjet til jjs-værktøjet. Det specificerer ECMAScript-sprogversionen.

Javapackager værktøj

1) Nye argumenter er tilgængelige for OS X-bundlere. Argumentet mac.CFBundleVersion identificerer det interne versionsnummer, der skal bruges.

2) Argumentet mac.dmg.simple angiver, om DMG-tilpasningstrin, der afhænger af udførelse af AppleScript-kode, springes over.

Jcmd værktøj

Jcmd-værktøjet bruges til dynamisk at interagere med Java Flight Recorder (JFR). Du kan bruge den til at låse op for kommercielle funktioner, aktivere/starte/stoppe flyoptagelser og få forskellige statusmeddelelser fra systemet.

Jstat værktøj

Jstat-værktøjet er blevet opdateret med information om komprimeret klasserum, som er en særlig del af metaspace.

Virtuel maskine

Funktionen Scalable Native Memory Tracking HotSpot VM hjælper med at diagnosticere VM-hukommelseslækager og afklare brugere, når hukommelseslækager ikke er i VM'en. Native Memory Tracker kan køres uden selvlukning på store systemer og uden at forårsage en væsentlig indvirkning på ydeevnen ud over, hvad der anses for acceptabelt for små programmer.