logo

Características de Java 8

Oracle lanzó una nueva versión de Java como Java 8 el 18 de marzo de 2014. Fue un lanzamiento revolucionario de Java para la plataforma de desarrollo de software. Incluye varias actualizaciones de la programación Java, JVM, herramientas y bibliotecas.

Mejoras en el lenguaje de programación Java 8

Java 8 proporciona las siguientes funciones para la programación Java:

  • expresiones lambda,
  • Referencias de métodos,
  • Interfaces funcionales,
  • API de transmisión,
  • Métodos predeterminados,
  • Decodificación de codificación Base64,
  • Métodos estáticos en la interfaz,
  • Clase opcional,
  • Clase de coleccionistas,
  • Para cada método(),
  • motor JavaScript de Rhino,
  • clasificación de matrices paralelas,
  • Tipo y repetición de anotaciones,
  • Mejoras de E/S,
  • Mejoras de simultaneidad,
  • Mejoras de JDBC, etc.

Expresiones lambda

La expresión lambda nos ayuda a escribir nuestro código en un estilo funcional. Proporciona una forma clara y concisa de implementar la interfaz SAM (método abstracto único) mediante el uso de una expresión. Es muy útil en la biblioteca de colecciones en la que ayuda a iterar, filtrar y extraer datos.

Para más información y ejemplos: haga clic aquí


Referencias de métodos

La referencia del método Java 8 se utiliza para hacer referencia al método de la interfaz funcional. Es una forma compacta y sencilla de expresión lambda. Cada vez que utilice una expresión lambda simplemente para hacer referencia a un método, puede reemplazar su expresión lambda con una referencia de método.

Para más información y ejemplos: haga clic aquí


Interfaz funcional

Una interfaz que contiene solo un método abstracto se conoce como interfaz funcional. Puede tener cualquier número de métodos estáticos y predeterminados. También puede declarar métodos de clase de objeto.

Las interfaces funcionales también se conocen como interfaces de método abstracto único (interfaces SAM).

Para más información y ejemplos: haga clic aquí


Opcional

Java introdujo una nueva clase Opcional en Java 8. Es una clase final pública que se utiliza para tratar NullPointerException en la aplicación Java. debemos importar java.util paquete para usar esta clase. Proporciona métodos para verificar la presencia de valor para una variable en particular.

Para más información y ejemplos: haga clic aquí


para cada

Java proporciona un nuevo método forEach() para iterar los elementos. Se define en las interfaces Iterable y Stream.

Es un método predeterminado definido en la interfaz Iterable. Las clases de colección que extienden la interfaz Iterable pueden usar el método forEach() para iterar elementos.

Este método toma un único parámetro que es una interfaz funcional. Entonces, puedes pasar una expresión lambda como argumento.

Para más información y ejemplos: haga clic aquí


API de fecha/hora

Java ha introducido una nueva API de fecha y hora desde Java 8. El paquete java.time contiene clases de fecha y hora de Java 8.

Para más información y ejemplos: haga clic aquí


Métodos predeterminados

Java proporciona una función para crear métodos predeterminados dentro de la interfaz. Los métodos que se definen dentro de la interfaz y se etiquetan con la palabra clave predeterminada se conocen como métodos predeterminados. Estos métodos no son métodos abstractos y pueden tener un cuerpo de método.

Para más información y ejemplos: haga clic aquí


Motor JavaScript de Rhino

Nashorn es un motor de JavaScript. Se utiliza para ejecutar código JavaScript dinámicamente en JVM (Java Virtual Machine). Java proporciona una herramienta de línea de comandos etc. que se utiliza para ejecutar código JavaScript.

Puede ejecutar código JavaScript de dos maneras:

  1. Usando la herramienta de línea de comandos jjs, y
  2. Incrustándolo en el código fuente de Java.

Para más información y ejemplos: haga clic aquí


Carpintero de cuerdas

Java agregó una nueva clase final StringJoiner en el paquete java.util. Se utiliza para construir una secuencia de caracteres separados por un delimitador. Ahora, puede crear una cadena pasando delimitadores como coma (,), guión (-), etc.

herramienta de curación gimp

Para más información y ejemplos: haga clic aquí


Coleccionistas

Collectors es una clase final que extiende la clase Object. Proporciona operaciones de reducción, como acumular elementos en colecciones, resumir elementos según varios criterios, etc.

