logo

Característiques de Java 8

Oracle va llançar una nova versió de Java com a Java 8 el 18 de març de 2014. Va ser una versió revolucionària de la plataforma de desenvolupament de programari Java. Inclou diverses actualitzacions de la programació Java, JVM, eines i biblioteques.

Millores del llenguatge de programació Java 8

Java 8 ofereix les següents característiques per a la programació Java:

  • Expressions lambda,
  • Referències de mètodes,
  • Interfícies funcionals,
  • API de flux,
  • Mètodes per defecte,
  • Descodificació de codificació Base64,
  • Mètodes estàtics a la interfície,
  • Classe opcional,
  • Classe de col·leccionistes,
  • mètode ForEach(),
  • Motor de JavaScript de Rhino,
  • Ordenació de matrius paral·leles,
  • Tipus i repetició d'anotacions,
  • Millores d'IO,
  • Millores de concurrència,
  • Millores de JDBC, etc.

Expressions Lambda

L'expressió lambda ens ajuda a escriure el nostre codi amb un estil funcional. Proporciona una manera clara i concisa d'implementar la interfície SAM (Mètode abstracte únic) mitjançant una expressió. És molt útil a la biblioteca de col·leccions en la qual ajuda a iterar, filtrar i extreure dades.

Per a més informació i exemples: clica aquí


Referències de mètodes

La referència del mètode Java 8 s'utilitza per fer referència al mètode de la interfície funcional. És una forma compacta i fàcil d'expressió lambda. Cada vegada que utilitzeu una expressió lambda només per referir-vos a un mètode, podeu substituir la vostra expressió lambda per una referència de mètode.

Per a més informació i exemples: clica aquí


Interfície funcional

Una interfície que conté només un mètode abstracte es coneix com a interfície funcional. Pot tenir qualsevol nombre de mètodes per defecte i estàtics. També pot declarar mètodes de classe d'objectes.

Les interfícies funcionals també es coneixen com a interfícies de mètode abstracte únic (SAM Interfaces).

Per a més informació i exemples: clica aquí


Opcional

Java va introduir una nova classe Opcional a Java 8. És una classe final pública que s'utilitza per fer front a NullPointerException a l'aplicació Java. Hem d'importar java.util paquet per utilitzar aquesta classe. Proporciona mètodes per comprovar la presència de valor per a una variable concreta.

Per a més informació i exemples: clica aquí


per cadascú

Java proporciona un nou mètode per a cada () per iterar els elements. Es defineix a les interfícies Iterable i Stream.

És un mètode predeterminat definit a la interfície Iterable. Les classes de col·lecció que estenen la interfície iterable poden utilitzar el mètode forEach() per iterar elements.

Aquest mètode pren un únic paràmetre que és una interfície funcional. Per tant, podeu passar l'expressió lambda com a argument.

Per a més informació i exemples: clica aquí


API de data/hora

Java ha introduït una nova API de data i hora des de Java 8. El paquet java.time conté classes de data i hora de Java 8.

Per a més informació i exemples: clica aquí


Mètodes per defecte

Java proporciona una facilitat per crear mètodes predeterminats dins de la interfície. Els mètodes que es defineixen dins de la interfície i etiquetats amb la paraula clau predeterminada es coneixen com a mètodes per defecte. Aquests mètodes són mètodes no abstractes i poden tenir un cos de mètode.

Per a més informació i exemples: feu clic aquí


Motor JavaScript de Rhino

Nashorn és un motor JavaScript. S'utilitza per executar codi JavaScript de manera dinàmica a JVM (Java Virtual Machine). Java proporciona una eina de línia d'ordres etc que s'utilitza per executar codi JavaScript.

Podeu executar codi JavaScript de dues maneres:

  1. Utilitzant l'eina de línia d'ordres jjs i
  2. Incrustant al codi font de Java.

Per a més informació i exemples: feu clic aquí


StringJoiner

Java ha afegit una nova classe final StringJoiner al paquet java.util. S'utilitza per construir una seqüència de caràcters separats per un delimitador. Ara, podeu crear una cadena passant delimitadors com la coma (,), el guionet (-), etc.

jocs de missatges amb Android

Per a més informació i exemples: feu clic aquí


Col·leccionistes

Collectors és una classe final que amplia la classe Object. Proporciona operacions de reducció, com ara acumular elements en col·leccions, resumir elements segons diversos criteris, etc.

Per a més informació i exemples: clica aquí


