Historial de versiones de Java


El lenguaje Java ha sufrido varios cambios desde JDK  1.0, así como numerosas adiciones de clases y paquetes a la biblioteca estándar . Desde J2SE 1.4, la evolución del lenguaje Java se ha regido por Java Community Process (JCP), que utiliza Java Specification Requests (JSR) para proponer y especificar adiciones y cambios a la plataforma Java . El idioma está especificado por Java Language Specification (JLS); los cambios en el JLS se gestionan bajo JSR 901 .

Además de los cambios de idioma, se han realizado otros cambios en la biblioteca de clases de Java a lo largo de los años, que ha pasado de unos cientos de clases en JDK 1.0 a más de tres mil en J2SE 5. API completamente nuevas , como Swing y Java2D , Se han introducido, y muchas de las clases y métodos originales de JDK 1.0 han quedado obsoletos . Algunos programas permiten la conversión de programas Java de una versión de la plataforma Java a una más antigua (por ejemplo, Java 5.0 con versiones anteriores de la versión 1.4) (consulte Herramientas de compatibilidad con Java ).

Con respecto a Oracle Java SE Support Roadmap, [1] la versión 11 es la versión de soporte a largo plazo (LTS) actualmente admitida , junto con Java 8 LTS, donde los clientes de Oracle recibirán Oracle Premier Support. La última actualización pública de software gratuito de Java 8 LTS para uso comercial fue lanzada por Oracle en enero de 2019, mientras que Oracle continúa lanzando actualizaciones públicas gratuitas de Java 8 para desarrollo [1] y uso personal indefinidamente. [2] Java 10, una versión de lanzamiento rápido previamente admitida, terminó su soporte en septiembre de 2018, la misma fecha en que comenzó el soporte para Java 11. Java 7 ya no se admite públicamente. Para Java 11, Oracle no proporcionará soporte a largo plazo para el público; en cambio, se espera que la comunidad OpenJDK más amplia , como AdoptOpenJDK u otras, realice el trabajo. [3]

La disponibilidad general de Java 16 se produjo el 16 de marzo de 2021, y Java 17 ahora también está en desarrollo. [4]

En septiembre de 2017, Mark Reinhold, arquitecto jefe de la plataforma Java, propuso cambiar el tren de lanzamiento a "un lanzamiento de funciones cada seis meses" en lugar del programa actual de dos años, [9] [10] y luego la propuesta entró en vigencia. .

La primera versión fue lanzada el 23 de enero de 1996. [11] [12] La primera versión estable, JDK 1.0.2, se llama Java 1. [12]

Las principales adiciones al comunicado del 19 de febrero de 1997 incluyeron: [13]

Zona de juegos con nombre en clave

El lanzamiento del 8 de diciembre de 1998 y los lanzamientos posteriores a J2SE 5.0 fueron renombrados retrospectivamente como Java 2 y el nombre de versión "J2SE" ( Java 2 Platform, Standard Edition ) reemplazó a JDK para distinguir la plataforma base de J2EE ( Java 2 Platform, Enterprise Edition ) y J2ME ( Java 2 Platform, Micro Edition ). Esta fue una versión muy significativa de Java, ya que triplicó el tamaño de la plataforma Java a 1520 clases en 59 paquetes. Las principales adiciones incluyeron: [15]

  • strictfp palabra clave
  • la API gráfica de Swing se integró en las clases principales
  • La JVM de Sun estaba equipada con un compilador JIT por primera vez
  • Complemento de Java
  • Java IDL , una implementación IDL para la interoperabilidad CORBA
  • Colecciones marco

Nombre en clave cernícalo

Los cambios más notables en el lanzamiento del 8 de mayo de 2000 fueron: [16] [17]

  • HotSpot JVM incluido (HotSpot JVM se lanzó por primera vez en abril de 1999 para J2SE 1.2 JVM)
  • RMI se modificó para admitir la compatibilidad opcional con CORBA
  • Interfaz de directorio y nombres de Java (JNDI) incluida en las bibliotecas principales (anteriormente disponible como una extensión)
  • Arquitectura del depurador de plataforma Java (JPDA)
  • JavaSound
  • Clases de proxy sintético

