logo

Java 8-funktioner

Oracle släppte en ny version av Java som Java 8 den 18 mars 2014. Det var en revolutionerande version av Java för mjukvaruutvecklingsplattform. Den innehåller olika uppgraderingar av Java-programmering, JVM, verktyg och bibliotek.

Java 8 förbättringar av programmeringsspråk

Java 8 tillhandahåller följande funktioner för Java-programmering:

  • Lambda uttryck,
  • Metodreferenser,
  • Funktionella gränssnitt,
  • Stream API,
  • Standardmetoder,
  • Base64 Encode Decode,
  • Statiska metoder i gränssnitt,
  • Valfri klass,
  • Samlarklass,
  • ForEach()-metoden,
  • Rhino JavaScript Engine,
  • Parallell Array Sortering,
  • Skriv och repetera kommentarer,
  • IO-förbättringar,
  • Samtidighetsförbättringar,
  • JDBC-förbättringar etc.

Lambda uttryck

Lambda uttryck hjälper oss att skriva vår kod i funktionell stil. Det ger ett tydligt och kortfattat sätt att implementera SAM-gränssnitt (Single Abstract Method) genom att använda ett uttryck. Det är mycket användbart i samlingsbibliotek där det hjälper till att iterera, filtrera och extrahera data.

För mer information och exempel: Klicka här


Metodreferenser

Java 8 Metodreferens används för att referera metod för funktionellt gränssnitt. Det är kompakt och lätt form av lambda uttryck. Varje gång du använder lambda-uttryck för att bara hänvisa till en metod, kan du ersätta ditt lambda-uttryck med metodreferens.

För mer information och exempel: Klicka här


Funktionellt gränssnitt

Ett gränssnitt som bara innehåller en abstrakt metod kallas funktionellt gränssnitt. Det kan ha valfritt antal standardmetoder och statiska metoder. Det kan också deklarera metoder för objektklass.

Funktionella gränssnitt är också kända som Single Abstract Method Interfaces (SAM Interfaces).

För mer information och exempel: Klicka här


Frivillig

Java introducerade en ny klass Valfri i Java 8. Det är en offentlig slutklass som används för att hantera NullPointerException i Java-applikationen. Vi måste importera java.util paket för att använda den här klassen. Den tillhandahåller metoder för att kontrollera närvaron av värde för en viss variabel.

För mer information och exempel: Klicka här


för varje

Java tillhandahåller en ny metod forEach() för att iterera elementen. Det definieras i Iterable- och Stream-gränssnitt.

Det är en standardmetod som definieras i Iterable-gränssnittet. Samlingsklasser som utökar Iterable-gränssnittet kan använda metoden forEach() för att iterera element.

Denna metod tar en enda parameter som är ett funktionellt gränssnitt. Så du kan skicka lambdauttryck som ett argument.

För mer information och exempel: Klicka här


Datum/tid API

Java har introducerat ett nytt Date and Time API sedan Java 8. Java.time-paketet innehåller Java 8 Date and Time-klasser.

För mer information och exempel: Klicka här


Standardmetoder

Java tillhandahåller en möjlighet att skapa standardmetoder i gränssnittet. Metoder som är definierade i gränssnittet och taggade med standard nyckelord är kända som standardmetoder. Dessa metoder är icke-abstrakta metoder och kan ha metodkropp.

För mer information och exempel: klicka här


Rhino JavaScript-motor

Nashorn är en JavaScript-motor. Den används för att köra JavaScript-kod dynamiskt på JVM (Java Virtual Machine). Java tillhandahåller ett kommandoradsverktyg etc som används för att köra JavaScript-kod.

Du kan köra JavaScript-kod på två sätt:

  1. Använda jjs kommandoradsverktyg och
  2. Genom att bädda in i Java-källkod.

För mer information och exempel: klicka här


StringJoiner

Java lade till en ny slutklass StringJoiner i java.util-paketet. Den används för att konstruera en sekvens av tecken separerade med en avgränsare. Nu kan du skapa en sträng genom att skicka avgränsare som komma(,), bindestreck(-) etc.

jämförelse av lejon och tiger

För mer information och exempel: klicka här


Samlare

Collectors är en sista klass som utökar objektklassen. Det tillhandahåller reduktionsoperationer, såsom att ackumulera element i samlingar, sammanfatta element enligt olika kriterier etc.