Para más información y ejemplos: haga clic aquí


API de transmisión

El paquete java.util.stream de Java 8 consta de clases, interfaces y una enumeración para permitir operaciones de estilo funcional en los elementos. Realiza cálculos perezosos. Por lo tanto, se ejecuta sólo cuando es necesario.

Para más información y ejemplos: haga clic aquí


Filtro de corriente

La secuencia de Java proporciona un método filter() para filtrar los elementos de la secuencia según un predicado determinado. Supongamos que desea obtener solo elementos pares de su lista; puede hacerlo fácilmente con la ayuda del método filter().

Este método toma el predicado como argumento y devuelve un flujo de elementos resultantes.

Para más información y ejemplos: haga clic aquí


Codificación y decodificación Java Base64

Java proporciona una clase Base64 para lidiar con el cifrado y descifrado. Debe importar la clase java.util.Base64 en su archivo fuente para usar sus métodos.

Esta clase proporciona tres codificadores y decodificadores diferentes para cifrar información en cada nivel.

Para más información y ejemplos: haga clic aquí


Clasificación de matrices paralelas de Java

Java proporciona una nueva característica adicional en la clase Arrays que se utiliza para ordenar elementos de una matriz en paralelo. El método paraleloSort() se ha agregado a la clase java.util.Arrays que utiliza el grupo común de paralelismo Fork/Join JSR 166 para proporcionar clasificación de matrices. Es un método sobrecargado.

Para más información y ejemplos: haga clic aquí


Mejoras de seguridad de Java 8

1) El proveedor Java Secure Socket Extension (JSSE) habilita los protocolos Transport Layer Security (TLS) 1.1 y TLS 1.2 de forma predeterminada en el lado del cliente.

2) Se agregó un método mejorado AccessController.doPrivileged que permite que el código haga valer un subconjunto de sus privilegios, sin impedir el recorrido completo de la pila para verificar otros permisos.

3) Se han agregado algoritmos de estándar de cifrado avanzado (AES) y cifrado basado en contraseña (PBE), como PBEWithSHA256AndAES_128 y PBEWithSHA512AndAES_256, al proveedor SunJCE.

4) Java Secure Socket Extension (SunJSSE) ha habilitado la extensión de indicación de nombre de servidor (SNI) para aplicaciones cliente de forma predeterminada en JDK 7 y JDK 8 admite la extensión SNI para aplicaciones de servidor. La extensión SNI es una característica que extiende los protocolos SSL/TLS para indicar a qué nombre de servidor intenta conectarse el cliente durante el protocolo de enlace.

5) SunJSSE se ha mejorado para admitir algoritmos de cifrado autenticado con datos asociados (AEAD). El proveedor Java Cryptography Extension (SunJCE) se ha mejorado para admitir la implementación de cifrado AES/GCM/NoPadding, así como los parámetros del algoritmo Galois/Counter Mode (GCM).

carácter a int java

6) Se agrega un nuevo indicador de comando: importar contraseña a la utilidad keytool. Se utiliza para aceptar una contraseña y almacenarla de forma segura como clave secreta. Se agregan clases como java.security.DomainLoadStoreParameter yjava.security.PKCS12Attribute para admitir el tipo de almacén de claves DKS.

7) En JDK 8, los algoritmos criptográficos se han mejorado con la variante SHA-224 de la familia SHA-2 de implementaciones de resumen de mensajes.

8) Soporte mejorado para criptografía NSA Suite B que incluye:

  • Registro de OID para algoritmos de criptografía NSA Suite B
  • Compatibilidad con la generación de pares de claves DSA de 2048 bits y algoritmos de firma adicionales para claves DSA de 2048 bits, como SHA224withDSA y SHA256withDSA.
  • Levantamiento de la restricción del tamaño de clave de 1024 a 2048 para el algoritmo Diffie-Hellman (DH).

9) La clase SecureRandom proporciona la generación de números aleatorios criptográficamente fuertes que se utilizan para claves públicas o privadas, cifrados y mensajes firmados. El método getInstanceStrong() se introdujo en JDK 8, que devuelve una instancia del SecureRandom más potente. Debe usarse cuando necesite crear una clave pública y privada RSA. SecureRandom incluye los siguientes otros cambios:

  • Se han introducido dos nuevas implementaciones para plataformas UNIX, que proporcionan comportamiento de bloqueo y no bloqueo.

