banner
Centro de Noticias
Recursos de primera calidad, estrictas medidas de calidad.

Resumen de noticias de Java: Presentación de Spring AI, Spring Modulith 1.0 y Testcontainers Desktop

Feb 25, 2024

InfoQ Página de inicio Noticias Resumen de noticias sobre Java: Presentación de Spring AI, Spring Modulith 1.0 y Testcontainers Desktop

28 de agosto de 2023 Lectura de 12 minutos

por

Michael Redlich

El resumen de Java de esta semana del 21 de agosto de 2023 incluye noticias de OpenJDK, JDK 22, JDK 21, Jakarta EE, BellSoft, Spring Modulith 1.0, Spring Boot, Spring Authorization Server, Spring Batch, Spring AI, Testcontainers, Open Liberty, Quarkus, MicroProfile Métricas y Telemetría, Micronaut, Groovy, Tomcat, Grails, JHipster Lite, Vert.x Pinot Client, Yupiik Fusion y conferencia SpringOne.

Ron Pressler, arquitecto y líder técnico del Proyecto Loom en Oracle, presentó el borrador JEP 8307341, Prepárese para restringir el uso de JNI, que propone restringir el uso de la interfaz nativa de Java (JNI) inherentemente insegura junto con el uso de métodos restringidos. en la API Foreign Function & Memory (FFM) que se espera que se convierta en una característica final en JDK 22. La estrategia de alineación, a partir de JDK 22, hará que el tiempo de ejecución de Java muestre advertencias sobre el uso de JNI a menos que un usuario de FFM habilite archivos nativos no seguros. acceso en la línea de comando. Se prevé que en el lanzamiento posterior a JDK 22, el uso de JNI generará excepciones en lugar de advertencias.

Versión 7.3.1 del arnés de prueba de regresión para JDK,jtreg, ha sido lanzado y listo para su integración en el JDK que corrige una regresión introducida enjtreg 7.3 que impedía configurar correctamente las variables de entorno predeterminadas en Windows. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

La compilación 35 sigue siendo la compilación actual en las compilaciones de acceso temprano de JDK 21. Se pueden encontrar más detalles sobre esta compilación en las notas de la versión.

La compilación 12 de las compilaciones de acceso temprano de JDK 22 también estuvo disponible la semana pasada con actualizaciones de la compilación 11 que incluyen correcciones a varios problemas. Se pueden encontrar más detalles sobre esta compilación en las notas de la versión.

Para JDK 22 y JDK 21, se anima a los desarrolladores a informar errores a través de Java Bug Database.

En su blog semanal Hashtag Jakarta EE, Ivar Grimstad, defensor de los desarrolladores de Jakarta EE en la Fundación Eclipse, proporcionó los resultados de la votación sobre las mociones para agregar las especificaciones Jakarta Data, Jakarta MVC y Jakarta NoSQL a la plataforma Jakarta EE 11. Sólo una de estas especificaciones,Datos de Yakarta, ha pasado.

Algunos comentarios de quienes votaron en contra o se abstuvieron de incluir a Jakarta MVC:

Esta es una especificación madura con cierta adopción en este momento, pero antes de hacerla obligatoria, debería haber una mayor adopción por parte del proveedor. Como otros mencionaron antes, podría agregarse en cada perfil como especificación independiente, de modo que nadie esté bloqueado para usarlo en este momento y crear más demanda para agregarlo en una versión futura (o dar una razón para una actualización en las próximas versiones). Plan).

Animo este trabajo y espero que siga adelante. Espero con interés una eventual adopción por parte de la plataforma.

Creo que es una adición interesante a la plataforma y ya la hemos agregado a GlassFish, donde se puede usar de inmediato. Sin embargo, tenemos varias preocupaciones. Entre ellos está el hecho de que Jakarta MVC se basa en Jakarta REST, mientras que el marco MVC existente en Jakarta EE se basa en Jakarta Servlet. Basar las nuevas API en REST hace que sea aún más confuso cuál "API de manejo HTTP" en Yakarta EE es la principal. Nos encantaría ver primero que se establezca una base común entre Jakarta Servlet y Jakarta REST, antes de aceptar algo en la plataforma que se basa en Jakarta REST.

Algunos comentarios de quienes votaron en contra o se abstuvieron de incluir Yakarta NoSQL:

El diseño arquitectónico actual parece requerir actualizaciones más frecuentes de lo previsto para los lanzamientos de la plataforma Jakarta; esto proporciona un fuerte argumento para mantenerlo fuera de la plataforma ahora. Otro requisito podría ser agregar primero Jakarta Data y Jakarta Config. En general, tener soporte para NoSQL es una buena idea, por lo que esto puede cambiar en el futuro.