Nombre en clave Merlin

La versión del 6 de febrero de 2002 fue la primera versión de la plataforma Java desarrollada bajo el Proceso de la comunidad Java como JSR 59 . Los principales cambios incluyeron: [18] [19]

  • Cambios de idioma
    • assertpalabra clave (especificada en JSR 41 )
  • Mejoras de la biblioteca
    • Expresiones regulares modeladas a partir de expresiones regulares de Perl
    • El encadenamiento de excepciones permite que una excepción encapsule la excepción original de nivel inferior
    • Compatibilidad con el protocolo de Internet versión 6 ( IPv6 )
    • E / S sin bloqueo (Java) (denominado NIO) (especificado en JSR 51 )
    • API de registro (especificada en JSR 47 )
    • API de E / S de imágenes para leer y escribir imágenes en formatos como JPEG y PNG
    • Analizador XML integrado y procesador XSLT ( JAXP ) (especificado en JSR 5 y JSR 63 )
    • Extensiones integradas de seguridad y criptografía ( JCE , JSSE , JAAS )
    • Java Web Start incluido (Java Web Start se lanzó por primera vez en marzo de 2001 para J2SE 1.3) (especificado en JSR 56 )
    • API de preferencias ( java.util.prefs)

El soporte público y las actualizaciones de seguridad para Java 1.4 finalizaron en octubre de 2008. Las actualizaciones de seguridad pagas para los clientes de Oracle finalizaron en febrero de 2013. [20]

Nombre en clave Tigre

El lanzamiento del 30 de septiembre de 2004 se numeró originalmente como 1.5, que todavía se usa como el número de versión interno. El número se cambió para "reflejar mejor el nivel de madurez, estabilidad, escalabilidad y seguridad del J2SE". [21] Esta versión fue desarrollada bajo JSR 176 .

J2SE 5.0 entró en su período de finalización de actualizaciones públicas el 8 de abril de 2008; las actualizaciones ya no están disponibles para el público a partir del 3 de noviembre de 2009. Las actualizaciones estuvieron disponibles para los clientes de pago de Oracle hasta mayo de 2015. [1]

Tiger agregó una serie de nuevas características importantes del lenguaje: [22] [23]

  • Genéricos : proporciona seguridad de tipo en tiempo de compilación (estática) para colecciones y elimina la necesidad de la mayoría de tipos (conversión de tipo) (especificado por JSR 14 )
  • Metadatos : también llamados anotaciones ; permite que las construcciones del lenguaje, como clases y métodos, se etiqueten con datos adicionales, que luego pueden ser procesados ​​por utilidades con reconocimiento de metadatos (especificadas por JSR 175 )
  • Autoboxing / unboxing: conversiones automáticas entre tipos primitivos (como int) y clases de envoltura primitiva (como Integer) (especificadas por JSR 201 )
  • Enumeraciones : la enumpalabra clave crea una typesafe , lista ordenada de valores (como Day.MONDAY, Day.TUESDAY, etc.); anteriormente, esto solo se podía lograr mediante enteros constantes no seguros para tipos o clases construidas manualmente (patrón de enumeración seguro para tipos) (especificado por JSR 201 )
  • Varargs : el último parámetro de un método ahora se puede declarar usando un nombre de tipo seguido de tres puntos (p void drawtext(String... lines). Ej. ); en el código de llamada se puede usar cualquier número de parámetros de ese tipo y luego se colocan en una matriz para pasar al método, o alternativamente, el código de llamada puede pasar una matriz de ese tipo
  • for eachBucle mejorado : la forsintaxis del bucle se amplía con una sintaxis especial para iterar sobre cada miembro de una matriz o cualquiera Iterable, como las Collectionclases estándar (especificadas por JSR 201 )
  • Semántica de ejecución mejorada para programas Java de subprocesos múltiples; el nuevo modelo de memoria de Java aborda cuestiones de complejidad, eficacia y rendimiento de especificaciones anteriores [24]
  • Importaciones estáticas