För mer information och exempel: Klicka här


Stream API

Java 8 java.util.stream-paketet består av klasser, gränssnitt och en enum för att tillåta funktionella operationer på elementen. Den utför lat beräkning. Så det körs bara när det krävs.

För mer information och exempel: Klicka här


Strömfilter

Java-ström tillhandahåller en metod filter() för att filtrera strömelement på basis av ett givet predikat. Anta att du bara vill få jämna delar av din lista, du kan göra detta enkelt med hjälp av filter()-metoden.

Denna metod tar predikat som ett argument och returnerar en ström av resulterande element.

För mer information och exempel: Klicka här


Java Base64-kodning och avkodning

Java tillhandahåller en klass Base64 för att hantera kryptering och dekryptering. Du måste importera klassen java.util.Base64 i din källfil för att använda dess metoder.

Denna klass tillhandahåller tre olika kodare och avkodare för att kryptera information på varje nivå.

För mer information och exempel: Klicka här


Java Parallell Array Sortering

Java tillhandahåller en ny extra funktion i klassen Arrays som används för att sortera arrayelement parallellt. Metoden parallellSort() har lagts till i klassen java.util.Arrays som använder JSR 166 Fork/Join parallellism gemensam pool för att tillhandahålla sortering av arrayer. Det är en överbelastad metod.

För mer information och exempel: klicka här


Java 8 Säkerhetsförbättringar

1) Java Secure Socket Extension (JSSE)-leverantören aktiverar protokollen Transport Layer Security (TLS) 1.1 och TLS 1.2 som standard på klientsidan.

2) En förbättrad metod AccessController.doPrivileged har lagts till som gör det möjligt för kod att hävda en delmängd av dess privilegier, utan att förhindra att stacken går igenom hela stacken för att söka efter andra behörigheter.

3) Algoritmer för Advanced Encryption Standard (AES) och lösenordsbaserad kryptering (PBE), som PBEWithSHA256AndAES_128 och PBEWithSHA512AndAES_256 har lagts till SunJCE-leverantören.

4) Java Secure Socket Extension (SunJSSE) har aktiverat Server Name Indication (SNI)-tillägg för klientapplikationer som standard i JDK 7 och JDK 8 stöder SNI-tillägget för serverapplikationer. SNI-tillägget är en funktion som utökar SSL/TLS-protokollen för att indikera vilket servernamn klienten försöker ansluta till under handskakning.

5) SunJSSE har förbättrats för att stödja Authenticated Encryption with Associated Data (AEAD) algoritmer. Java Cryptography Extension (SunJCE)-leverantören är förbättrad för att stödja AES/GCM/NoPadding-chifferimplementering såväl som Galois/Counter Mode (GCM) algoritmparametrar.

6) En ny kommandoflagga -importpassword läggs till i nyckelverktygsverktyget. Den används för att acceptera ett lösenord och lagra det säkert som en hemlig nyckel. Klasser som java.security.DomainLoadStoreParameter och java.security.PKCS12Attribute läggs till för att stödja DKS-nyckellagringstyp.

7) I JDK 8 har de kryptografiska algoritmerna förbättrats med SHA-224-varianten av SHA-2-familjen av meddelandesammandragningsimplementeringar.

8) Förbättrat stöd för NSA Suite B Cryptography som inkluderar:

  • OID-registrering för NSA Suite B-krypteringsalgoritmer
  • Stöd för generering av 2048-bitars DSA-nyckelpar och ytterligare signaturalgoritmer för 2048-bitars DSA-nycklar som SHA224withDSA och SHA256withDSA.
  • Lyft av nyckelstorleksbegränsningen från 1024 till 2048 för Diffie-Hellman (DH) algoritm.

9) SecureRandom-klassen ger generering av kryptografiskt starka slumptal som används för privata eller publika nycklar, chiffer och signerade meddelanden. Metoden getInstanceStrong() introducerades i JDK 8, som returnerar en instans av den starkaste SecureRandom. Den bör användas när du behöver skapa RSA privat och publik nyckel. SecureRandom inkluderar följande andra ändringar:

  • Två nya implementeringar har introducerats för UNIX-plattformar, som ger blockerande och icke-blockerande beteende.