API Stream

El paquet Java 8 java.util.stream consta de classes, interfícies i una enumeració per permetre operacions d'estil funcional sobre els elements. Realitza càlculs mandrosos. Per tant, només s'executa quan ho requereix.

Per a més informació i exemples: clica aquí


Filtre de flux

El flux Java proporciona un mètode filter() per filtrar els elements del flux en funció del predicat donat. Suposem que només voleu obtenir elements parells de la vostra llista, podeu fer-ho fàcilment amb l'ajuda del mètode filter().

Aquest mètode pren el predicat com a argument i retorna un flux d'elements resultants.

Per a més informació i exemples: clica aquí


Codificació i descodificació Java Base64

Java proporciona una classe Base64 per fer front al xifratge i el desxifrat. Heu d'importar la classe java.util.Base64 al vostre fitxer font per utilitzar els seus mètodes.

Aquesta classe proporciona tres codificadors i descodificadors diferents per xifrar la informació a cada nivell.

Per a més informació i exemples: clica aquí


Ordenació de matrius paral·leles de Java

Java proporciona una nova característica addicional a la classe Arrays que s'utilitza per ordenar elements de matriu de manera paral·lela. El mètode parallelSort() s'ha afegit a la classe java.util.Arrays que utilitza l'agrupació comuna de paral·lelisme Fork/Join JSR 166 per proporcionar ordenació de matrius. És un mètode sobrecarregat.

Per a més informació i exemples: feu clic aquí


Millores de seguretat de Java 8

1) El proveïdor de Java Secure Socket Extension (JSSE) activa els protocols Transport Layer Security (TLS) 1.1 i TLS 1.2 de manera predeterminada al costat del client.

2) S'ha afegit un mètode millorat AccessController.doPrivileged que permet al codi afirmar un subconjunt dels seus privilegis, sense impedir el recorregut complet de la pila per comprovar si hi ha altres permisos.

3) S'han afegit algorismes de xifratge avançat (AES) i xifratge basat en contrasenyes (PBE), com ara PBEWithSHA256AndAES_128 i PBEWithSHA512AndAES_256 al proveïdor SunJCE.

4) L'extensió de sòcol segur de Java (SunJSSE) ha habilitat l'extensió d'indicació de nom de servidor (SNI) per a les aplicacions de client de manera predeterminada a JDK 7 i JDK 8 admet l'extensió SNI per a aplicacions de servidor. L'extensió SNI és una característica que amplia els protocols SSL/TLS per indicar a quin nom de servidor s'està intentant connectar el client durant l'enllaç.

5) El SunJSSE s'ha millorat per donar suport als algorismes de xifratge autenticat amb dades associades (AEAD). El proveïdor d'extensió de criptografia de Java (SunJCE) s'ha millorat per admetre la implementació de xifratge AES/GCM/NoPadding, així com els paràmetres de l'algoritme Galois/Counter Mode (GCM).

6) S'afegeix una nova marca d'ordre -importpassword a la utilitat keytool. S'utilitza per acceptar una contrasenya i emmagatzemar-la de manera segura com a clau secreta. S'afegeixen classes com ara java.security.DomainLoadStoreParameter i java.security.PKCS12Attribute per admetre el tipus de magatzem de claus DKS.

7) Al JDK 8, els algorismes criptogràfics s'han millorat amb la variant SHA-224 de la família SHA-2 d'implementacions de resum de missatges.

8) Suport millorat per a la criptografia NSA Suite B que inclou:

  • Registre d'OID per als algorismes de criptografia NSA Suite B
  • Compatibilitat per a la generació de parells de claus DSA de 2048 bits i algorismes de signatura addicionals per a claus DSA de 2048 bits, com ara SHA224withDSA i SHA256withDSA.
  • Aixecament de la restricció de mida de clau de 1024 a 2048 per a l'algorisme Diffie-Hellman (DH).

9) La classe SecureRandom proporciona la generació de números aleatoris criptogràficament forts que s'utilitzen per a claus públiques o privades, xifrats i missatges signats. El mètode getInstanceStrong() es va introduir a JDK 8, que retorna una instància del SecureRandom més fort. S'ha d'utilitzar quan necessiteu crear una clau privada i pública RSA. SecureRandom inclou altres canvis següents:

conversió de tipus i emissió en java
  • S'han introduït dues noves implementacions per a plataformes UNIX, que proporcionen un comportament de bloqueig i no bloqueig.