Es útil y debería incluirse en un futuro próximo. Sin embargo, la especificación no está lista por ahora y el vencimiento no está claro en el plazo de EE 11.

No hay una característica real en comparación con la API/tiempo de ejecución del proveedor e incluso lo contrario: no puede usar su backend NoSQL sin usar una API propietaria, por lo que pierde el objetivo en mi humilde opinión. La única ganancia es lo que se puede hacer en 10-15LoC, por lo que en mi humilde opinión no es suficiente para justificar la carga de mantenimiento.

BellSoft ha proporcionado versiones de parches de sus distribuciones posteriores Liberica JDK 17 y 11 de OpenJDK que incluyen una corrección de errores críticos como se describe en JDK-8313765, encabezado CEN no válido (tamaño de campo de datos adicional zip64 no válido), una regresión en la queExcepción Zip se produce al abrir archivos APK, ZIP o JAR con varias herramientas de terceros. Este problema surgió cuando JDK-8302483, Validación mejorada de campos adicionales de ZIP64, proporcionó validación adicional de campos adicionales de ZIP64 al abrir un archivo ZIP.

BellSoft también presentó Alpaquita Containers para aplicaciones Spring Boot, basados ​​en Alpaquita Linux, un sistema operativo basado en Alpine Linux diseñado para el lenguaje de programación Java, y Liberica JDK. El primero se introdujo por primera vez en septiembre de 2022. La inspiración se basó en el descubrimiento de que los contenedores pequeños con aplicaciones Spring Boot pueden ahorrar recursos en la nube.

El segundo lanzamiento importante de Spring Boot 3.2.0 ofrece correcciones de errores, mejoras en la documentación, actualizaciones de dependencias y nuevas características tales como: uso de la funcionalidad jOOQ para determinar el dialecto SQL; un nuevoThreadPoolTaskSchedulerBuilderclase como reemplazo de la obsoletaGenerador de programadores de tareas clase; y un nuevoSimpleAsyncTaskExecutorBuilderclase para construir instancias delSimpleAsyncTaskExecutor clase; Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

Las versiones 3.1.3, 3.0.10 y 2.7.15 de Spring Boot presentan mejoras en la documentación, actualizaciones de dependencias y correcciones de errores notables, como: registro de URL de configuración con parámetros de consulta que no se detectan en formato XML; una instancia de laJobLauncherApplicationRunner clase que devuelve un código de salida exitoso incluso cuando no se ha ejecutado ningún trabajo; y la adición de una prueba faltante para las pruebas de humo de RabbitMQ. Se pueden encontrar más detalles sobre estas versiones en las notas de la versión 3.1.3, versión 3.0.10 y versión 2.7.15.

El lanzamiento de las características de Spring Modulith 1.0: una eliminación de la declaración experimental delGuión clase; una eliminación del POM principal de Spring Modulith Events de la BOM; y actualizaciones a Spring Asciidoctor Backends 0.0.7 y jMolecules 2023.1.0. Se pueden encontrar más detalles sobre esta versión en las notas de la versión. InfoQ hará un seguimiento con una noticia más detallada.

El lanzamiento de Spring Authorization Server 1.1.2 ofrece actualizaciones de dependencia y correcciones de errores notables, como: agregar validación de longitud para evitar un error interno del servidor HTTP 500 debido a un código de usuario no válido; elservidor de autorización de demostración el conjunto de pruebas de muestras no se ejecuta como parte del proceso de compilación; y una instancia de la clase de inicio de sesión de formulario personalizado,Controlador de error predeterminado, eso arroja unExcepción de puntero nulo con un atributo de mensaje de error faltante. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

Se han lanzado las versiones 5.1.0-M2, 5.0.3 y 4.3.9 de Spring Batch que vienen con correcciones de errores, mejoras en la documentación y mejoras tales como: la adición de JavaMapa de hash concurrenteyFechaclases a la lista confiable de clases en elJackson2ExecutionContextStringSerializer clase; y detección automática de clases/interfaces para burlarse reemplazando elsimulacro(Clase claseToMock)método con elimitar() método. Las nuevas características de la versión 5.1.0-M2 incluyen: soporte para inserciones masivas y nuevos descriptores de acceso en elMongoItemWriter clase para facilitar las extensiones. Se pueden encontrar más detalles sobre estas versiones en las notas de la versión 5.1.0-M2, versión 5.0.3 y versión 4.3.9.

