Resumen de noticias de Java: OpenJDK JEP para JDK 18, actualizaciones de primavera, plataforma Payara, Kotlin 1.6

El resumen de Java de esta semana para el 15 de noviembre de 2021 presenta noticias de OpenJDK JEP, JDK 18, Project Loom, numerosos lanzamientos puntuales sobre proyectos de Spring, MicroProfile 5.0-RC2, Payara Platform, una nueva especificación Jakarta EE propuesta, JHipster 7.4.0, TornadoVM 0.12 , Apache Camel K 1.7 y Kotlin 1.6.0.

OpenJDK

JEP 419, API de memoria y función ajena (segunda incubadora) , ha sido ascendida de candidato a objetivo propuesto para JDK 18. Este JEP evoluciona la primera incubadora, JEP 412, API de memoria y función ajena (incubadora) , entregada en JDK 17, para incorporar mejoras basadas en los comentarios de la comunidad Java. Los cambios en esta segunda incubadora incluyen: soporte para más portadores en manejadores var de acceso a memoria como 

boolean
e interfaz; una API de desreferenciación más general para las interfaces y ; una API más simple para obtener manejadores de métodos de llamada de bajada tales que pasar un 
<a href="https://docs.oracle.com/en/java/javase/14/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemoryAddress.html">MemoryAddress</a>
MemoryAddress
<a href="https://docs.oracle.com/en/java/javase/14/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html">MemorySegment</a>
<a href="https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryType.html">MemoryType</a>
la enumeración ya no es necesaria; y una nueva API para copiar matrices Java desde y hacia segmentos de memoria. La revisión de JEP 419 concluye el 23 de noviembre de 2021.

JEP 420, Coincidencia de patrones para conmutador (segunda vista previa) , se ha promovido de Candidato a Propuesto a destino para JDK 18. Este JEP permite 

switch
probar una expresión de destino con una serie de patrones, cada uno con una acción específica, lo que permite datos complejos. consultas orientadas a ser expresadas de forma concisa y segura. Esta es la segunda vista previa después de JEP 406, Coincidencia de patrones para conmutador (Vista previa) , que se entregó en JDK 17. Las mejoras incluyen: una mejora en la verificación de dominancia que obliga 
case
a que aparezca una etiqueta constante antes de un patrón protegido del mismo tipo; y una comprobación exhaustiva del bloque de interruptoresahora es más preciso con jerarquías selladas. La revisión de JEP 420 concluye el 23 de noviembre de 2021.

Brian Goetz , arquitecto de lenguaje Java en Oracle, habló con InfoQ en septiembre de 2017 cuando la coincidencia de patrones aún se encontraba en su fase de prueba de concepto. La coincidencia de patrones para el 

instanceof
operador, JEP 394 , se entregó en JDK 16 .

JEP 422, puerto Linux / RISC-V , ha sido promovido de borrador a estado de candidato . Este JEP propone portar el JDK a Linux / RISC-V, una arquitectura de conjunto de instrucciones RISC de código abierto y gratuito. Se admitirá el intérprete de plantillas, los compiladores JIT C1 y C2 y todos los GC de línea principal actuales, incluidos ZGC y Shenandoah. El objetivo principal de este JEP es integrar el puerto en el repositorio de la línea principal del JDK.

JDK 18

La compilación 24 de las compilaciones de acceso anticipado de JDK 18 estuvo disponible la semana pasada, con actualizaciones de la compilación 23 que incluyen correcciones a varios problemas . Se pueden encontrar más detalles en las notas de la versión .

El conjunto de funciones para JDK 18 actualmente es el siguiente:

Se anima a los desarrolladores a informar de errores a través de la base de datos de errores de Java .

Proyecto Telar

La compilación 18-loom + 5-274 de las compilaciones de acceso temprano de Project Loom se puso a disposición de la comunidad de Java y se basa en la compilación 22 de las compilaciones de acceso temprano JDK 18.

Marco de primavera