10) S'inclou una nova classe PKIXRevocationChecker que verifica l'estat de revocació dels certificats amb l'algoritme PKIX. Admet la comprovació del millor esforç, la comprovació de certificats d'entitat final i opcions específiques del mecanisme.

11) Els estàndards de criptografia de clau pública 11 (PKCS) s'han ampliat per incloure suports de 64 bits per a Windows.

12) S'afegeixen dos nous tipus de rcache a Kerberos 5. El tipus none significa que no hi ha cap rcache, i el tipus dfl significa el rcache basat en fitxers d'estil DFL. A més, ara s'admet la subclau sol·licitada per l'acceptador. Es configuren mitjançant les propietats del sistema sun.security.krb5.rcache i sun.security.krb5.acceptor.subkey.

13) A JDK 8, la transició del protocol Kerberos 5 i la delegació restringida s'admeten dins del mateix regne.

14) Java 8 ha desactivat el xifratge feble per defecte. Els tipus de xifratge Kerberos 5 relacionats amb DES no s'admeten de manera predeterminada. Aquests tipus de xifratge es poden activar afegint allow_weak_crypto=true al fitxer krb5.conf.

15) Podeu definir el nom del servidor com a null per indicar un servidor no vinculat. Significa que un client pot sol·licitar el servei utilitzant qualsevol nom de servidor. Un cop establert un context, el servidor pot recuperar el nom com a propietat negociada amb el nom de clau SASL.BOUND_SERVER_NAME.

16) El pont de la interfície nativa de Java (JNI) amb el servei de seguretat genèric de Java nadiu (JGSS) ara és compatible amb Mac OS X. Podeu establir la propietat del sistema sun.security.jgss.native a true per habilitar-lo.

17) Es defineix una nova propietat del sistema, jdk.tls.ephemeralDHKeySize per personalitzar les mides de clau DH efímeres. La mida mínima acceptable de clau DH és de 1024 bits, excepte per a les suites de xifratge exportables o el mode heretat (jdk.tls.ephemeralDHKeySize=legacy).

18) El proveïdor de Java Secure Socket Extension (JSSE) respecta la preferència de la suite de xifratge del client de manera predeterminada. Tanmateix, el comportament es pot canviar per respectar la preferència de la suite de xifratge del servidor cridant a SSLParameters.setUseCipherSuitesOrder(true) a través del servidor.


Millores d'eines de Java 8

1) S'introdueix una ordre jjs, que invoca el motor Nashorn ja sigui en mode d'intèrpret d'ordres interactiu o per interpretar fitxers d'script.

2) L'ordre java és capaç de llançar aplicacions JavaFX, sempre que l'aplicació JavaFX estigui empaquetada correctament.

3) La pàgina man de l'ordre java (tant nroff com HTML) s'ha reelaborat completament. Les opcions avançades ara es divideixen en temps d'execució, compilador, recollida d'escombraries i capacitat de servei, segons l'àrea que afecten. Ara es descriuen diverses opcions que abans faltaven. També hi ha una secció per a les opcions que estaven obsoletes o eliminades des de la versió anterior.

4) La nova eina de línia d'ordres jdeps permet al desenvolupador analitzar fitxers de classe per determinar les dependències a nivell de paquet o de classe.

5) Podeu accedir a les ordres de diagnòstic de forma remota, que abans només eren accessibles localment mitjançant l'eina jcmd. L'accés remot es proporciona mitjançant les extensions de gestió de Java (JMX), de manera que les ordres de diagnòstic estan exposades a un MBean de plataforma registrat al servidor MBean de plataforma. El MBean és la interfície com.sun.management.DiagnosticCommandMBean.

6) S'inclou una nova opció -tsapolicyid a l'eina jarsigner que us permet sol·licitar un segell de temps signat a una autoritat de segell de temps i adjuntar-lo a un fitxer JAR signat.

7) S'inclou un nou mètode java.lang.reflect.Executable.getParameters que us permet accedir als noms dels paràmetres formals de qualsevol mètode o constructor. Tanmateix, els fitxers .class no emmagatzemen noms de paràmetres formals per defecte. Per emmagatzemar noms de paràmetres formals en un fitxer .class concret i, per tant, habilitar l'API de reflexió per recuperar noms de paràmetres formals, compileu el fitxer font amb l'opció -parameters del compilador javac.

8) Les regles de tipus per a comparacions binàries a la secció 15.21 de l'especificació del llenguatge Java (JLS) ara seran aplicades correctament per javac.