10) Se incluye una nueva clase PKIXRevocationChecker que comprueba el estado de revocación de los certificados con el algoritmo PKIX. Admite la verificación del mejor esfuerzo, la verificación de certificados de entidad final y opciones específicas del mecanismo.

11) Los Estándares de criptografía de clave pública 11 (PKCS) se han ampliado para incluir compatibilidad con 64 bits para Windows.

12) Se agregan dos nuevos tipos de rcache a Kerberos 5. Escriba none significa que no hay rcache en absoluto y escriba dfl significa rcache basado en archivos estilo DFL. Además, ahora se admite la subclave solicitada por el aceptador. Se configuran mediante las propiedades del sistema sun.security.krb5.rcache y sun.security.krb5.acceptor.subkey.

13) En JDK 8, la transición del protocolo Kerberos 5 y la delegación restringida se admiten dentro del mismo ámbito.

14) Java 8 ha desactivado el cifrado débil de forma predeterminada. Los tipos de cifrado Kerberos 5 relacionados con DES no se admiten de forma predeterminada. Estos tipos de cifrado se pueden habilitar agregando enable_weak_crypto=true en el archivo krb5.conf.

15) Puede establecer el nombre del servidor en nulo para indicar un servidor independiente. Significa que un cliente puede solicitar el servicio utilizando cualquier nombre de servidor. Una vez establecido un contexto, el servidor puede recuperar el nombre como una propiedad negociada con el nombre de clave SASL.BOUND_SERVER_NAME.

16) El puente de la interfaz nativa de Java (JNI) al servicio de seguridad genérico de Java (JGSS) nativo ahora es compatible con Mac OS X. Puede configurar la propiedad del sistema sun.security.jgss.native en verdadero para habilitarlo.

17) Se define una nueva propiedad del sistema, jdk.tls.ephemeralDHKeySize, para personalizar los tamaños de claves DH efímeras. El tamaño de clave DH mínimo aceptable es de 1024 bits, excepto para conjuntos de cifrado exportables o modo heredado (jdk.tls.ephemeralDHKeySize=legacy).

18) El proveedor Java Secure Socket Extension (JSSE) respeta la preferencia del conjunto de cifrado del cliente de forma predeterminada. Sin embargo, el comportamiento se puede cambiar para respetar la preferencia del conjunto de cifrado del servidor llamando a SSLParameters.setUseCipherSuitesOrder(true) a través del servidor.


Mejoras en las herramientas de Java 8

1) Se introduce un comando jjs, que invoca el motor Nashorn ya sea en modo shell interactivo o para interpretar archivos de script.

2) El comando java es capaz de iniciar aplicaciones JavaFX, siempre que la aplicación JavaFX esté empaquetada correctamente.

3) La página de manual de comandos de Java (tanto nroff como HTML) ha sido completamente reelaborada. Las opciones avanzadas ahora se dividen en Tiempo de ejecución, Compilador, Recolección de basura y Capacidad de servicio, según el área a la que afectan. A continuación se describen varias opciones que antes faltaban. También hay una sección para opciones que quedaron obsoletas o eliminadas desde la versión anterior.

4) La nueva herramienta de línea de comandos jdeps permite al desarrollador analizar archivos de clase para determinar las dependencias a nivel de paquete o de clase.

5) Puede acceder a los comandos de diagnóstico de forma remota, a los que anteriormente solo se podía acceder localmente a través de la herramienta jcmd. El acceso remoto se proporciona mediante Java Management Extensions (JMX), por lo que los comandos de diagnóstico se exponen a un MBean de plataforma registrado en el servidor MBean de plataforma. El MBean es la interfaz com.sun.management.DiagnosticCommandMBean.

6) Se incluye una nueva opción -tsapolicyid en la herramienta jarsigner que le permite solicitar una marca de tiempo firmada a una autoridad de sellado de tiempo y adjuntarla a un archivo JAR firmado.

7) Se incluye un nuevo método java.lang.reflect.Executable.getParameters que le permite acceder a los nombres de los parámetros formales de cualquier método o constructor. Sin embargo, los archivos .class no almacenan nombres de parámetros formales de forma predeterminada. Para almacenar nombres de parámetros formales en un archivo .class particular y así permitir que la API de Reflection recupere nombres de parámetros formales, compile el archivo fuente con la opción -parameters del compilador javac.

