Newsletter Java: Novedades de la Semana 4 Febrero 2025

Tu newsletter semanal de Programando En Java

¡Hola Javero! 👋

Bienvenido a tu roundup semanal de Java. Esta semana se viene cargada de lanzamientos y actualizaciones que demuestran que el ecosistema Java sigue reinventándose. En esta edición encontrarás novedades sobre JDK, el vibrante mundo de Spring y sus múltiples subproyectos, junto con importantes anuncios de herramientas y plataformas como Apache NetBeans, Payara, Hibernate Reactive y Gradle.

¡Sigue leyendo para descubrir todo lo que necesitas saber!

Redes Sociales

🎥 Video de la Semana en YouTube: Las Mejores Librerías en Java

¿Te gustaría conocer las librerías que están marcando la diferencia en el desarrollo Java? En este video exploramos una selección curada de las mejores librerías actuales: desde herramientas para procesamiento de datos hasta soluciones para la gestión de concurrencia. Descubre casos prácticos, consejos y ejemplos reales que te ayudarán a potenciar tus proyectos y a mantenerte a la vanguardia.

🔧 Actualizaciones OpenJDK y JDK

  • JDK 24 – Build 36 y Release Candidate
    Build 36 sigue siendo el build actual de los early-access builds de JDK 24. Con la ausencia de bugs críticos (P1), JDK 24 ha entrado en su primer release candidate, anticipando un GA el 18 de marzo de 2025, con 24 nuevas características.
    🔗 Build 36 en GitHub | 📄 Release notes
    🔗 Anuncio de Mark Reinhold

  • JDK 25 – Build 11
    La Build 11 de JDK 25 incorpora actualizaciones desde Build 10, solucionando varios issues para optimizar seguridad y rendimiento.
    🔗 Build 11 en GitHub | 📄 Release notes

Tip: Recuerda reportar bugs para JDK 24 y 25 en el Java Bug Database.

🤩 ¡Tu opinión importa!

Ayúdame a mejorar esta newsletter y necesito tu ayuda. Responde esta encuesta (menos de 1 minuto) para contarme qué temas prefieres y cómo puedo mejorarla.

💬 Sesión de Mentoría 1:1

¿Quieres llevar tus conocimientos de Java y Spring al siguiente nivel?
¡Estoy aquí para ayudarte!

  • 15 minutos gratuitos para resolver tus dudas técnicas.

  • Sesiones personalizadas de 1 hora para profundizar en tus proyectos y retos.

✌️ Mentoría GRATIS: Reserva ahora

😎 Mentoría personalizada: Reserva ahora

🌱 El Ecosistema Spring en Movimiento

La semana estuvo marcada por una intensa actividad en el ecosistema Spring, con lanzamientos que abarcan desde Spring Boot hasta Spring AMQP.

  • Spring Boot

    • Spring Boot 3.5.0-M2:
      Incluye correcciones de errores, mejoras en documentación y actualizaciones de dependencias. Destaca la nueva funcionalidad para activar trabajos Quartz on-demand a través de un endpoint Actuator, y soporte actualizado para Prometheus mediante la mejora en el PrometheusPushGatewayManager.
      🔗 Release notes Spring Boot 3.5.0-M2

    • Spring Boot 3.4.3 y 3.3.9:
      Estas versiones traen correcciones, mejoras en la documentación y han incorporado la constante TWENTY_FOUR al enum JavaVersion.
      🔗 3.4.3 Release notes | 🔗 3.3.9 Release notes

  • Spring Security

    • Spring Security 6.5.0 – 2nd Milestone:
      Esta actualización ofrece nuevas funcionalidades como la clase HttpStatusAccessDeniedHandler, que establece códigos de estado HTTP, y nuevas interfaces para la resolución de tokens one-time en entornos servlet y reactivos.
      🔗 Release notes Spring Security 6.5.0-M2

    • Versiones 6.4.3 y 6.3.7:
      Incluyen mejoras en la estabilidad, como la reconfiguración del task Gradle y la introducción del flag disableDefaultRegistrationPage en el DSL de WebAuthn.
      🔗 6.4.3 Release notes | 🔗 6.3.7 Release notes

  • Spring Authorization Server

    • Spring Authorization Server 1.5.0 – 1st Milestone:
      Esta versión incorpora soporte para OAuth 2.0 DPoP, una innovación que permite tokens más seguros mediante un mecanismo de prueba de posesión.
      🔗 Release notes Spring Authorization Server 1.5.0-M1

    • Versiones 1.4.2 y 1.3.5:
      Se han lanzado con mejoras como la incorporación del @Override en clases OAuth2 y el reemplazo del método fromHttpUrl() por fromUriString().
      🔗 1.4.2 Release notes | 🔗 1.3.5 Release notes

  • Spring for GraphQL

    • Spring for GraphQL 1.3.4:
      Trae correcciones de bugs, mejoras en documentación y optimizaciones en la implementación de WebSocketHandler y en la extracción de tokens de autenticación, haciéndolo más robusto en entornos reales.
      🔗 Release notes Spring for GraphQL 1.3.4

  • Spring Session

    • Versiones 3.4.2 y 3.3.6:
      Estas releases incluyen importantes actualizaciones de dependencias (como Spring Boot 3.3.8 y Spring Framework 6.2.3) y mejoras que aseguran una gestión de sesiones más eficiente.
      🔗 3.4.2 Release notes | 🔗 3.3.6 Release notes

  • Spring Integration

    • Spring Integration 6.5.0 – 2nd Milestone:
      Se han implementado mejoras como la eliminación del header CLOSEABLE_RESOURCE en el StreamTransformer y la generación automática de headers (ID y TIMESTAMP) en los inbound channel adapters para Apache Kafka.
      🔗 Release notes Spring Integration 6.5.0-M2

    • Versiones 6.4.2 y 6.3.8:
      Incluyen ajustes en el método taskScheduler() y correcciones en el sincronizador de archivos SFTP.
      🔗 6.4.2 Release notes | 🔗 6.3.8 Release notes

  • Spring AI

    • Spring AI 1.0.0 – 6th Milestone:
      Se han introducido nuevas anotaciones (@Tool y @ToolParam) y clases de callback para definir herramientas de forma declarativa. Además, se integra el Model Context Protocol Java SDK y se han mejorado las APIs de Vector Store.
      🔗 Upgrade notes Spring AI

  • Spring AMQP

    • Spring AMQP 4.0.0 – 1st Milestone:
      Esta versión destaca por su migración completa a null-safety usando JSpecify y NullAway, y mejoras en la clase AbstractMessageListenerContainer para una mayor consistencia.
      🔗 Release notes Spring AMQP 4.0.0-M1

    • Versiones 3.2.3 y 3.1.9:
      Se han lanzado con actualizaciones que incluyen correcciones de bugs y mejoras en la misma clase mencionada.
      🔗 3.2.3 Release notes | 🔗 3.1.9 Release notes

  • Spring for Apache Kafka

    • Versiones 3.3.3 y 3.2.7:
      Estas versiones optimizan la clase MessagingMessageListenerAdapter y solucionan problemas de invocación en DelegatingInvocableHandler.
      🔗 3.3.3 Release notes | 🔗 3.2.7 Release notes

  • Spring for Apache Pulsar

    • Versiones 1.2.3 y 1.1.9:
      Con actualizaciones a Spring Framework, Micrometer y Project Reactor, estas versiones aseguran una integración fluida con Apache Pulsar.
      🔗 1.2.3 Release notes | 🔗 1.1.9 Release notes