9) En aquesta versió, l'eina apt i la seva API associada continguda al paquet com.sun.mirror s'han eliminat.

Millores de Javadoc

A Java SE 8, es van afegir les noves API següents a l'eina Javadoc.

  • Una nova API de DocTree introdueix un escàner que us permet recórrer el codi font que està representat per un arbre de sintaxi abstracta. Això amplia l'API de l'arbre del compilador per proporcionar accés estructurat al contingut dels comentaris javadoc.
  • El paquet javax.tools conté classes i interfícies que us permeten invocar l'eina Javadoc directament des d'una aplicació Java, sense executar un procés nou.
  • La secció 'Resum del mètode' de la documentació generada d'una classe o interfície s'ha reestructurat. Les descripcions dels mètodes d'aquesta secció s'agrupen per tipus. Per defecte, s'enumeren tots els mètodes. Podeu fer clic a una pestanya per veure mètodes d'un tipus determinat (estàtic, d'instància, abstracte, concret o obsolet, si existeixen a la classe o a la interfície).
  • L'eina javadoc ara té suport per comprovar el contingut dels comentaris javadoc per problemes que puguin provocar diversos problemes, com ara problemes d'accessibilitat o HTML no vàlid, als fitxers generats per javadoc. La funció està habilitada per defecte i també es pot controlar amb la nova opció -Xdoclint.

Millores de Pack200

El format de fitxer de classe Java s'ha actualitzat a causa de JSR 292, que admet llenguatges d'escriptura dinàmica a la plataforma Java.

El motor Pack200 s'ha actualitzat per garantir que els fitxers de classe Java SE 8 es comprimeixin de manera eficaç. Ara, pot reconèixer entrades constants d'agrupació i nous codis de bytes introduïts per JSR 292. Com a resultat, els fitxers comprimits creats amb aquesta versió de l'eina pack200 no seran compatibles amb les versions anteriors de l'eina unpack200.


Millores d'E/S de Java 8

A Java 8, hi ha diverses millores a les implementacions java.nio.charset.Charset i al conjunt de caràcters ampliat. Inclou el següent:

  • Un nou SelectorProvider que pot millorar el rendiment o l'escalabilitat del servidor. El /dev/poll SelectorProvider continua sent el per defecte. Per utilitzar el mecanisme de port d'esdeveniments de Solaris, executeu-lo amb la propietat del sistema java.nio.channels.spi.Selector establerta en el valor sun.nio.ch.EventPortSelectorProvider.
  • La mida del fitxer /jre/lib/charsets.jar ha disminuït.
  • S'ha millorat el rendiment del constructor java.lang.String(byte[], ∗) i del mètode java.lang.String.getBytes().

Millores a la xarxa de Java 8

1) S'ha afegit una nova classe java.net.URLPermission. Representa un permís per accedir a un recurs definit per una URL determinada.

2) S'ha afegit un paquet jdk.net que conté opcions de sòcol específiques de la plataforma i un mecanisme per configurar aquestes opcions en tots els tipus de sòcol estàndard. Les opcions de socket es defineixen a jdk.net.ExtendedSocketOptions.

3) A la classe HttpURLConnection, si s'instal·la un gestor de seguretat i si s'anomena un mètode que provoca un intent d'obrir una connexió, la persona que truca ha de tenir un 'connect' SocketPermission a la combinació host/port de l'URL de destinació o un URLPermission que permet aquesta sol·licitud.

Si la redirecció automàtica està habilitada i aquesta sol·licitud es redirigeix ​​a una altra destinació, la persona que truca també ha de tenir permís per connectar-se a l'amfitrió/URL redirigit.


Millores de concurrència de Java 8

El paquet java.util.concurrent va afegir dues interfícies noves i quatre classes noves.

Interfícies Java.util.concurrent

Interfície Descripció
interfície estàtica pública CompletableFuture.AsynchronousCompletionTask És una interfície de marcador que s'utilitza per identificar tasques asíncrones produïdes per mètodes asíncrons. Pot ser útil per supervisar, depurar i fer el seguiment d'activitats asíncrones.
Interfície pública CompletionStage Crea una etapa d'un còmput possiblement asíncron, que realitza una acció o calcula un valor quan es completa un altre CompletionStage.

Classes Java.util.concurrent