8) Javac ahora aplicará correctamente las reglas de tipo para comparaciones binarias en la Sección 15.21 de la Especificación del lenguaje Java (JLS).

9) En esta versión, se eliminaron la herramienta apt y su API asociada contenida en el paquete com.sun.mirror.

Mejoras en Javadoc

En Java SE 8, se agregaron las siguientes API nuevas a la herramienta Javadoc.

  • Una nueva API de DocTree introduce un escáner que le permite recorrer el código fuente representado por un árbol de sintaxis abstracta. Esto amplía la API del árbol del compilador para proporcionar acceso estructurado al contenido de los comentarios de javadoc.
  • El paquete javax.tools contiene clases e interfaces que le permiten invocar la herramienta Javadoc directamente desde una aplicación Java, sin ejecutar un nuevo proceso.
  • Se ha reestructurado la sección 'Resumen de métodos' de la documentación generada de una clase o interfaz. Las descripciones de los métodos en esta sección están agrupadas por tipo. De forma predeterminada, se enumeran todos los métodos. Puede hacer clic en una pestaña para ver métodos de un tipo particular (estático, de instancia, abstracto, concreto o obsoleto, si existen en la clase o interfaz).
  • La herramienta javadoc ahora admite la comprobación del contenido de los comentarios de javadoc en busca de problemas que puedan provocar diversos problemas, como HTML no válido o problemas de accesibilidad, en los archivos generados por javadoc. La función está habilitada de forma predeterminada y también se puede controlar mediante la nueva opción -Xdoclint.

Mejoras del paquete 200

El formato de archivo de clase Java se actualizó debido a JSR 292, que admite lenguajes escritos dinámicamente en la plataforma Java.

El motor Pack200 se ha actualizado para garantizar que los archivos de clase Java SE 8 se compriman de forma eficaz. Ahora puede reconocer entradas de grupo constante y nuevos códigos de bytes introducidos por JSR 292. Como resultado, los archivos comprimidos creados con esta versión de la herramienta pack200 no serán compatibles con versiones anteriores de la herramienta unpack200.


Mejoras de E/S de Java 8

En Java 8, hay varias mejoras en java.nio.charset.Charset y en las implementaciones de conjuntos de caracteres extendidos. Incluye lo siguiente:

  • Un nuevo SelectorProvider que puede mejorar el rendimiento o la escalabilidad del servidor. El /dev/poll SelectorProvider sigue siendo el predeterminado. Para utilizar el mecanismo del puerto de eventos de Solaris, ejecútelo con la propiedad del sistema java.nio.channels.spi.Selector establecida en el valor sun.nio.ch.EventPortSelectorProvider.
  • Se reduce el tamaño del archivo /jre/lib/charsets.jar.
  • Se ha mejorado el rendimiento del constructor java.lang.String(byte[], ∗) y del método java.lang.String.getBytes().

Mejoras en la red de Java 8

1) Se ha agregado una nueva clase java.net.URLPermission. Representa un permiso para acceder a un recurso definido por una URL determinada.

2) Se agregó un paquete jdk.net que contiene opciones de socket específicas de la plataforma y un mecanismo para configurar estas opciones en todos los tipos de socket estándar. Las opciones de socket se definen en jdk.net.ExtendedSocketOptions.

3) En la clase HttpURLConnection, si se instala un administrador de seguridad y si se llama a un método que resulta en un intento de abrir una conexión, la persona que llama debe poseer un permiso Socket 'connect' a la combinación de host/puerto de la URL de destino o un URLPermission que permite esta solicitud.

Si la redirección automática está habilitada y esta solicitud se redirige a otro destino, la persona que llama también debe tener permiso para conectarse al host/URL redirigido.


Mejoras de simultaneidad de Java 8

El paquete java.util.concurrent agregó dos nuevas interfaces y cuatro nuevas clases.

Interfaces Java.util.concurrentes

Interfaz Descripción
interfaz estática pública CompletableFuture.AsynchronousCompletionTask Es una interfaz de marcador que se utiliza para identificar tareas asincrónicas producidas por métodos asincrónicos. Puede resultar útil para monitorear, depurar y rastrear actividades asincrónicas.
interfaz pública CompletionStage Crea una etapa de un cálculo posiblemente asincrónico, que realiza una acción o calcula un valor cuando se completa otra CompletionStage.

Clases Java.util.concurrentes