También hubo las siguientes mejoras en las bibliotecas estándar:

  • Generación automática de stub para objetos RMI
  • Swing : nueva apariencia y sensación que se pueden personalizar , llamada sintetizador
  • Las utilidades de concurrencia en el paquete [25]java.util.concurrent
  • Clase de escáner para analizar datos de varios flujos de entrada y búferes

Java 5 es la última versión de Java que admite oficialmente Microsoft Windows 98 y Windows ME , [26] mientras que Windows Vista era la versión más nueva de Windows en la que se admitía J2SE 5 antes de que Java 5 dejara de funcionar en octubre de 2009. . [20]

Java 5 Update 5 (1.5.0_05) es la última versión de Java que funciona en Windows 95 (con Internet Explorer 5.5 instalado) y Windows NT 4.0 . [27]

Java 5 estuvo disponible por primera vez en Apple Mac OS X 10.4 (Tiger) [28] y era la versión predeterminada de Java instalada en Apple Mac OS X 10.5 (Leopard).

El soporte público y las actualizaciones de seguridad para Java 1.5 finalizaron en noviembre de 2009. Las actualizaciones de seguridad pagas para los clientes de Oracle finalizaron en abril de 2015.

Cambio de versión

Esta versión introdujo un nuevo sistema de control de versiones para el lenguaje Java, aunque el antiguo sistema de control de versiones siguió utilizándose para las bibliotecas de desarrollo:

Ambos números de versión "1.5.0" y "5.0" se utilizan para identificar esta versión de Java 2 Platform Standard Edition. La versión "5.0" es la versión del producto, mientras que "1.5.0" es la versión para desarrolladores. El número "5.0" se utiliza para reflejar mejor el nivel de madurez, estabilidad, escalabilidad y seguridad del J2SE.

- ¿  Versión 1.5.0 o 5.0?[29]

Esta correspondencia continuó hasta las versiones posteriores (Java 6 = JDK 1.6, Java 7 = JDK 1.7, etc.).

Actualizaciones de Java 5

Nombre en clave Mustang

A partir de la versión lanzada el 11 de diciembre de 2006, Sun reemplazó el nombre "J2SE" por Java SE y eliminó el ".0" del número de versión. [47] La numeración interna para desarrolladores sigue siendo 1.6.0. [48]

Esta versión fue desarrollada bajo JSR 270 .

Durante la fase de desarrollo, se lanzaron nuevas compilaciones, incluidas mejoras y correcciones de errores, aproximadamente cada semana. Las versiones beta se lanzaron en febrero y junio de 2006, lo que condujo a una versión final que se produjo el 11 de diciembre de 2006.

Principales cambios incluidos en esta versión: [49] [50]

  • Se eliminó el soporte para versiones anteriores de Win9x; Extraoficialmente, Java 6 Update 7 fue la última versión de Java que se demostró que funciona en estas versiones de Windows. [ cita requerida ] Esto se cree [¿ por quién? ] debido a los principales cambios en la Actualización 10.
  • Soporte de lenguaje de scripting ( JSR 223 ): API genérica para una estrecha integración con lenguajes de scripting e integración incorporada de Mozilla JavaScript Rhino .
  • Mejoras drásticas en el rendimiento de la plataforma central, [51] [52] y Swing .
  • Soporte de servicio web mejorado a través de JAX-WS ( JSR 224 ).
  • Soporte JDBC 4.0 ( JSR 221 ).
  • API de compilador de Java ( JSR 199 ): una API que permite a un programa Java seleccionar e invocar un compilador de Java mediante programación.
  • Actualización de JAXB a la versión 2.0: incluida la integración de un analizador StAX .
  • Soporte para anotaciones conectables ( JSR 269 ). [53]
  • Muchas mejoras de la GUI , como la integración de SwingWorker en la API, la clasificación y el filtrado de tablas y el verdadero doble búfer de Swing (eliminando el efecto de área gris).
  • Las mejoras de JVM incluyen: optimización del rendimiento de la sincronización y del compilador , nuevos algoritmos y actualizaciones de los algoritmos de recolección de basura existentes y rendimiento de inicio de la aplicación.