Classe Descripció
classe pública CompletableFuture amplia Objecte implementa Future, CompletionStage És un Futur que es pot completar de manera explícita i es pot utilitzar com a Etapa de finalització, donant suport a les funcions i accions dependents que es desencadenen un cop finalitzada.
classe estàtica pública ConcurrentHashMap.KeySetView amplia Objecte implements Set, Serializable És una vista d'un ConcurrentHashMap com un conjunt de claus, en el qual les addicions es poden activar opcionalment mitjançant l'assignació d'un valor comú.
La classe abstracta pública CountedCompleter amplia ForkJoinTask Un ForkJoinTask amb una acció de finalització realitzada quan s'activa i no hi ha cap acció pendent.
la classe pública CompletionException amplia RuntimeException Llança una excepció quan es troba un error o una altra excepció en el curs de completar un resultat o una tasca.

Nous mètodes a la classe java.util.concurrent.ConcurrentHashMap

La classe ConcurrentHashMap introdueix diversos mètodes nous en la seva darrera versió. Inclou diversos mètodes forEach (forEach, forEachKey, forEachValue i forEachEntry), mètodes de cerca (cerca, searchKeys, searchValues ​​i searchEntries) i un gran nombre de mètodes de reducció (reduce, reduceToDouble, reduceToLong, etc.). També s'han afegit altres mètodes diversos (mappingCount i newKeySet).

Noves classes a java.util.concurrent.atomic

La darrera versió introdueix un suport escalable, actualitzable i variable mitjançant un petit conjunt de noves classes DoubleAccumulator, DoubleAdder, LongAccumulator iLongAdder. Utilitza internament tècniques de reducció de la contenció que proporcionen grans millores de rendiment en comparació amb les variables atòmiques.

Classe Descripció
La classe pública DoubleAccumulator amplia Number implementa Serialitzable S'utilitza per a una o més variables que en conjunt mantenen un valor doble en execució actualitzat mitjançant una funció subministrada.
La classe pública DoubleAdder amplia Number implementa Serializable S'utilitza per a una o més variables que juntes mantenen una suma doble inicialment zero.
La classe pública LongAccumulator amplia Number implementa Serialitzable S'utilitza per a una o més variables que en conjunt mantenen un valor llarg actualitzat mitjançant una funció subministrada.
La classe pública LongAdder amplia Number implementa Serialitzable S'utilitza per a una o més variables que en conjunt mantenen una suma llarga inicialment zero.

Nous mètodes a la classe java.util.concurrent.ForkJoinPool

Aquesta classe ha afegit dos nous mètodes getCommonPoolParallelism() i commonPool(), que retornen el nivell de paral·lelisme objectiu del grup comú o la instància del grup comú, respectivament.

Mètode Descripció
Public static ForkJoinPool commonPool() Retorna la instància del grup comú.
Public static int getCommonPoolParallelism() Retorna el nivell de paral·lelisme objectiu del grup comú.

Nova classe java.util.concurrent.locks.StampedLock

S'afegeix una nova classe StampedLock que s'utilitza per afegir un bloqueig basat en capacitats amb tres modes per controlar l'accés de lectura/escriptura (escriptura, lectura i lectura optimista). Aquesta classe també admet mètodes que proporcionen conversions condicionals en els tres modes.

Classe Descripció
La classe pública StampedLock amplia Objecte implementa Serialitzable Aquesta classe representa un bloqueig basat en capacitats amb tres modes per controlar l'accés de lectura/escriptura.

API de Java per al processament XML (JAXP) 1.6 Millores

A Java 8, s'afegeix l'API de Java per al processament XML (JAXP) 1.6. Requereix l'ús de la funció de carregador del proveïdor de serveis que està definida per java.util.ServiceLoader per carregar serveis des dels fitxers de configuració del servei.

La justificació d'això és permetre una futura modularització de la plataforma Java SE on els proveïdors de serveis es poden desplegar per mitjans diferents dels fitxers JAR i potser sense els fitxers de configuració del servei.


Millores de la màquina virtual de Java

La verificació de les instruccions invokespecial s'ha reforçat de manera que només es pot invocar un mètode d'inicialització d'instàncies de la classe actual o la seva superclasse directa.


Java Mission Control 5.3 s'inclou a Java 8

Java Mission Control (JMC) és un conjunt avançat d'eines que permet una anàlisi de dades eficient i detallada i ofereix un seguiment i una gestió de Java avançats i discrets. JMC proporciona seccions per a àrees comunes d'anàlisi com ara el rendiment del codi, la memòria i la latència.