Clase Descripción
la clase pública CompletableFuture extiende el objeto implementa Future, CompletionStage Es un Futuro que puede completarse explícitamente y puede usarse como una Etapa de Compleción, respaldando funciones y acciones dependientes que se activan una vez completado.
clase estática pública ConcurrentHashMap.KeySetView extiende el conjunto de implementos de objetos, serializable Es una vista de un ConcurrentHashMap como un conjunto de claves, en el que opcionalmente se pueden habilitar adiciones asignando un valor común.
La clase abstracta pública CountedCompleter extiende ForkJoinTask Un ForkJoinTask con una acción de finalización realizada cuando se activa y no quedan acciones pendientes.
La clase pública CompletionException extiende RuntimeException Lanza una excepción cuando se encuentra un error u otra excepción mientras se completa un resultado o una tarea.

Nuevos métodos en la clase java.util.concurrent.ConcurrentHashMap

La clase ConcurrentHashMap introduce varios métodos nuevos en su última versión. Incluye varios métodos forEach (forEach, forEachKey, forEachValue y forEachEntry), métodos de búsqueda (search, searchKeys, searchValues ​​y searchEntries) y una gran cantidad de métodos de reducción (reduce, reduceToDouble, reduceToLong, etc.). También se han agregado otros métodos diversos (mappingCount y newKeySet).

Nuevas clases en java.util.concurrent.atomic

La última versión presenta soporte variable, escalable y actualizable a través de un pequeño conjunto de nuevas clases DoubleAccumulator, DoubleAdder, LongAccumulator yLongAdder. Emplea internamente técnicas de reducción de contiendas que proporcionan enormes mejoras de rendimiento en comparación con las variables atómicas.

Clase Descripción
la clase pública DoubleAccumulator extiende el número de implementos serializables Se utiliza para una o más variables que juntas mantienen un valor doble en ejecución actualizado mediante una función proporcionada.
la clase pública DoubleAdder extiende el número de implementos serializables Se utiliza para una o más variables que juntas mantienen una suma doble inicialmente cero.
la clase pública LongAccumulator extiende el número de implementos serializables Se utiliza para una o más variables que juntas mantienen un valor largo en ejecución actualizado mediante una función proporcionada.
la clase pública LongAdder extiende el número de implementos serializables Se utiliza para una o más variables que juntas mantienen una suma larga inicialmente cero.

Nuevos métodos en la clase java.util.concurrent.ForkJoinPool

Esta clase ha agregado dos nuevos métodos getCommonPoolParallelism() y commonPool(), que devuelven el nivel de paralelismo objetivo del grupo común o la instancia del grupo común, respectivamente.

Método Descripción
ForkJoinPool estático público commonPool() Devuelve la instancia del grupo común.
Público estático int getCommonPoolParallelism() Devuelve el nivel de paralelismo objetivo del fondo común.

Nueva clase java.util.concurrent.locks.StampedLock

Se agrega una nueva clase StampedLock que se utiliza para agregar un bloqueo basado en capacidades con tres modos para controlar el acceso de lectura/escritura (escritura, lectura y lectura optimista). Esta clase también admite métodos que proporcionan conversiones condicionalmente en los tres modos.

Clase Descripción
clase pública StampedLock extiende Objeto implementa Serializable Esta clase representa un bloqueo basado en capacidades con tres modos para controlar el acceso de lectura/escritura.

Mejoras de la API Java para procesamiento XML (JAXP) 1.6

En Java 8, se agrega la API de Java para el procesamiento XML (JAXP) 1.6. Requiere el uso de la función de carga del proveedor de servicios definida por java.util.ServiceLoader para cargar servicios desde archivos de configuración de servicios.

El motivo de esto es permitir una futura modularización de la plataforma Java SE donde los proveedores de servicios puedan implementarse por medios distintos a los archivos JAR y quizás sin los archivos de configuración del servicio.


Mejoras en la máquina virtual Java

La verificación de instrucciones especiales de invocación se ha reforzado para que solo se pueda invocar un método de inicialización de instancia en la clase actual o su superclase directa.


Java Mission Control 5.3 está incluido en Java 8

Java Mission Control (JMC) es un conjunto avanzado de herramientas que permite un análisis de datos eficiente y detallado y ofrece monitoreo y administración de Java avanzados y discretos. JMC proporciona secciones para áreas de análisis comunes, como el rendimiento del código, la memoria y la latencia.