Spring AI, una "API compatible con Spring y abstracciones para desarrollar aplicaciones de IA" se presentó en la conferencia SpringOne la semana pasada. Los desarrolladores pueden obtener más información viendo este video de YouTube con Josh Long, Spring Developer Advocate en VMware, y Mark Pollack, ingeniero senior de VMware, y esta aplicación ACME Fitness Store. InfoQ hará un seguimiento con una noticia más detallada.

AtomicJar, creadores de Testcontainers, un "marco de código abierto para proporcionar instancias livianas y desechables de bases de datos, intermediarios de mensajes, navegadores web o casi cualquier cosa que pueda ejecutarse en un contenedor Docker", ha presentado una nueva aplicación de escritorio Testcontainers que es gratuita. la comunidad Java. Esta versión incluye funciones que permiten a los desarrolladores configurar puertos fijos para mejorar la depuración y la conexión a contenedores en ejecución y la capacidad de congelar contenedores para evitar su cierre durante la depuración. Esta aplicación también permite a los desarrolladores cambiar fácilmente el tiempo de ejecución de su contenedor local, lo que elimina la necesidad de manipular elcontenedores de prueba.properties archivo cuando se utilizan Testcontainers con OrbStack/Colima/Rancher Desktop o Podman. InfoQ hará un seguimiento con una noticia más detallada.

Testcontainers para Java 1.19.0 también se lanzó la semana pasada con cambios notables tales como: un nuevoparaListeningPort(puerto)método de conveniencia en elEsperar clase para comprobar un puerto específico; uso de laSelinuxContext.COMPARTIDO enumeración por defecto; y una nueva implementación delHaga clic en HouseContainerclase que apoya elcon nombre de usuario(),con contraseña(),conNombreDeBaseDeDatos()yconUrlParam()métodos.

IBM ha lanzado la versión 23.0.0.8 de Open Liberty que incluye: soporte para Proof Key for Code Exchange (PKCE) para clientes OpenID Connect que previene ataques de interceptación de códigos de autorización; una solución para CVE-2023-38737, una vulnerabilidad en la que un atacante puede enviar una solicitud especialmente diseñada en las versiones 22.0.0.13 a 23.0.0.7 de Open Liberty, lo que provoca que el servidor consuma recursos de memoria y provoque una denegación de servicio; y asegúrese de que se instale una cantidad suficiente de funciones cuando utilice elfeatureUtility installFeature comando que anteriormente no garantizaba que la característica funcionara correctamente.

Red Hat ha lanzado la versión 3.3.0 de Quarkus con cambios notables como: mejoras en la extensión OpenTelemetry; una nueva extensión Pulsar de mensajería reactiva SmallRye; y la posibilidad de personalizar el JacksonAsignador de objetos clase en la extensión REST Client Reactive. Es importante tener en cuenta que, a partir de esta versión, el.Final El sufijo en los nombres de las versiones se eliminará debido al uso de versiones que ahora están desactualizadas. Se pueden encontrar más detalles sobre esta versión en el registro de cambios.

En el camino hacia MicroProfile 6.1, el Grupo de Trabajo de MicroProfile ha proporcionado la primera versión candidata de la especificación MicroProfile Metrics 5.1 que presenta cambios notables como: una introducción de propiedades de configuración de MicroProfile que personalizan cómo las métricas de histograma y temporizador rastrean y generan estadísticas para percentiles e histogramas. cubos; el@RegistryScope la anotación ahora es un calificador; y un nuevomp.metrics.defaultAppName propiedad como requisito para conjuntos de etiquetas coherentes que anteriormente causaban problemas en implementaciones de servidores de aplicaciones de múltiples aplicaciones. Se pueden encontrar más detalles sobre esta versión en el registro de cambios.

De manera similar, también se lanzó la segunda versión candidata de la especificación MicroProfile Telemetry 1.1 que presenta una actualización de dependencia a OpenTelemetry Java 1.29.0; una aclaración del comportamiento deDuraryequipaje frijoles cuando cambia el lapso o el equipaje actual; y una implementación de pruebas de tal manera que no dependa de la marca de tiempo. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

La Fundación Micronaut ha proporcionado Micronaut Framework 4.0.5, la quinta versión de mantenimiento con actualizaciones de los módulos: Micronaut Cassandra, Micronaut MicroStream, Micronaut Security, Micronaut Liquibase, Micronaut Flyway, Micronaut GCP, Micronaut AWS y Micronaut Servlet. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