Java 6 se puede instalar en Mac OS X 10.5 (Leopard) que se ejecuta en máquinas con procesador de 64 bits (Core 2 Duo y superior). [54] Java 6 también es compatible con máquinas de 32 y 64 bits que ejecutan Mac OS X 10.6 (Snow Leopard).

Java 6 llegó al final de su vida útil admitida en febrero de 2013, momento en el que se programó la detención de todas las actualizaciones públicas, incluidas las actualizaciones de seguridad. [55] [56] Oracle lanzó dos actualizaciones más de Java 6 en marzo y abril de 2013, que corrigieron algunas vulnerabilidades de seguridad. [57] [58]

Actualizaciones de Java 6

Después del lanzamiento de Java 6, Sun y, posteriormente, Oracle, lanzaron varias actualizaciones que, aunque no cambiaron ninguna API pública, mejoraron la usabilidad del usuario final o corrigieron errores. [59]

Java 7 (nombre en clave Dolphin [137] ) es una actualización importante que se lanzó el 7 de julio de 2011 [138] y estuvo disponible para los desarrolladores el 28 de julio de 2011. [139] El período de desarrollo se organizó en trece hitos; el 6 de junio de 2011 finalizó el último de los trece hitos. [139] [140] En promedio, se lanzaron 8 compilaciones (que generalmente incluían mejoras y correcciones de errores) por hito. La lista de funciones del proyecto OpenJDK 7 enumera muchos de los cambios.

Las adiciones en Java 7 incluyen: [141]

  • Soporte de JVM para lenguajes dinámicos , con el nuevo invokedynamiccódigo de bytes bajo JSR-292, [142] siguiendo el trabajo de creación de prototipos que se realiza actualmente en la máquina virtual multilingüe.
  • Punteros comprimidos de 64 bits [143] (disponible en Java 6 con -XX:+UseCompressedOops) [144]
  • Estos pequeños cambios de idioma (agrupados en un proyecto llamado Coin): [145]
  • Cadenas en interruptor [146]
  • Gestión automática de recursos en declaración de prueba [147]
  • Inferencia de tipo mejorada para la creación de instancias genéricas, también conocido como operador de diamante <> [148]
  • Declaración del método varargs simplificado [149]
  • Literales enteros binarios [150]
  • Permitir guiones bajos en literales numéricos [151]
  • Detectar varios tipos de excepciones y volver a generar excepciones con una verificación de tipo mejorada [152]
  • Servicios públicos de simultaneidad con arreglo a JSR 166 [153]
  • Nueva biblioteca de E / S de archivos (definida por JSR 203) que agrega soporte para múltiples sistemas de archivos, metadatos de archivos y enlaces simbólicos. Los nuevos paquetes son java.nio.file, java.nio.file.attributey java.nio.file.spi[154] [155]
  • Timsort se utiliza para ordenar colecciones y matrices de objetos en lugar de fusionar ordenación
  • Soporte a nivel de biblioteca para algoritmos de criptografía de curva elíptica
  • Una canalización de XRender para Java 2D, que mejora el manejo de funciones específicas de las GPU modernas
  • Nuevas API de plataforma para las funciones de gráficos implementadas originalmente en la versión 6u10 como API no compatibles [156]
  • Soporte mejorado a nivel de biblioteca para nuevos protocolos de red, incluidos SCTP y protocolo directo de sockets
  • Actualizaciones ascendentes a XML y Unicode
  • Conjuntos de reglas de implementación de Java [157]