10) En ny klass PKIXRevocationChecker ingår som kontrollerar återkallningsstatusen för certifikat med PKIX-algoritmen. Den stöder kontroll av bästa ansträngning, kontroll av slutenhetscertifikat och mekanismspecifika alternativ.

11) Public Key Cryptography Standards 11 (PKCS) har utökats till att omfatta 64-bitars stöd för Windows.

12) Två nya rcache-typer läggs till i Kerberos 5. Typ none betyder ingen rcache alls, och typ dfl betyder DFL-stil filbaserad rcache. Dessutom stöds nu den begärda undernyckeln. De konfigureras med hjälp av systemegenskaperna sun.security.krb5.rcache och sun.security.krb5.acceptor.subkey.

13) I JDK 8 stöds Kerberos 5-protokollövergång och begränsad delegering inom samma område.

14) Java 8 har inaktiverat svag kryptering som standard. De DES-relaterade Kerberos 5-krypteringstyperna stöds inte som standard. Dessa krypteringstyper kan aktiveras genom att lägga till allow_weak_crypto=true i filen krb5.conf.

15) Du kan ställa in servernamnet till null för att beteckna en obunden server. Det betyder att en klient kan begära tjänsten med vilket servernamn som helst. Efter att ett sammanhang har upprättats kan servern hämta namnet som en förhandlad egenskap med nyckelnamnet SASL.BOUND_SERVER_NAME.

16) Java Native Interface (JNI)-brygga till inbyggd Java Generic Security Service (JGSS) stöds nu på Mac OS X. Du kan ställa in systemegenskapen sun.security.jgss.native till true för att aktivera den.

17) En ny systemegenskap, jdk.tls.ephemeralDHKeySize är definierad för att anpassa de tillfälliga DH-nyckelstorlekarna. Minsta acceptabla DH-nyckelstorlek är 1024 bitar, förutom exportbara chiffersviter eller äldre läge (jdk.tls.ephemeralDHKeySize=legacy).

18) Java Secure Socket Extension (JSSE)-leverantör respekterar klientens preferenser för chiffersvit som standard. Beteendet kan dock ändras för att respektera serverns chiffersvitspreferens genom att anropa SSLParameters.setUseCipherSuitesOrder(true) över servern.


Java 8-verktygsförbättringar

1) Ett jjs-kommando introduceras, som anropar Nashorn-motorn antingen i interaktivt skalläge eller för att tolka skriptfiler.

2) Java-kommandot kan starta JavaFX-applikationer, förutsatt att JavaFX-applikationen är korrekt paketerad.

3) Mansidan för java-kommandot (både nroff och HTML) har omarbetats helt. De avancerade alternativen är nu uppdelade i Runtime, Compiler, Garbage Collection och Serviceability, beroende på vilket område de påverkar. Flera tidigare saknade alternativ beskrivs nu. Det finns också en sektion för alternativ som har föråldrats eller tagits bort sedan den tidigare utgåvan.

skriva ut från java

4) Nytt kommandoradsverktyg för jdeps låter utvecklaren analysera klassfiler för att fastställa beroenden på paketnivå eller klassnivå.

5) Du kan komma åt diagnostiska kommandon på distans, som tidigare endast var tillgängliga lokalt via jcmd-verktyget. Fjärråtkomst tillhandahålls med Java Management Extensions (JMX), så diagnostiska kommandon exponeras för en MBean-plattform som är registrerad på MBean-plattformens server. MBean är gränssnittet com.sun.management.DiagnosticCommandMBean.

6) Ett nytt alternativ -tsapolicyid ingår i jarsigner-verktyget som gör att du kan begära en signerad tidsstämpel från en tidsstämpelmyndighet och bifoga den till en signerad JAR-fil.

7) En ny metod java.lang.reflect.Executable.getParameters ingår som låter dig komma åt namnen på de formella parametrarna för valfri metod eller konstruktor. Men .class-filer lagrar inte formella parameternamn som standard. För att lagra formella parameternamn i en viss .class-fil, och därmed göra det möjligt för Reflection API att hämta formella parameternamn, kompilera källfilen med alternativet -parameters i javac-kompilatorn.

8) Typreglerna för binära jämförelser i Java Language Specification (JLS) avsnitt 15.21 kommer nu att tillämpas korrekt av javac.