entitat relacional

Els paquets d'idiomes de Babel en japonès i xinès simplificat ara s'inclouen de manera predeterminada al Java Mission Control que s'inclou al JDK 8.


Millores en la internacionalització de Java 8

1) Millores Unicode

El JDK 8 inclou suport per a Unicode 6.2.0. Conté les següents característiques.

  • 733 nous personatges, inclòs el signe de la lira turca.
  • 7 nous guions:
    • Jeroglífics meroítics
    • Cursiva meroítica
    • Sora Sompeng
    • Chakma
    • Sharada
    • Takri
    • Miao
  • 11 blocs nous: inclosos 7 blocs per als nous scripts esmentats anteriorment i 4 blocs per als següents scripts existents:
  • Àrab estès-A
  • Suplement Sundanès
  • Meeting Meek Extensions
  • Símbols alfabètics matemàtics àrabs

Adopció de les dades Unicode CLDR i la propietat del sistema java.locale.providers

El Consorci Unicode ha llançat el projecte Common Locale Data Repository (CLDR) per 'donar suport als idiomes del món, amb el dipòsit estàndard més gran i extens de dades de localització disponible'. El CLDR s'està convertint en l'estàndard de facto per a les dades locals. Les dades locals basades en XML del CLDR s'han incorporat a la versió JDK 8, però està desactivada per defecte.

Hi ha quatre fonts diferents de dades locals:

  • CLDR representa les dades regionals proporcionades pel projecte Unicode CLDR.
  • HOST representa la personalització de l'usuari actual de la configuració del sistema operatiu subjacent. Només funciona amb la configuració regional predeterminada de l'usuari i la configuració personalitzable pot variar en funció del sistema operatiu, però s'admeten principalment els formats de data, hora, número i moneda.
  • SPI representa els serveis sensibles a la configuració regional implementats als proveïdors SPI instal·lats.
  • JRE representa les dades locals que són compatibles amb les versions anteriors de JRE.

Per seleccionar la font de dades local desitjada, utilitzeu la propietat del sistema java.locale.providers. enumerant les fonts de dades en l'ordre preferit. Per exemple: java.locale.providers=HOST,SPI,CLDR,JRE El comportament per defecte és equivalent a la configuració següent: java.locale.providers=JRE,SPI


Java 8 Nou calendari i API de configuració regional

El JDK 8 inclou dues classes noves, diversos mètodes nous i un nou valor de retorn per a un mètode estàtic existent.

S'afegeixen dues classes abstractes noves per a proveïdors de serveis al paquet java.util.spi.

Classe Descripció
La classe abstracta pública CalendarDataProvider amplia LocaleServiceProvider És una classe abstracta per a proveïdors de serveis que proporcionen paràmetres de Calendar depenent de la configuració regional.
La classe abstracta pública CalendarNameProvider amplia LocaleServiceProvider És una classe abstracta per a proveïdors de serveis que proporcionen representacions de cadenes localitzades (noms de visualització) dels valors dels camps de Calendar.

Un mètode estàtic ara és capaç de reconèixer Locale.UNICODE_LOCALE_EXTENSION per al sistema de numeració.

Mètode Descripció
public static final DecimalFormatSymbols getInstance (localització local) S'utilitza per obtenir la instància DecimalFormatSymbols per a la configuració regional especificada. Aquest mètode proporciona accés a les instàncies de DecimalFormatSymbols per a les configuracions regionals suportades pel propi temps d'execució de Java, així com per a les que admeten les implementacions de DecimalFormatSymbolsProvider instal·lades. Llança NullPointerException si la configuració regional és nul·la.

S'han afegit nous mètodes a l'API de calendari:

Mètode Descripció
public boolean isSupportedLocale (localització local) Retorna true si aquest proveïdor de serveis de configuració regional admet la configuració regional. La configuració regional determinada pot contenir extensions que s'han de tenir en compte per determinar el suport. Es defineix a la classe java.util.spi.LocaleServiceProvider
cadena pública getCalendarType() Retorna el tipus de calendari d'aquest calendari. Els tipus de calendari es defineixen mitjançant l'especificació del llenguatge de marcat de dades de localització Unicode (LDML). Es defineix a la classe java.util.Calendar.

S'afegeixen nous especificadors d'estil per als mètodes Calendar.getDisplayName i Calendar.getDisplayNames per determinar el format del nom del calendari.