🖥️ Otros Lanzamientos y Herramientas Clave

  • Apache NetBeans 25

    • Lo nuevo: Mejoras en la finalización de código para tipos sellados en switch y en la gestión de editores para evitar conflictos con DocumentFilter.

    • 🔗 Release notes de Apache NetBeans 25

  • Apache Tomcat 9.0.100

  • Hibernate Reactive 3.0.0 – 2nd Beta Release

    • Lo nuevo: Resuelve un ClassCastException en ReactiveEmbeddableForeignKeyResultImpl y un NullPointerException en la gestión de relaciones complejas, asegurando una compatibilidad óptima con Hibernate ORM 7.0.0.Beta4 y Vert.x SQL client 4.5.13.

    • 🔗 Changelog Hibernate Reactive 3.0.0 Beta2

  • JobRunr 7.4.1

    • Lo nuevo: Incluye correcciones de bugs y mejoras en la visualización de fechas y parámetros en la vista de trabajos.

    • 🔗 Release notes de JobRunr 7.4.1

  • Gradle 8.13.0 – 2nd Release Candidate

    • Lo nuevo: Introduce una utilidad de auto-provisioning para descargar automáticamente el JVM para el Gradle Daemon, configuración explícita para Scala y una mayor precisión en los timestamps de JUnit XML.

    • 🔗 Release notes de Gradle 8.13.0-RC2

💡 Tip en Java de la Semana

Aprovecha los Streams Paralelos para Procesar Datos a Gran Escala

Si trabajas con grandes volúmenes de datos, utiliza parallelStream() para aprovechar el poder de múltiples núcleos de CPU. Esto puede mejorar significativamente el rendimiento de operaciones intensivas sin complicar tu código.

Ejemplo:

import java.util.Arrays;
import java.util.List;

public class ParallelStreamTip {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        // Utiliza un stream paralelo para calcular la suma
        int sum = numbers.parallelStream()
                         .mapToInt(Integer::intValue)
                         .sum();
        System.out.println("Suma total: " + sum);
    }
}

Beneficios:

  • Mejora en el rendimiento: Procesa elementos en paralelo aprovechando múltiples núcleos.

  • Código conciso: Facilita la implementación de operaciones sobre colecciones sin necesidad de gestionar manualmente threads.

  • Escalabilidad: Ideal para grandes volúmenes de datos en aplicaciones concurrentes.

¡Eso es todo por esta semana! Espero que disfrutes de estas actualizaciones y sigas comprobando que el ecosistema Java se reinventa constantemente para ofrecer las mejores herramientas a los desarrolladores.
Nos vemos en la próxima edición con más noticias, tips y recursos.

¡Feliz programación y que tengas una excelente semana! 🚀💻🎉

Ricardo

P.D.: Si te ha gustado esta newsletter, ¡compártela con otros desarrolladores y ayúdanos a hacer crecer nuestra comunidad! 😊👍

Reply

or to participate.