9) I den här versionen har apt-verktyget och dess associerade API som finns i paketet com.sun.mirror tagits bort.

Javadoc-förbättringar

I Java SE 8 lades följande nya API:er till Javadoc-verktyget.

  • Ett nytt DocTree API introducerar en skanner som gör att du kan gå igenom källkod som representeras av ett abstrakt syntaxträd. Detta utökar Compiler Tree API för att ge strukturerad åtkomst till innehållet i javadoc-kommentarer.
  • Paketet javax.tools innehåller klasser och gränssnitt som gör att du kan anropa Javadoc-verktyget direkt från en Java-applikation, utan att köra en ny process.
  • Avsnittet 'Metodsammanfattning' i den genererade dokumentationen för en klass eller gränssnitt har omstrukturerats. Metodbeskrivningarna i detta avsnitt är grupperade efter typ. Som standard listas alla metoder. Du kan klicka på en flik för att visa metoder av en viss typ (statisk, instans, abstrakt, konkret eller föråldrad, om de finns i klassen eller gränssnittet).
  • Javadoc-verktyget har nu stöd för att kontrollera innehållet i javadoc-kommentarer för problem som kan leda till olika problem, såsom ogiltig HTML eller tillgänglighetsproblem, i filerna som genereras av javadoc. Funktionen är aktiverad som standard och kan även styras av det nya alternativet -Xdoclint.

Pack200 Förbättringar

Java-klassfilformatet har uppdaterats på grund av JSR 292 som stöder dynamiskt typade språk på Java-plattformen.

Pack200-motorn har uppdaterats för att säkerställa att Java SE 8-klassfiler komprimeras effektivt. Nu kan den känna igen konstanta poolposter och nya bytekoder introducerade av JSR 292. Som ett resultat kommer komprimerade filer skapade med denna version av pack200-verktyget inte att vara kompatibla med äldre versioner av unpack200-verktyget.


Java 8 I/O-förbättringar

I Java 8 finns det flera förbättringar av java.nio.charset.Charset och utökade teckenuppsättningsimplementationer. Den innehåller följande:

  • En ny SelectorProvider som kan förbättra prestanda eller skalbarhet för servern. /dev/poll SelectorProvider fortsätter att vara standard. För att använda Solaris-händelseportmekanismen, kör med systemegenskapen java.nio.channels.spi.Selector inställd på värdet sun.nio.ch.EventPortSelectorProvider.
  • Storleken på filen /jre/lib/charsets.jar minskas.
  • Prestanda har förbättrats för java.lang.String(byte[], ∗)-konstruktorn och java.lang.String.getBytes()-metoden.

Java 8-nätverksförbättringar

1) En ny klass java.net.URLPermission har lagts till. Det representerar en behörighet för åtkomst till en resurs som definieras av en given URL.

2) Ett paket jdk.net har lagts till som innehåller plattformsspecifika uttagsalternativ och en mekanism för att ställa in dessa alternativ på alla standarduttagstyper. Socketalternativen definieras i jdk.net.ExtendedSocketOptions.

3) I klass HttpURLConnection, om en säkerhetshanterare är installerad, och om en metod anropas som resulterar i ett försök att öppna en anslutning, måste uppringaren ha antingen en 'connect'SocketPermission till värd/port-kombinationen av destinationsadressen eller en URLPermission som tillåter denna begäran.

Om automatisk omdirigering är aktiverad och denna begäran omdirigeras till en annan destination måste den som ringer också ha behörighet att ansluta till den omdirigerade värden/URL:n.


Java 8 Samtidighetsförbättringar

Paketet java.util.concurrent lade till två nya gränssnitt och fyra nya klasser.

Java.util.concurrent-gränssnitt

Gränssnitt Beskrivning
offentligt statiskt gränssnitt CompletableFuture.AsynchronousCompletionTask Det är ett markörgränssnitt som används för att identifiera asynkrona uppgifter som produceras med asynkronmetoder. Det kan vara användbart för övervakning, felsökning och spårning av asynkrona aktiviteter.
offentligt gränssnitt CompletionStage Den skapar ett stadium av en möjligen asynkron beräkning, som utför en åtgärd eller beräknar ett värde när ett annat CompletionStage slutförs.

Java.util.concurrent klasser