Especificador Descripció
public static final int SHORT_FORMAT És un especificador d'estil per a getDisplayName i getDisplayNames que indica un nom curt utilitzat per al format.
public static final int LONG_FORMAT És un especificador d'estil per a getDisplayName i getDisplayNames que indica un nom llarg utilitzat per al format.
public static final int SHORT_STANDALONE És un especificador d'estil per a getDisplayName i getDisplayNames que indica un nom curt utilitzat de manera independent, com ara una abreviatura de mes com a capçaleres de calendari.
public static final int LONG_STANDALONE És un especificador d'estil per a getDisplayName i getDisplayNames que indica un nom llarg utilitzat de manera independent, com ara un nom de mes com a capçaleres de calendari.

Dos nous mètodes de configuració regional per tractar les extensions (opcionals) d'una configuració regional.

Mètode Descripció
booleà públic hasExtensions() Retorna true si aquesta configuració regional té alguna extensió.
Public Locale stripExtensions() Retorna una còpia d'aquesta configuració regional sense extensions. Si aquesta configuració regional no té extensions, aquesta configuració regional es retorna.

Dos nous mètodes Locale.filter retornen una llista d'instàncies de Locale que coincideixen amb els criteris especificats, tal com es defineix a RFC 4647:

Mètode Descripció
Filtre de llista estàtic públic (Llista de prioritats de llista, localitzacions de col·lecció) Retorna una llista de les instàncies de la configuració regional coincidents mitjançant el mecanisme de filtratge definit a RFC 4647. Això és equivalent a filter(List, Collection, FilteringMode) quan el mode és Locale.FilteringMode.AUTOSELECT_FILTERING.
Filtre de llista estàtic públic (Llista de prioritats de la llista, localitzacions de col·lecció, mode Locale.Mode de filtratge) Retorna una llista de les instàncies de la configuració regional coincidents utilitzant el mecanisme de filtratge definit a RFC 4647.

Dos nous mètodes Locale.filterTags retornen una llista d'etiquetes d'idioma que coincideixen amb els criteris especificats, tal com es defineix a RFC 4647.

Mètode Descripció
public static List filterTags (Llista priorityList, etiquetes de col·lecció) Retorna una llista d'etiquetes d'idiomes coincidents mitjançant el mecanisme de filtratge bàsic definit a RFC 4647. Això és equivalent a filterTags(List, Collection, FilteringMode) quan el mode és Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags (Llista priorityList, etiquetes de col·lecció, mode Locale.FilteringMode) Retorna una llista d'etiquetes d'idiomes coincidents utilitzant el mecanisme de filtratge bàsic definit a RFC 4647.

Dos nous mètodes de cerca retornen la configuració regional o l'etiqueta d'idioma que millor coincideix amb el mecanisme de cerca definit a RFC 4647.

Mètode Descripció
Cerca de configuració regional estàtica pública (Llista de prioritats de llista, localitzacions de col·lecció) Retorna una instància de configuració regional per a l'etiqueta d'idioma que millor coincideix amb el mecanisme de cerca definit a RFC 4647.
Etiqueta de cerca de cadena estàtica pública (Llista de prioritats de llista, etiquetes de col·lecció) Retorna l'etiqueta d'idioma que millor coincideix utilitzant el mecanisme de cerca definit a RFC 4647.

Altres millores de la versió de Java 8

Millores a JDK 8u5

1) S'ha reduït la freqüència amb què es mostren les indicacions de seguretat d'una aplicació.


Millores a JDK 8u11

1) Una opció per suprimir les ofertes dels patrocinadors quan el JRE està instal·lat o actualitzat està disponible a la pestanya Avançat del tauler de control de Java.

2) L'atribut Entry-Point es pot incloure al manifest del fitxer JAR per identificar una o més classes com a punt d'entrada vàlid per a la vostra RIA (aplicació Rich Internet).


Millores a JDK 8u20

1) L'eina javafxpackager s'ha canviat de nom a javapackager. Aquesta eina s'ha millorat amb nous arguments per als paquets d'aplicacions autònoms.

Les millores següents estan relacionades amb l'eina java:

  • S'ha afegit una opció de compilador JIT experimental relacionada amb la memòria transaccional restringida (RTM).
  • S'han afegit diverses opcions relacionades amb la desduplicació de cadenes.
  • S'han afegit diverses opcions relacionades amb l'estàndard de xifrat avançat (AES) intrínsecs.
  • Les combinacions d'opcions de recollida d'escombraries han quedat obsoletes.