Los paquetes de idioma de Babel en japonés y chino simplificado ahora se incluyen de forma predeterminada en Java Mission Control que se incluye en JDK 8.


Mejoras en la internacionalización de Java 8

1) Mejoras Unicode

El JDK 8 incluye soporte para Unicode 6.2.0. Contiene las siguientes características.

  • 733 nuevos caracteres, incluido el signo de la lira turca.
  • 7 nuevos guiones:
    • Jeroglíficos meroíticos
    • Cursiva meroítica
    • Sora Sompeng
    • Chakma
    • sharada
    • takri
    • Miao
  • 11 bloques nuevos: incluidos 7 bloques para los nuevos scripts enumerados anteriormente y 4 bloques para los siguientes scripts existentes:
  • Árabe extendido-A
  • Suplemento sundanés
  • Conociendo extensiones mansas
  • Símbolos alfabéticos matemáticos árabes

Adopción de datos Unicode CLDR y la propiedad del sistema java.locale.providers

El Consorcio Unicode ha lanzado el proyecto Common Locale Data Repository (CLDR) para 'soportar los idiomas del mundo, con el repositorio estándar más grande y extenso de datos locales disponible'. El CLDR se está convirtiendo en el estándar de facto para datos locales. Los datos locales basados ​​en XML del CLDR se han incorporado en la versión JDK 8, sin embargo, están deshabilitados de forma predeterminada.

Hay cuatro fuentes distintas de datos locales:

  • CLDR representa los datos locales proporcionados por el proyecto Unicode CLDR.
  • HOST representa la personalización del usuario actual de la configuración del sistema operativo subyacente. Solo funciona con la configuración regional predeterminada del usuario y la configuración personalizable puede variar según el sistema operativo, pero se admiten principalmente los formatos de fecha, hora, número y moneda.
  • SPI representa los servicios sensibles a la configuración regional implementados en los proveedores SPI instalados.
  • JRE representa los datos locales que son compatibles con las versiones anteriores de JRE.

Para seleccionar la fuente de datos local deseada, utilice la propiedad del sistema java.locale.providers. enumerar las fuentes de datos en el orden preferido. Por ejemplo: java.locale.providers=HOST,SPI,CLDR,JRE El comportamiento predeterminado es equivalente a la siguiente configuración: java.locale.providers=JRE,SPI


Nuevas API de calendario y configuración regional de Java 8

El JDK 8 incluye dos clases nuevas, varios métodos nuevos y un nuevo valor de retorno para un método estático existente.

Se agregan dos nuevas clases abstractas para proveedores de servicios al paquete java.util.spi.

Clase Descripción
La clase abstracta pública CalendarDataProvider extiende LocaleServiceProvider Es una clase abstracta para proveedores de servicios que proporcionan parámetros de calendario dependientes de la configuración regional.
La clase abstracta pública CalendarNameProvider extiende LocaleServiceProvider Es una clase abstracta para proveedores de servicios que proporcionan representaciones de cadenas localizadas (nombres para mostrar) de valores de campos de Calendario.

Un método estático ahora puede reconocer Locale.UNICODE_LOCALE_EXTENSION para el sistema de numeración.

Método Descripción
público estático final DecimalFormatSymbols getInstance (localización local) Se utiliza para obtener la instancia de DecimalFormatSymbols para la configuración regional especificada. Este método proporciona acceso a instancias de DecimalFormatSymbols para las configuraciones regionales admitidas por el propio tiempo de ejecución de Java, así como para aquellas admitidas por las implementaciones instaladas de DecimalFormatSymbolsProvider. Lanza NullPointerException si la configuración regional es nula.

Se agregaron nuevos métodos en la API del calendario:

Método Descripción
público booleano isSupportedLocale(localización local) Devuelve verdadero si la configuración regional dada es compatible con este proveedor de servicios locales. La configuración regional dada puede contener extensiones que deben tenerse en cuenta para determinar el soporte. Se define en la clase java.util.spi.LocaleServiceProvider
cadena pública getCalendarType() Devuelve el tipo de calendario de este Calendario. Los tipos de calendario están definidos por la especificación Unicode Locale Data Markup Language (LDML). Está definido en la clase java.util.Calendar.

Se agregan nuevos especificadores de estilo para los métodos Calendar.getDisplayName y Calendar.getDisplayNames para determinar el formato del nombre del calendario.