Klass Beskrivning
public class CompletableFuture utökar Objekt implementerar Future, CompletionStage Det är aFuture som explicit kan slutföras och kan användas som ett CompletionStage, som stödjer beroende funktioner och åtgärder som utlöses vid dess slutförande.
offentlig statisk klass ConcurrentHashMap.KeySetView utökar Objektimplementer Set, Serialiserbar Det är en vy av en ConcurrentHashMap som en uppsättning nycklar, där tillägg valfritt kan aktiveras genom att mappa till ett gemensamt värde.
public abstract class CountedCompleter utökar ForkJoinTask En ForkJoinTask med en slutförandeåtgärd som utförs när den utlöses och det finns inga återstående väntande åtgärder.
public class CompletionException utökar RuntimeException Det ger ett undantag när ett fel eller annat undantag påträffas under slutförandet av ett resultat eller en uppgift.

Nya metoder i klassen java.util.concurrent.ConcurrentHashMap

ConcurrentHashMap-klassen introducerar flera nya metoder i sin senaste version. Den innehåller olika forEach-metoder (forEach, forEachKey, forEachValue och forEachEntry), sökmetoder (sökning, söknycklar, sökvärden och sökinlägg) och ett stort antal reduktionsmetoder (reducera, reduceraToDouble, reduceToLong etc.). Andra olika metoder (mappingCount och newKeySet) har också lagts till.

Nya klasser i java.util.concurrent.atomic

Senaste utgåvan introducerar skalbart, uppdateringsbart, variabelt stöd genom en liten uppsättning nya klasser DoubleAccumulator, DoubleAdder, LongAccumulator ochLongAdder. Den använder internt tekniker för att reducera konflikter som ger enorma genomströmningsförbättringar jämfört med atomvariabler.

Klass Beskrivning
public class DoubleAccumulator utökar Nummer implementerar Serialiserbar Den används för en eller flera variabler som tillsammans upprätthåller ett löpande dubbelvärde uppdaterat med hjälp av en medföljande funktion.
public class DoubleAdder utökar Nummer implementerar Serialiserbar Den används för en eller flera variabler som tillsammans upprätthåller en initialt noll dubbelsumma.
public class LongAccumulator utökar Antal redskap Serialiserbar Den används för en eller flera variabler som tillsammans upprätthåller ett löpande långt värde uppdaterat med hjälp av en medföljande funktion.
public class LongAdder utökar Antal redskap Serialiserbar Den används för en eller flera variabler som tillsammans upprätthåller en från början noll lång summa.

Nya metoder i java.util.concurrent.ForkJoinPool Class

Den här klassen har lagt till två nya metoder getCommonPoolParallelism() och commonPool(), som returnerar den riktade parallellismnivån för den gemensamma poolen, respektive den gemensamma poolinstansen.

Metod Beskrivning
offentlig statisk ForkJoinPool commonPool() Den returnerar den gemensamma poolinstansen.
Public static int getCommonPoolParallelism() Den returnerar den riktade parallellitetsnivån för den gemensamma poolen.

Ny klass java.util.concurrent.locks.StampedLock

En ny klass StampedLock läggs till som används för att lägga till kapacitetsbaserat lås med tre lägen för att kontrollera läs-/skrivåtkomst (skriva, läsa och optimistisk läsning). Den här klassen stöder också metoder som villkorligt ger omvandlingar över de tre lägena.

Klass Beskrivning
public class StampedLock utökar Objektimplementer Serialiserbara Denna klass representerar ett kapacitetsbaserat lås med tre lägen för att kontrollera läs-/skrivåtkomst.

Java API för XML-bearbetning (JAXP) 1.6 Förbättringar

I Java 8 läggs Java API till för XML Processing (JAXP) 1.6. Det kräver användning av tjänsteleverantörens loader-funktion som definieras av java.util.ServiceLoader för att ladda tjänster från tjänstens konfigurationsfiler.

Skälet för detta är att möjliggöra framtida modularisering av Java SE-plattformen där tjänsteleverantörer kan distribueras på andra sätt än JAR-filer och kanske utan tjänstens konfigurationsfiler.


Java Virtual Machine Enhancements

Verifieringen av anropa specialinstruktioner har skärpts så att endast en instansinitieringsmetod i den aktuella klassen eller dess direkta superklass kan anropas.