La versión 2.0.0 de Micronaut Blueprint para JHipster también se lanzó la semana pasada. Basado en JHipster 7.9.3, la última versión estable, este plan genera un servidor back-end basado en Micronaut Framework 3.10.1 para aplicaciones JHipster de estilo monolito o microservicio.

La primera versión alfa de Apache Groovy 5.0.0 ofrece muchas correcciones de errores, actualizaciones de dependencias, mejoras y nuevas características como: una nuevacomo verificado ()método en elMétodos Groovy predeterminadosclase para mejorar el apoyo a lacolección comprobada(),lista comprobada(),mapa marcado(), etc. definido en JavaColecciones clase; un nuevo@OperadorRenombrar anotación para transformaciones AST mejoradas; y soporte inicial para JEP 445, clases sin nombre y métodos principales de instancia (versión preliminar). Se pueden encontrar más detalles sobre esta versión en el registro de cambios.

De manera similar, las versiones 4.0.14 y 3.0.19 de Apache Groovy proporcionan correcciones de errores, actualizaciones de dependencias y mejoras como soporte para: un parámetro nulo en elrecogerEntradas()método definido en elMétodos Groovy predeterminados clase; e inferencia del tipo de parámetro de cierre para tuplas cuando se verifica el tipo estático. Se pueden encontrar más detalles sobre estas versiones en las notas de la versión 4.0.14 y 3.0.19.

Por último, el lanzamiento de Apache Groovy 2.5.23 ofrece dos correcciones de errores: comportamiento mejorado de resolución variable dentro delCierre clase; y unNo existe tal error de método lanzado al ejecutar un script Groovy. Se pueden encontrar más detalles sobre esta versión en el registro de cambios.

Las versiones 11.0.0-M11, 10.1.13, 9.0.80 y 8.5.93 de Apache Tomcat se lanzaron la semana pasada y las cuatro versiones proporcionaron cambios notables como: una solución para CVE-2023-41080, una redirección de URL a un vulnerabilidad de sitio no confiable en la función de autenticación FORM en Apache Tomcat; y el uso del código de error proporcionado durante el procesamiento de la página de error en lugar de asumir un error de servidor interno HTTP 500 si una aplicación o biblioteca establece tanto un error de servidor interno que no es HTTP 500 como eljakarta.servlet.error.excepción atributo de solicitud. La versión 11.0.0-M11 también incluye una actualización del manejo de parámetros HTTP para alinearse con los cambios en la API Jakarta Servlet 6.1 para los métodos definidos en elSolicitud de servlet interfaz. Se pueden encontrar más detalles sobre estas versiones en las notas de la versión 11.0.0-M11, versión 10.1.13, versión 9.0.80 y versión 8.5.93.

La Grails Foundation ha presentado la versión 6.0.0 del complemento Grails Spring Security Core que presenta seguridad elevada, soporte para Spring Security 5.8.6, compatibilidad con Grails 6.0.0, una interfaz de línea de comandos mejorada, actualizaciones de dependencias y navegación mejorada de la documentación.

Se lanzó la versión 0.41.0 de JHipster Lite que presenta correcciones de errores, actualizaciones de dependencias y mejoras tales como: un reemplazo en el uso de Java@Generadoanotación con el JHipster@ExcludeFromGeneratedCodeCoverage anotación; una eliminación delcontraseña()método de laConfiguración de OAuth2 clase; y una ejecución de pruebas de integración con una configuración derivada de un archivo de configuración de la aplicación. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

El equipo de Eclipse Vert.x ha presentado un nuevo Cliente Pinot para Apache Pinot, un almacén de datos distribuido en tiempo real para cargas de trabajo analíticas, como reemplazo del Cliente Java Apache Pinot. Este nuevo cliente expone una API conveniente para que las aplicaciones Eclipse Vert.x consulten los servidores Apache Pinot.

Se lanzó la versión 1.0.6 de Yupiik Fusion con cambios notables, como soporte para: tablas anidadas integrables para casos con más de 255 columnas; la capacidad delRespuesta parcialclase para personalizar elRESPUESTA_HEADERScampo en elJsonRpcHandler clase; y elDesplazamientoFechaHora,Desplazamiento de zonayFecha local como parámetros raíz en un punto final JSON-RPC. Se pueden encontrar más detalles sobre esta versión en las notas de la versión.