Especificador Descripción
int final estático público SHORT_FORMAT Es un especificador de estilo para getDisplayName y getDisplayNames que indica un nombre corto utilizado para el formato.
int final estático público LONG_FORMAT Es un especificador de estilo para getDisplayName y getDisplayNames que indica un nombre largo utilizado para el formato.
int final estático público SHORT_STANDALONE Es un especificador de estilo para getDisplayName y getDisplayNames que indica un nombre corto utilizado de forma independiente, como una abreviatura de mes como encabezados de calendario.
int final estático público LONG_STANDALONE Es un especificador de estilo para getDisplayName y getDisplayNames que indica un nombre largo usado de forma independiente, como el nombre de un mes como encabezado de calendario.

Dos nuevos métodos de configuración regional para tratar con las extensiones (opcionales) de una configuración regional.

Método Descripción
hasExtensions booleanas públicas() Devuelve verdadero si esta configuración regional tiene alguna extensión.
stripExtensions de configuración regional pública() Devuelve una copia de esta configuración regional sin extensiones. Si esta configuración regional no tiene extensiones, esta configuración regional se devuelve por sí misma.

Dos nuevos métodos Locale.filter devuelven una lista de instancias Locale que coinciden con los criterios especificados, tal como se define en RFC 4647:

Método Descripción
Filtro de lista estática pública (lista de prioridades de lista, configuraciones regionales de colección) Devuelve una lista de instancias locales coincidentes utilizando el mecanismo de filtrado definido en RFC 4647. Esto es equivalente a filtrar (Lista, Colección, Modo de filtrado) cuando el modo es Locale.FilteringMode.AUTOSELECT_FILTERING.
Filtro de lista estática pública (lista de prioridad de lista, configuraciones regionales de colección, modo Locale.FilteringMode) Devuelve una lista de instancias locales coincidentes utilizando el mecanismo de filtrado definido en RFC 4647.

Dos nuevos métodos Locale.filterTags devuelven una lista de etiquetas de idioma que coinciden con los criterios especificados, tal como se define en RFC 4647.

Método Descripción
Etiquetas de filtro de lista estática pública (lista de prioridad de lista, etiquetas de colección) Devuelve una lista de etiquetas de idiomas coincidentes utilizando el mecanismo de filtrado básico definido en RFC 4647. Esto es equivalente a filterTags(List, Collection, FilteringMode) cuando el modo es Locale.FilteringMode.AUTOSELECT_FILTERING.
Etiquetas de filtro de lista estática pública (lista de prioridad de lista, etiquetas de colección, modo Locale.FilteringMode) Devuelve una lista de etiquetas de idiomas coincidentes utilizando el mecanismo de filtrado básico definido en RFC 4647.

Dos nuevos métodos de búsqueda devuelven la etiqueta de idioma o configuración regional que mejor coincide utilizando el mecanismo de búsqueda definido en RFC 4647.

Método Descripción
Búsqueda de configuración regional estática pública (Lista de lista de prioridades, configuraciones regionales de colección) Devuelve una instancia de configuración regional para la etiqueta de idioma que mejor coincide utilizando el mecanismo de búsqueda definido en RFC 4647.
Etiqueta de búsqueda de cadenas estáticas públicas (lista de prioridades, etiquetas de colección) Devuelve la etiqueta de idioma que mejor coincide utilizando el mecanismo de búsqueda definido en RFC 4647.

Otras mejoras de la versión Java 8

Mejoras en JDK 8u5

1) Se ha reducido la frecuencia con la que se muestran los avisos de seguridad de una aplicación.


Mejoras en JDK 8u11

1) Una opción para suprimir ofertas de patrocinadores cuando JRE está instalado o actualizado está disponible en la pestaña Avanzado del Panel de control de Java.

2) El atributo Punto de entrada se puede incluir en el manifiesto del archivo JAR para identificar una o más clases como un punto de entrada válido para su RIA (aplicación de Internet enriquecida).


Mejoras en JDK 8u20

1) La herramienta javafxpackager ha cambiado de nombre a javapackager. Esta herramienta se ha mejorado con nuevos argumentos para paquetes de aplicaciones independientes.

Las siguientes mejoras están relacionadas con la herramienta Java:

  • Se ha agregado una opción de compilador JIT experimental relacionada con la memoria transaccional restringida (RTM).
  • Se han agregado varias opciones relacionadas con la deduplicación de cadenas.
  • Se han agregado varias opciones relacionadas con los intrínsecos del Estándar de cifrado avanzado (AES).
  • Las combinaciones de opciones de recolección de basura han quedado obsoletas.