Java Mission Control 5.3 ingår i Java 8

Java Mission Control (JMC) är en avancerad uppsättning verktyg som möjliggör effektiv och detaljerad dataanalys och levererar avancerad, diskret Java-övervakning och -hantering. JMC tillhandahåller avsnitt för vanliga analysområden som kodprestanda, minne och latens.

Babels språkpaket på japanska och förenklad kinesiska ingår nu som standard i Java Mission Control som ingår i JDK 8.


Java 8 Internationaliseringsförbättringar

1) Unicode-förbättringar

JDK 8 inkluderar stöd för Unicode 6.2.0. Den innehåller följande funktioner.

  • 733 nya karaktärer inklusive turkiska liras tecken.
  • 7 nya skript:
    • Meroitiska hieroglyfer
    • Meroitisk kursiv
    • Sora Sompeng
    • Chakma
    • Sharada
    • Takri
    • Miao
  • 11 nya block: inklusive 7 block för de nya skripten som anges ovan och 4 block för följande befintliga skript:
  • Arabiska Extended-A
  • Sundanesiska tillägg
  • Meeting Meek Extensions
  • Arabiska matematiska alfabetiska symboler

Användning av Unicode CLDR-data och java.locale.providers systemegenskap

Unicode-konsortiet har släppt projektet Common Locale Data Repository (CLDR) för att 'stödja världens språk, med det största och mest omfattande standardarkivet för lokaldata tillgängligt.' CLDR håller på att bli de-facto-standarden för lokaldata. CLDR:s XML-baserade lokaldata har införlivats i JDK 8-versionen, men den är inaktiverad som standard.

Det finns fyra distinkta källor för lokaldata:

  • CLDR representerar lokaldata som tillhandahålls av Unicode CLDR-projektet.
  • HOST representerar den aktuella användarens anpassning av det underliggande operativsystemets inställningar. Det fungerar bara med användarens standardlokal, och de anpassningsbara inställningarna kan variera beroende på operativsystemet, men i första hand stöds formaten datum, tid, nummer och valuta.
  • SPI representerar de platskänsliga tjänsterna som implementeras i de installerade SPI-leverantörerna.
  • JRE representerar lokaldata som är kompatibla med tidigare JRE-utgåvor.

Använd systemegenskapen java.locale.providers för att välja önskad lokaldatakälla. listar datakällorna i önskad ordning. Till exempel: java.locale.providers=HOST,SPI,CLDR,JRE Standardbeteendet motsvarar följande inställning: java.locale.providers=JRE,SPI


Java 8 Nya API:er för kalender och språk

JDK 8 innehåller två nya klasser, flera nya metoder och ett nytt returvärde för en befintlig statisk metod.

Två nya abstrakta klasser för tjänsteleverantörer läggs till i paketet java.util.spi.

Klass Beskrivning
public abstract class CalendarDataProvider utökar LocaleServiceProvider Det är en abstrakt klass för tjänsteleverantörer som tillhandahåller språkberoende kalenderparametrar.
public abstract class CalendarNameProvider utökar LocaleServiceProvider Det är en abstrakt klass för tjänsteleverantörer som tillhandahåller lokaliserade strängrepresentationer (visningsnamn) av kalenderfältvärden.

En statisk metod kan nu känna igen Locale.UNICODE_LOCALE_EXTENSION för numreringssystemet.

Metod Beskrivning
public static final DecimalFormatSymbols getInstance(Locale locale) Den används för att hämta DecimalFormatSymbols-instansen för den angivna lokalen. Den här metoden ger åtkomst till DecimalFormatSymbols-instanser för lokaler som stöds av själva Java-runtimen samt för de som stöds av installerade DecimalFormatSymbolsProvider-implementationer. Det kastar NullPointerException om locale är null.

Lade till nya metoder i kalenderns API:

Metod Beskrivning
public boolean isSupportedLocale(Locale locale) Det returnerar sant om den givna lokalen stöds av denna lokaltjänstleverantör. Den givna lokalen kan innehålla tillägg som bör beaktas för stödbestämning. Den definieras i klassen java.util.spi.LocaleServiceProvider
public String getCalendarType() Den returnerar kalendertypen för denna kalender. Kalendertyper definieras av Unicode Locale Data Markup Language (LDML)-specifikationen. Det definieras i klassen java.util.Calendar.