Lambda (implementación de Java de funciones lambda ), Jigsaw (implementación de módulos de Java ) y parte de Coin se eliminaron de Java 7 y se lanzaron como parte de Java 8 (excepto Jigsaw , que se lanzó en Java 9). [158] [159]

Java 7 fue la versión predeterminada para descargar en java.com desde abril de 2012 hasta que se lanzó Java 8. [160]

Actualizaciones de Java 7

Oracle emitió actualizaciones públicas de la familia Java 7 trimestralmente [161] hasta abril de 2015, cuando el producto llegó al final de su disponibilidad pública. [162] Las actualizaciones adicionales para JDK 7, que están programadas para continuar hasta julio de 2022, solo están disponibles para los clientes con un contrato de soporte. [163]

Java 8 fue lanzado el 18 de marzo de 2014, [230] [231] e incluía algunas características que estaban planeadas para Java 7 pero que luego se pospusieron. [232]

El trabajo sobre las características se organizó en términos de propuestas de mejora de JDK (JEP) . [233]

  • JSR 335, JEP 126: Soporte a nivel de lenguaje para expresiones lambda (oficialmente, expresiones lambda; extraoficialmente, cierres ) bajo Project Lambda [234] y métodos predeterminados ( métodos de extensión virtual ) [235] [236] [237] que permiten la adición de métodos a interfaces sin romper las implementaciones existentes. Hubo un debate en curso en la comunidad Java sobre si agregar soporte para expresiones lambda. [238] [239] Sun declaró más tarde que las expresiones lambda se incluirían en Java y solicitó información de la comunidad para refinar la función. [240] de apoyo expresiones lambda también permite funcionales operaciones al estilo en corrientes de elementos, tales como MapReduce , inspirada transformaciones en colecciones. Los métodos predeterminados permiten al autor de una API agregar nuevos métodos a una interfaz sin romper el código anterior al usarla. Aunque no era su intención principal, [235] los métodos predeterminados también permiten la herencia múltiple de comportamiento (pero no el estado).
  • JSR 223, JEP 174: Project Nashorn , un tiempo de ejecución de JavaScript que permite a los desarrolladores incrustar código JavaScript dentro de las aplicaciones
  • JSR 308, JEP 104: Anotación sobre tipos de Java [241]
  • Aritmética de enteros sin signo [242]
  • JSR 337, JEP 120: anotaciones repetidas [243]
  • JSR 310, JEP 150: API de fecha y hora [244]
  • JEP 178: Bibliotecas JNI vinculadas estáticamente [245]
  • JEP 153: Lanzamiento de aplicaciones JavaFX (lanzamiento directo de JAR de aplicaciones JavaFX) [246]
  • JEP 122: Eliminar la generación permanente [247]

Java 8 no es compatible con Windows XP [248], pero a partir de la actualización 25 de JDK 8, aún se puede instalar y ejecutar en Windows XP. [249] Las actualizaciones anteriores de JDK 8 podrían ejecutarse bajo XP descargando un archivo en formato zip archivado y descomprimiéndolo para el ejecutable. La última versión de Java 8 podría ejecutarse en XP es la actualización 251. Pero la compatibilidad de sus componentes comienza a fallar en los no compatibles Sistema operativo en compilación inicial durante el desarrollo de actualizaciones de Java 8. [ cita requerida ]

Desde octubre de 2014, Java 8 fue la versión predeterminada para descargar (y luego nuevamente la descarga que reemplazó a Java 9) desde el sitio web oficial. [250] "Oracle continuará proporcionando actualizaciones públicas y actualizaciones automáticas de Java SE 8, indefinidamente para usuarios personales". [2]

Actualizaciones de Java 8