2) S'ha afegit la Guia d'ajust de la recollida d'escombraries a la màquina virtual de Java HotSpot. Descriu els col·lectors d'escombraries inclosos amb la màquina virtual de Java HotSpot i us ajuda a decidir quin col·lector d'escombraries pot optimitzar millor el rendiment de la vostra aplicació, especialment si gestiona grans quantitats de dades (diversos gigabytes), té molts fils i té altes taxes de transacció. .


Millores a JDK 8u31

1) En aquesta versió, el protocol SSLv3 s'elimina de les opcions avançades del tauler de control de Java.


Millores a JDK 8u40

Eina Java

1) S'ha afegit -XX:+CheckEndorsedAndExtDirs perquè el mecanisme d'anul·lació dels estàndards aprovats (JDK-8065675) i el mecanisme d'extensió (JDK-8065702) han quedat obsolets. L'opció ajuda a identificar qualsevol ús existent d'aquests mecanismes i és compatible amb JDK 7u80 i JDK 8u40.

2) Java Flight Recorder (JFR) ofereix diverses maneres de desbloquejar funcions comercials i habilitar JFR durant el temps d'execució d'una aplicació.

Inclou opcions de línia d'ordres de Java, com ara ordres de diagnòstic jcmd i controls de la interfície gràfica d'usuari (GUI) dins de Java Mission Control. Aquesta flexibilitat us permet proporcionar les opcions adequades a l'inici o interactuar amb JFR més tard.

3) L'opció -XX:StartFlightRecording=parameter=value té un nou paràmetre, dumponexit=true, que especifica si s'ha de generar un fitxer d'abocament de dades JFR quan la JVM finalitzi de manera controlada.

4) Les opcions relacionades amb la memòria transaccional restringida (RTM) ja no són experimentals. Aquestes opcions inclouen -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=nombre_de_intents, -XX:+UseRTMDeopt i -XX:+UseRTMLocking.

5) A Java 8, s'ha introduït l'Application Class Data Sharing (AppCDS). L'AppCDS amplia CDS (Compartició de dades de classe) per permetre que les classes dels directoris d'extensions estàndard i la ruta de classe de l'aplicació es col·loquin a l'arxiu compartit. Aquesta és una característica comercial i ja no es considera experimental.

6) S'han afegit noves opcions -XX:+ResourceManagement i -XX:ResourceManagementSampleInterval=valor.

7) S'ha afegit informació addicional sobre pàgines grans. Les pàgines grans, també conegudes com a pàgines grans, són pàgines de memòria que són significativament més grans que la mida estàndard de la pàgina de memòria. Les pàgines grans optimitzen el processador Translation-Lookaside Buffers. S'han documentat les opcions de Linux -XX:+UseHugeTLBFS, -XX:+UseSHM i -XX:+UseTransparentHugePages.

8) S'ha documentat l'opció -XX:ObjectAlignmentInBytes=alignment.

Eina JJS

1) S'ha afegit l'opció --optimistic-types=[true|false]. Habilita o desactiva les suposicions de tipus optimista amb la recompilació desoptimitzadora.

2) S'ha afegit l'opció --language=[es5] a l'eina jjs. Especifica la versió del llenguatge ECMAScript.

Eina Javapackager

1) Hi ha nous arguments disponibles per als paquets d'OS X. L'argument mac.CFBundleVersion identifica el número de versió interna que s'ha d'utilitzar.

2) L'argument mac.dmg.simple indica si s'ometen els passos de personalització de DMG que depenen de l'execució del codi AppleScript.

Eina Jcmd

L'eina Jcmd s'utilitza per interactuar de manera dinàmica amb Java Flight Recorder (JFR). Podeu utilitzar-lo per desbloquejar funcions comercials, activar/iniciar/aturar els enregistraments de vols i obtenir diversos missatges d'estat del sistema.

Eina Jstat

L'eina jstat s'ha actualitzat amb informació sobre l'espai de classe comprimit que és una part especial del metaespai.

Màquina virtual

La funció de VM HotSpot de seguiment de memòria nativa escalable ajuda a diagnosticar les fuites de memòria de la VM i aclarir els usuaris quan les fuites de memòria no es troben a la VM. Native Memory Tracker es pot executar sense apagar automàticament en sistemes grans i sense causar un impacte significatiu en el rendiment més enllà del que es considera acceptable per a programes petits.