Fue una semana ocupada en Spring, ya que el equipo proporcionó comunicados puntuales sobre múltiples proyectos .

Spring Boot 2.6 se lanzó con actualizaciones de dependencia para Spring Data 2021.1, Spring HATEOAS 1.4, Spring AMQP 2.4, Spring Kafka 2.8, Spring Security 5.6 y Spring Session 2021.1. Otras características nuevas incluyen: un 

/info
punto final mejorado con información de tiempo de ejecución de Java; y soporte para probar aplicaciones Spring MVC usando la 
<a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/reactive/server/WebTestClient.html">WebTestClient</a>
interfaz.

Spring Boot versión 2.4.13 y versión 2.5.7 también se lanzaron con 26 correcciones de errores y 35 correcciones de errores , respectivamente, junto con mejoras de documentación y actualizaciones de dependencia.

Después de tres lanzamientos de hitos y un candidato de lanzamiento, Spring Security 5.6.0 se ha puesto a disposición de la comunidad Java con: una nueva interfaz 

<a href="https://docs.spring.io/spring-security/site/docs/current-SNAPSHOT/api/org/springframework/security/core/context/SecurityContextChangedListener.html">SecurityContextChangedListener</a>
, que puede usarse como destino de asignación para una expresión lambda o referencia de método; soporte para cierre de sesión único SAML 2.0 ; y soporte para propagar la 
<a href="https://javadoc.io/static/org.springframework.security/spring-security-test/5.2.1.RELEASE/org/springframework/security/test/context/TestSecurityContextHolder.html">TestSecurityContextHolder</a>
clase a la 
<a href="https://docs.spring.io/spring-security/site/docs/4.2.15.RELEASE/apidocs/org/springframework/security/core/context/SecurityContextHolder.html">SecurityContextHolder</a>
clase. Se pueden encontrar más detalles en las notas de la versión .

Spring Cloud Netflix versión 2.2.10.RELEASE se ha lanzado para abordar CVE-2021-22053 , una vulnerabilidad que expone una forma de ejecutar código enviado dentro de la ruta de solicitud URI 

/hystrix/monitor;[user-provided data]
, durante la resolución de plantillas de vista con aplicaciones que usan 
<a href="https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-netflix-hystrix-dashboard">spring-cloud-netflix-hystrix-dashboard</a>
<a href="https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf">spring-boot-starter-thymeleaf</a>
.

Las versiones 4.3.4 y 4.2.8 de Spring Batch se pusieron a disposición con correcciones de errores tales como: garantizar que el 

getParameters()
método definido en la 
<a href="https://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/core/JobParameters.html">JobParameters</a>
clase devuelva un conjunto de parámetros inmutables ; arreglando el mensaje de error ” IllegalArgumentException: Solo se puede asignar 1 de 2 argumentos ” al invocar las clases 
<a href="https://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/core/step/tasklet/MethodInvokingTaskletAdapter.html">MethodInvokingTaskletAdapter</a>
<a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.html">NamedParameterJdbcTemplate</a>
; y asegurarse de que el 
getLastJobExecution()
método definido en la 
<a href="https://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/core/explore/support/SimpleJobExplorer.html">SimpleJobExplorer</a>
clase obtenga ejecuciones de pasos y contextos de ejecución.

Spring para Apache Kafka 2.8 ha sido lanzado con: soporte para confirmaciones manuales fuera de orden; un nuevo conjunto de manejadores de errores comunes para reemplazar los manejadores separados 

record
y de 
batch
errores; y la 
<a href="https://docs.spring.io/spring-kafka/api/org/springframework/kafka/core/KafkaTemplate.html">KafkaTemplate&lt;K,V&gt;</a>
clase ahora puede usarse para recibir registros específicos de particiones conocidas.

Spring AMQP (Spring para RabbitMQ) 2.4 se ha puesto a disposición con soporte inicial para RabbitMQ Stream Plugin y declarando que el soporte para Spring Remote Method Invocation (RMI) ha quedado obsoleto. Se pueden encontrar más detalles en las notas de la versión .