Java SE 9 se puso a disposición el 21 de septiembre de 2017, [302] debido a la controvertida aceptación de la implementación actual de Project Jigsaw por parte del Comité Ejecutivo de Java, [303] que llevó a Oracle a solucionar algunos problemas y preocupaciones abiertas, y a refinar algunos preguntas técnicas. En los últimos días de junio de 2017, Java Community Process expresó un consenso casi unánime sobre el esquema del sistema modular propuesto. [304]

  • JSR 376: Modularización del JDK bajo Project Jigsaw ( Java Platform Module System ) [159]
  • JavaDB se eliminó del JDK [305]
  • JEP 193: Mangos de variables : define un medio estándar para invocar los equivalentes de varias operaciones java.util.concurrent.atomicysun.misc.Unsafe
  • JEP 213: Moneda del proyecto de fresado : Permitir @SafeVarargs en métodos de instancia privados; Permitir que las variables efectivamente finales se utilicen como recursos en la declaración try-with-resources; Permitir rombo con clases anónimas si el tipo de argumento del tipo inferido es denotable; Complete la eliminación, comenzada en Java SE 8, del guión bajo del conjunto de nombres de identificadores legales; Soporte para métodos privados en interfaces
  • JEP 222: jshell: Java Shell (bucle de lectura-evaluación-impresión) : JShell es una interfaz de línea de comandos REPL para el lenguaje Java. [306]
  • JEP 254: Cuerdas compactas
  • JEP 263: Gráficos HiDPI: escala y tamaño automático
  • JEP 266: Más actualizaciones de simultaneidad : incluye una implementación Java de Reactive Streams , [307] incluida una nueva Flowclase [308] que incluía las interfaces proporcionadas anteriormente por Reactive Streams [309]
  • JEP 268: catálogos XML
  • JEP 282: jlink: Java Linker : crea una herramienta que puede ensamblar y optimizar un conjunto de módulos y sus dependencias en una imagen personalizada en tiempo de ejecución. Permite efectivamente producir un ejecutable completamente utilizable, incluida la JVM para ejecutarlo.
  • JEP 295: Compilación anticipada : compilación anticipada proporcionada por GraalVM .

La primera versión candidata de Java 9 se lanzó el 9 de agosto de 2017. [310] La primera versión estable de Java 9 fue el 21 de septiembre de 2017. [311]

Historia

En JavaOne 2011, Oracle discutió las características que esperaban lanzar para Java 9 en 2016. [312] Java 9 debería incluir un mejor soporte para montones de varios gigabytes, una mejor integración de código nativo, un recolector de basura predeterminado diferente ( G1 , para "tiempos de respuesta más cortos ") [313] y una JVM de autoajuste . [314] A principios de 2016, el lanzamiento de Java 9 se reprogramó para marzo de 2017 [315] y luego se pospuso nuevamente cuatro meses más hasta julio de 2017. [316]

Actualizaciones de Java 9

OpenJDK 10 se lanzó el 20 de marzo de 2018, con doce nuevas funciones confirmadas. [320] Entre estas características se encuentran:

  • JEP 286: Inferencia de tipo de variable local
  • JEP 296: Consolide el bosque JDK en un único repositorio
  • JEP 304: Interfaz recolector de basura
  • JEP 307: GC completo en paralelo para G1
  • JEP 310: Uso compartido de datos de clase de aplicación
  • JEP 312: Apretones de manos locales de subprocesos
  • JEP 313: eliminar la herramienta de generación de encabezados nativos (javah)
  • JEP 314: Extensiones adicionales de etiquetas de idioma Unicode
  • JEP 316: Asignación de montón en dispositivos de memoria alternativos
  • JEP 317: compilador JIT experimental basado en Java
  • JEP 319: Certificados raíz
  • JEP 322: Versiones de versiones basadas en el tiempo

El primero de estos JEP 286 Inferencia de tipo de variable local , permite que la varpalabra clave se utilice para variables locales con el tipo real calculado por el compilador. Para que podamos hacer