Nya stilspecifikationer läggs till för metoderna Calendar.getDisplayName och Calendar.getDisplayNames för att bestämma formatet för kalendernamnet.


Specifierare Beskrivning
offentlig statisk final int SHORT_FORMAT Det är en stilspecifikator för getDisplayName och getDisplayNames som anger ett kortnamn som används för format.
offentlig statisk final int LONG_FORMAT Det är en stilspecifikator för getDisplayName och getDisplayNames som indikerar ett långt namn som används för format.
offentlig statisk final int SHORT_STANDALONE Det är en stilspecifikator för getDisplayName och getDisplayNames som anger ett kort namn som används oberoende av varandra, till exempel en månadsförkortning som kalenderrubriker.
offentlig statisk final int LONG_STANDALONE Det är en stilspecifikation för getDisplayName och getDisplayNames som indikerar ett långt namn som används oberoende av varandra, till exempel ett månadsnamn som kalenderrubriker.

Två nya lokalmetoder för att hantera en lokals (valfria) tillägg.

Metod Beskrivning
public boolean hasExtensions() Den returnerar sant om den här lokalen har några tillägg.
public Locale stripExtensions() Den returnerar en kopia av denna språkversion utan tillägg. Om det här språket inte har några tillägg, returneras detta språk själv.

Två nya Locale.filter-metoder returnerar en lista med Locale-instanser som matchar de angivna kriterierna, enligt definitionen i RFC 4647:

Metod Beskrivning
offentligt statiskt listfilter (listprioritetslista, samlingslokaler) Den returnerar en lista över matchande Locale-instanser med hjälp av den filtreringsmekanism som definieras i RFC 4647. Detta motsvarar filter(List, Collection, FilteringMode) när läget är Locale.FilteringMode.AUTOSELECT_FILTERING.
offentligt statiskt listfilter (listprioritetslista, samlingslokaler, läget Locale.Filterläge) Den returnerar en lista över matchande Locale-instanser med den filtreringsmekanism som definieras i RFC 4647.

Två nya Locale.filterTags-metoder returnerar en lista med språktaggar som matchar de angivna kriterierna, enligt definitionen i RFC 4647.

Metod Beskrivning
public static List filterTags(List priorityList, Collection tags) Den returnerar en lista med matchande språktaggar med den grundläggande filtreringsmekanismen definierad i RFC 4647. Detta motsvarar filterTags(List, Collection, FilteringMode) när läget är Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags(List priorityList, Collection tags, Locale.FilteringMode mode) Den returnerar en lista med matchande språktaggar med den grundläggande filtreringsmekanismen som definieras i RFC 4647.

Två nya uppslagsmetoder returnerar den bäst matchande språk- eller språktaggen med hjälp av uppslagsmekanismen som definieras i RFC 4647.

Metod Beskrivning
offentlig statisk språksökning (lista prioritetslista, samlingsspråk) Den returnerar en Locale-instans för den bäst matchande språktaggen med hjälp av uppslagsmekanismen som definieras i RFC 4647.
Offentlig statisk sträng lookupTag (lista prioritetslista, samlingstaggar) Den returnerar den bäst matchande språktaggen med hjälp av uppslagsmekanismen som definieras i RFC 4647.

Andra Java 8-versionsförbättringar

Förbättringar i JDK 8u5

1) Frekvensen då säkerhetsuppmaningarna visas för en applikation har reducerats.


Förbättringar i JDK 8u11

1) Ett alternativ för att undertrycka erbjudanden från sponsorer när JRE är installerat eller uppdaterat är tillgängligt på fliken Avancerat på Java-kontrollpanelen.

2) Entry-Point-attributet kan inkluderas i JAR-filmanifestet för att identifiera en eller flera klasser som en giltig ingångspunkt för din RIA (Rich Internet-applikation).


Förbättringar i JDK 8u20

1) Javafxpackager-verktyget har bytt namn till javapackager. Detta verktyg har förbättrats med nya argument för fristående applikationsbuntare.

Följande förbättringar är relaterade till java-verktyget:

  • Ett experimentellt JIT-kompilatoralternativ relaterat till RTM (Restricted Transactional Memory) har lagts till.
  • Flera alternativ relaterade till strängdeduplicering har lagts till.
  • Flera alternativ relaterade till Advanced Encryption Standard (AES) inneboende har lagts till.
  • Kombinationer av alternativ för sophämtning har fasats ut.