El camino hacia MicroProfile 5.0

En el camino hacia MicroProfile 5.0, el Grupo de trabajo de MicroProfile ha proporcionado la segunda versión candidata que incluye las últimas actualizaciones de las ocho especificaciones desarrolladas por la comunidad:

Estas especificaciones se alinearán con Jakarta EE 9.1 .

Payara

Payara ha lanzado su edición de noviembre de 2021 de la plataforma Payara . La versión 5.2021.9 de Payara Platform Community ofrece 11 mejoras, seis correcciones de errores y 11 actualizaciones de componentes y la Payara Platform Enterprise 5.33.0 ofrece cuatro mejoras, cuatro correcciones de errores y dos actualizaciones de componentes. La compatibilidad con JDK 17 se ha implementado en la edición Community, pero se están realizando más pruebas para garantizar la estabilidad de la Edición Enterprise. Un cambio importante para ambas versiones es la eliminación de los protocolos TLS 1.0 y TLS 1.1, que ahora están deshabilitados de forma predeterminada.

Se pueden encontrar más detalles en las notas de la versión de las ediciones Community y Enterprise .

Yakarta EE

El Grupo de Trabajo de Jakarta EE ha presentado una propuesta para una nueva especificación de Jakarta EE, Jakarta Commons, para satisfacer la necesidad de una especificación para manejar API, funcionalidades y bibliotecas comunes para garantizar la coherencia entre las especificaciones. El grupo de trabajo está solicitando comentarios de la comunidad de Java al ver y comentar este documento .

JHipster

La versión 7.4.0 de JHipster ha sido lanzada para incluir: arreglar los 

<a href="https://www.jhipster.tech/user-entity/#-the-user-entity">User</a>
nombres de las relaciones entre entidades; agregar soporte para módulos ECMAScript (ESM) y la arquitectura Micro-Frontend en Vue.js; actualice la biblioteca React JHipster a Bootstrap 5.0; y manejar las reclamaciones de Auth0 cuando actúa como un servidor de recursos de OAuth 2.0.

TornadoVM

TornadoVM , una compañía de tecnología de software de código abierto, ha lanzado TornadoVM versión 0.12 que incluye: un nuevo backend, despachador de nivel cero para SPIR-V integrado; un marco de evaluación comparativa mejorado; nuevas métricas 

kernel time
data transfers
, agregadas al marco de evaluación comparativa; y un generador de perfiles mejorado que introduce nuevas opciones de línea de comandos 
--enableProfiler &lt;silent|console&gt;
--dumpProfiler &lt;jsonFile&gt;
.

Juan Fumero , investigador asociado, Advanced Processor Technologies Research Group de la Universidad de Manchester, presentó TornadoVM en QCon London en marzo de 2020 y desde entonces ha contribuido con este artículo técnico de InfoQ .

Se puede encontrar una aplicación de ejemplo que usa Docker en este repositorio de GitHub .

Apache Camel K

Se lanzó la versión 1.7 de Apache Camel K que incluye: soporte para Quarkus Native Build y Kustomize ; una plataforma de integración secundaria; y nuevos Kamelets en el catálogo Apache Camel Kamelet .

Camel K, un marco de integración ligero, está construido con Apache Camel K Runtime 1.10.0, Apache Camel Quarkus 2.4.0 Apache Camel 3.12.0 y Apache Camel Kamelets 0.5.0.

Kotlin

JetBrains ha lanzado Kotlin 1.6.0 con muchas características nuevas, como 

when
declaraciones selladas ; 
suspend
tipos y conversiones funcionales mejorados ; instanciación de clases de anotación; e inferencia de tipos mejorada para tipos genéricos recursivos. También hay mejoras en Kotlin / JVM, KotlinJS y KotlinNative. Los desarrolladores pueden obtener más información en este video de YouTube presentado por Anton Arhipov , defensor de los desarrolladores de Kotlin en JetBrains. InfoQ seguirá con una noticia más detallada.

EXTRAIDO