2) Se agregó la Guía de ajuste de recolección de basura a la máquina virtual Java HotSpot. Describe los recolectores de basura incluidos con Java HotSpot VM y le ayuda a decidir qué recolector de basura puede optimizar mejor el rendimiento de su aplicación, especialmente si maneja grandes cantidades de datos (múltiples gigabytes), tiene muchos subprocesos y tiene altas tasas de transacción. .


Mejoras en JDK 8u31

1) En esta versión, el protocolo SSLv3 se elimina de las opciones avanzadas del Panel de control de Java.


Mejoras en JDK 8u40

herramienta java

1) Se agregó -XX:+CheckEndorsedAndExtDirs porque el mecanismo de anulación de estándares aprobados (JDK-8065675) y el mecanismo de extensión (JDK-8065702) han quedado obsoletos. La opción ayuda a identificar cualquier uso existente de estos mecanismos y es compatible con JDK 7u80 y JDK 8u40.

2) Java Flight Recorder (JFR) ofrece una variedad de formas de desbloquear funciones comerciales y habilitar JFR durante el tiempo de ejecución de una aplicación.

Incluye opciones de línea de comandos de Java, como comandos de diagnóstico jcmd y controles de interfaz gráfica de usuario (GUI) dentro de Java Mission Control. Esta flexibilidad le permite proporcionar las opciones adecuadas al inicio o interactuar con JFR más adelante.

3) La opción -XX:StartFlightRecording=parameter=value tiene un nuevo parámetro, dumponexit=true, que especifica si se debe generar un archivo de volcado de datos JFR cuando la JVM termina de manera controlada.

4) Las opciones relacionadas con la Memoria Transaccional Restringida (RTM) ya no son experimentales. Estas opciones incluyen -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt y -XX:+UseRTMLocking.

5) En Java 8, se introdujo el intercambio de datos de clase de aplicación (AppCDS). AppCDS amplía CDS (Class Data Sharing) para permitir que las clases de los directorios de extensiones estándar y la ruta de clase de la aplicación se coloquen en el archivo compartido. Esta es una característica comercial y ya no se considera experimental.

Linux que

6) Se han agregado nuevas opciones -XX:+ResourceManagement y -XX:ResourceManagementSampleInterval=value.

7) Se ha agregado información adicional sobre páginas grandes. Las páginas grandes, también conocidas como páginas enormes, son páginas de memoria que son significativamente más grandes que el tamaño de página de memoria estándar. Las páginas grandes optimizan los buffers de traducción del procesador. Se han documentado las opciones de Linux -XX:+UseHugeTLBFS, -XX:+UseSHM y -XX:+UseTransparentHugePages.

8) Se ha documentado la opción -XX:ObjectAlignmentInBytes=alignment.

herramienta JJS

1) Se ha agregado la opción --optimistic-types=[true|false]. Habilita o deshabilita suposiciones de tipo optimista con recompilación desoptimizada.

2) Se ha agregado la opción --language=[es5] a la herramienta jjs. Especifica la versión del lenguaje ECMAScript.

herramienta Javapackager

1) Hay nuevos argumentos disponibles para los paquetes de OS X. El argumento mac.CFBundleVersion identifica el número de versión interna que se utilizará.

2) El argumento mac.dmg.simple indica si se omiten los pasos de personalización de DMG que dependen de la ejecución del código AppleScript.

herramienta jcmd

La herramienta Jcmd se utiliza para interactuar dinámicamente con Java Flight Recorder (JFR). Puede usarlo para desbloquear funciones comerciales, habilitar/iniciar/detener grabaciones de vuelos y obtener varios mensajes de estado del sistema.

herramienta jstat

La herramienta jstat se ha actualizado con información sobre el espacio de clases comprimido, que es una parte especial del metaespacio.

Máquina virtual

La función HotSpot VM de seguimiento de memoria nativa escalable ayuda a diagnosticar pérdidas de memoria de la VM y aclarar a los usuarios cuando las pérdidas de memoria no están en la VM. Native Memory Tracker se puede ejecutar sin autoapagado en sistemas grandes y sin causar un impacto significativo en el rendimiento más allá de lo que se considera aceptable para programas pequeños.