La conferencia SpringOne y VMware Explore se llevó a cabo en el Venetian Convention and Expo Center en Las Vegas, Nevada, la semana pasada y presentó sesiones diseñadas para desarrolladores de aplicaciones, operadores de plataformas/DevOps/SRE y arquitectos de aplicaciones. Spring Technologies incluyó: plataformas y herramientas para aplicaciones Spring; Marco de primavera; Bota de primavera; Seguridad de primavera; Nube de primavera; Datos/flujo de primavera; y la Comunidad de Primavera.

Codifique, implemente y escale Java a su manera. Microsoft Azure admite su carga de trabajo con abundantes opciones, ya sea que esté trabajando en una aplicación, un servidor de aplicaciones o un marco de Java. Aprende más.

Escribir para InfoQ ha abierto muchas puertas y aumentado las oportunidades profesionales. para mí. Pude interactuar profundamente con expertos y líderes de opinión para aprender más sobre los temas que cubrí. Y también puedo difundir mis conocimientos a la comunidad tecnológica en general y comprender cómo se utilizan las tecnologías en el mundo real.

¡Descubrí el programa de colaboradores de InfoQ a principios de este año y lo he disfrutado desde entonces! Además de brindarme una plataforma para compartir aprendizaje con una comunidad global de desarrolladores de software, el sistema de revisión entre pares de InfoQ ha mejorado significativamente mi escritura. . Si está buscando un lugar para compartir su experiencia en software, comience a contribuir a InfoQ.

Comencé a escribir noticias para la cola InfoQ .NET como una forma de mantenerme actualizado con la tecnología, pero saqué mucho más provecho de ello. Conocí gente conocedora, obtuve visibilidad global y mejoré mis habilidades de escritura..

Convertirme en editor de InfoQ fue una de las mejores decisiones de mi carrera . Me ha desafiado y me ha ayudado a crecer de muchas maneras. . Nos encantaría tener más gente.Unete a nuestro equipo.

InfoQ busca un editor en jefe a tiempo completo para unirse al equipo internacional y siempre remoto de C4Media. Únase a nosotros para cubrir las tecnologías más innovadoras de nuestro tiempo, colabore con los profesionales de software más brillantes del mundo y ayude a más de 1,6 millones de equipos de desarrollo a adoptar nuevas tecnologías y prácticas que superan los límites de lo que el software y los equipos pueden ofrecer.

Todos los martes se envía un resumen del contenido de la semana pasada en InfoQ. Únase a una comunidad de más de 250.000 desarrolladores senior. Ver un ejemplo

Protegemos su privacidad.

Debe registrar una cuenta InfoQ o iniciar sesión o iniciar sesión para publicar comentarios. Pero hay mucho más detrás de estar registrado.

Aproveche al máximo la experiencia InfoQ.

HTML permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Únase a una comunidad de expertos.jtregjtregDatos de YakartaExcepción ZipThreadPoolTaskSchedulerBuilderGenerador de programadores de tareasSimpleAsyncTaskExecutorBuilderSimpleAsyncTaskExecutorJobLauncherApplicationRunnerGuiónservidor de autorización de demostraciónControlador de error predeterminadoExcepción de puntero nuloMapa de hash concurrenteFechaJackson2ExecutionContextStringSerializersimulacro(Clase claseToMock)imitar()MongoItemWritercontenedores de prueba.propertiesparaListeningPort(puerto)EsperarSelinuxContext.COMPARTIDOHaga clic en HouseContainercon nombre de usuario()con contraseña()conNombreDeBaseDeDatos()conUrlParam()featureUtility installFeature Asignador de objetos.Final@RegistryScopemp.metrics.defaultAppNameDurarequipajecomo verificado ()Métodos Groovy predeterminadoscolección comprobada()lista comprobada()mapa marcado()Colecciones@OperadorRenombrarrecogerEntradas()Métodos Groovy predeterminadosCierreNo existe tal error de métodojakarta.servlet.error.excepciónSolicitud de servlet@Generado@ExcludeFromGeneratedCodeCoveragecontraseña()Configuración de OAuth2Respuesta parcialRESPUESTA_HEADERSJsonRpcHandlerDesplazamientoFechaHoraDesplazamiento de zonaFecha localMichael Redlichha abierto muchas puertas y ha aumentado las oportunidades profesionalesVivian HuEl sistema de revisión entre pares de InfoQ ha mejorado significativamente mi escrituraOghenewede EmeniObtuve visibilidad global y mejoré mis habilidades de escritura.Edin Kapicmejores decisiones de mi carrerame ayudó a crecer de muchas manerasUnete a nuestro equipoThomas Bettseditor en jefe a tiempo completoLa información QAproveche al máximo la experiencia InfoQ.