var  list  =  new  ArrayList < String > ();  // infiere ArrayList  var  stream  =  list . corriente ();  // infiere Stream 

Actualizaciones de Java 10

JDK 11 se lanzó el 25 de septiembre de 2018 y la versión está actualmente abierta para correcciones de errores. Ofrece LTS o soporte a largo plazo. Entre otras, Java 11 incluye una serie de características nuevas, como: [326]

  • JEP 181: Control de acceso basado en Nest
  • JEP 309: Constantes dinámicas de archivo de clase
  • JEP 315: Mejorar los intrínsecos de Aarch64
  • JEP 318: Epsilon: un recolector de basura sin operaciones
  • JEP 320: eliminar los módulos Java EE y CORBA
  • JEP 321: Cliente HTTP (estándar)
  • JEP 323: Sintaxis de variable local para parámetros Lambda
  • JEP 324: Acuerdo clave con Curve25519 y Curve448
  • JEP 327: Unicode 10
  • JEP 328: Registrador de vuelo
  • JEP 329: Algoritmos criptográficos ChaCha20 y Poly1305
  • JEP 330: Iniciar programas de código fuente de archivo único
  • JEP 331: creación de perfiles de montón con poca sobrecarga
  • JEP 332: Seguridad de la capa de transporte (TLS) 1.3
  • JEP 333: ZGC: un recolector de basura escalable de baja latencia (experimental)
  • JEP 335: Desaprovechar el motor JavaScript Nashorn
  • JEP 336: Desaprovechar las herramientas y la API de Pack200

Se eliminaron varias funciones de versiones anteriores; en particular, los subprogramas de Java y Java Web Start ya no están disponibles. Los módulos JavaFX , Java EE y CORBA se han eliminado de JDK [327]

Actualizaciones de Java 11

JDK 12 se lanzó el 19 de marzo de 2019. Entre otras, Java 12 incluye una serie de características nuevas, como: [340]

  • JEP 189: Shenandoah: un recolector de basura con poco tiempo de pausa (experimental)
  • JEP 230: conjunto de microbenchmark
  • JEP 325: Cambiar expresiones (vista previa)
  • JEP 334: API de constantes de JVM
  • JEP 340: un puerto AArch64, no dos
  • JEP 341: Archivos CDS predeterminados
  • JEP 344: Colecciones mixtas cancelables para G1
  • JEP 346: Devolver rápidamente la memoria comprometida no utilizada de G1

La función de vista previa Jep 325 amplía la switchdeclaración para que también se pueda usar como expresión y agregar una nueva forma de etiqueta de caso donde el lado derecho es una expresión. No se necesita ninguna declaración de ruptura. Para expresiones complejas yieldse puede usar una declaración. Esto se convierte en estándar en Java SE 14.

int  ndías  =  cambiar ( mes )  {  caso  ENE ,  MAR ,  MAYO ,  JUL ,  AGOSTO ,  OCT ,  DIC  ->  31 ;  caso  APR ,  JUN ,  SEP ,  NOV  ->  30 ;  case  FEB  ->  {  if ( año  %  400  == 0 )  rendimiento  29 ;  de lo contrario,  si ( año  %  100  ==  0 )  rendimiento  28 ;  más  si ( año  %  4  == 0 )  dió  29 ;  si no,  rinde  28 ;  } };

Actualizaciones de Java 12

JDK 13 se lanzó el 17 de septiembre de 2019. Java 13 incluye las siguientes características nuevas, así como "cientos de pequeñas mejoras y miles de correcciones de errores". [344]

  • JEP 350: Archivos de CDS dinámicos
  • JEP 351: ZGC: deshacer la memoria no utilizada
  • JEP 353: Reimplementar la API de socket heredada
  • JEP 354: Cambiar expresiones (vista previa)
  • JEP 355: Bloques de texto (vista previa)

Los bloques de texto JEP 355 permiten literales de cadena de varias líneas:

String  html  =  "" "  en ">   

Hola, mundo