2) Garbage Collection Tuning Guide har lagts till Java HotSpot Virtual Machine. Den beskriver sopsamlarna som ingår i Java HotSpot VM och hjälper dig att bestämma vilken sopsamlare som bäst kan optimera prestandan för din applikation, särskilt om den hanterar stora mängder data (flera gigabyte), har många trådar och har höga transaktionshastigheter .


Förbättringar i JDK 8u31

1) I den här versionen tas SSLv3-protokollet bort från Java-kontrollpanelens avancerade alternativ.


Förbättringar i JDK 8u40

Java-verktyg

1) -XX:+CheckEndorsedAndExtDirs har lagts till eftersom överstyrningsmekanismen för godkända standarder (JDK-8065675) och förlängningsmekanismen (JDK-8065702) har fasats ut. Alternativet hjälper till att identifiera eventuella befintliga användningar av dessa mekanismer och stöds i JDK 7u80 och JDK 8u40.

2) Java Flight Recorder (JFR) erbjuder en mängd olika sätt att låsa upp kommersiella funktioner och aktivera JFR under körning av en applikation.

Den innehåller java kommandoradsalternativ som jcmd diagnostiska kommandon och grafiska användargränssnitt (GUI) kontroller inom Java Mission Control. Denna flexibilitet gör att du kan tillhandahålla lämpliga alternativ vid start, eller interagera med JFR senare.

3) Alternativet -XX:StartFlightRecording=parameter=värde har en ny parameter, dumponexit=true, som specificerar om en dumpfil med JFR-data ska genereras när JVM avslutas på ett kontrollerat sätt.

4) Alternativen relaterade till RTM (Restricted Transactional Memory) är inte längre experimentella. Dessa alternativ inkluderar -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt och -XX:+UseRTMLocking.

5) I Java 8 har Application Class Data Sharing (AppCDS) introducerats. AppCDS utökar CDS (Class Data Sharing) för att möjliggöra att klasser från standardtilläggskatalogerna och applikationsklasssökvägen kan placeras i det delade arkivet. Detta är en kommersiell funktion och anses inte längre vara experimentell.

6) Nya alternativ -XX:+ResourceManagement och -XX:ResourceManagementSampleInterval=värde har lagts till.

7) Ytterligare information om stora sidor har lagts till. Stora sidor, även känd som enorma sidor, är minnessidor som är betydligt större än standardminnets sidstorlek. Stora sidor optimerar processorns översättningsbuffertar. Linux-alternativen -XX:+UseHugeTLBFS, -XX:+UseSHM och -XX:+UseTransparentHugePages har dokumenterats.

8) Alternativet -XX:ObjectAlignmentInBytes=alignment har dokumenterats.

JJS verktyg

1) Alternativet --optimistic-types=[true|false] har lagts till. Den aktiverar eller inaktiverar optimistiska antaganden med deoptimerande omkompilering.

2) Alternativet --language=[es5] har lagts till i jjs-verktyget. Den anger ECMAScript-språkversionen.

Javapackager-verktyg

1) Nya argument är tillgängliga för OS X-buntare. Argumentet mac.CFBundleVersion identifierar det interna versionsnumret som ska användas.

2) Argumentet mac.dmg.simple indikerar om DMG-anpassningssteg som är beroende av exekvering av AppleScript-kod hoppas över.

Jcmd verktyg

Jcmd-verktyget används för att dynamiskt interagera med Java Flight Recorder (JFR). Du kan använda den för att låsa upp kommersiella funktioner, aktivera/starta/stoppa flyginspelningar och få olika statusmeddelanden från systemet.

Jstat-verktyg

Verktyget jstat har uppdaterats med information om komprimerat klassutrymme som är en speciell del av metaspace.

java få aktuellt datum

Virtuell maskin

Funktionen Scalable Native Memory Tracking HotSpot VM hjälper till att diagnostisera VM-minnesläckor och förtydliga användare när minnesläckor inte finns i VM:n. Native Memory Tracker kan köras utan självavstängning på stora system och utan att orsaka en betydande prestandapåverkan utöver vad som anses acceptabelt för små program.