Newsletter Java: Novedades de la Semana 2 Febrero 2025

Tu newsletter semanal de Programando En Java

¡Hola comunidad Java! 👋 

En esta edición encontrarás un video exclusivo que refuta el mito de que Java está anticuado, las últimas actualizaciones del JDK, novedades en frameworks y herramientas, y una sección especial sobre Micronaut y LangChain4J para integrar LLMs en tus aplicaciones. Además, te comparto un tip práctico para optimizar tu código.

¡Descúbrelo ahora! 🤗👀

Redes Sociales

🎥 Video de la Semana: ¿JAVA ESTÁ MUERTO? ALERTA CLICKBAIT 🚨‼️

En este video, desafiamos la creencia de que Java es cosa del pasado.
Descubre cómo:

  • Desmontar críticas comunes: Revisamos argumentos que aseguran que Java ya no es moderno y los refutamos.

  • Ejemplos actuales: Mostramos casos reales y aplicaciones de vanguardia que siguen usando Java de forma eficiente.

  • Innovaciones y mejoras: Hablamos de por qué JAVA se está actualizando y mejorando a un ritmo más rápido.

🔧 Actualizaciones del Ecosistema Java

1. Actualizaciones del JDK

  • JDK 24 – Build 36

    • Qué trae: Correcciones de errores y mejoras de rendimiento que fortalecen la estabilidad del entorno.

    • Detalles: Se incluyen actualizaciones desde Build 35 que solucionan issues críticos para optimizar el rendimiento en aplicaciones modernas.

    • Enlaces útiles:
      🔗 Build 36 en GitHub
      📄 Release notes de JDK 24

  • JDK 25 – Build 9

    • Qué trae: Mejoras en seguridad y gestión de memoria, enfocadas en entornos de producción exigentes.

    • Detalles: Correcciones acumuladas desde Build 8 que garantizan una JVM más robusta y eficiente.

    • Enlaces útiles:
      🔗 Build 9 en GitHub
      📄 Release notes de JDK 25

🤩 ¡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

🛠️ Novedades en Frameworks y Herramientas

GlassFish 7.0.22

  • Qué trae:

    • Actualizaciones de mantenimiento con correcciones de errores y mejoras en seguridad.

    • Incorporación de atributos Add-Opens y Add-Exports en la shell estática para mejorar la compatibilidad con nuevas versiones de Java.

  • Enlace:
    🔗 Release notes de GlassFish 7.0.22

GraalVM y Graal Development Kit

  • Native Build Tools 0.10.5:

    • Qué trae: Soporte para reachability-metadata.json y solución para el archivo temporal access-filter.json, facilitando la interoperabilidad con GraalVM Native Image.

    • Enlace:
      🔗 Release notes de Native Build Tools 0.10.5

  • Graal Development Kit 4.7.3.1:

    • Qué trae: Mejoras en la seguridad de la cadena de suministro, actualizaciones en el GDK Launcher y en el GDK CLI, ideales para desarrollar aplicaciones cloud-native.

    • Enlace:
      🔗 Graal Development Kit 4.7.3.1

Spring Cloud Stream Applications 2025.0.0 & 2024.0.1

  • Qué traen:

    • Actualizaciones en dependencias (Spring Boot 3.4.2 y 3.3.8, respectivamente) y soporte para Micrometer Tracing.

    • Nueva propiedad enableSecurityScan para gestionar la ejecución de escaneos de seguridad con Trivy.

  • Enlaces:
    🔗 Versión 2025.0.0
    🔗 Versión 2024.0.1

Quarkus 3.18.2

  • Qué trae:

    • Primera versión de mantenimiento con mejoras en la gestión de conexiones y solución a errores como el NullPointerException en Hibernate ORM.

    • Se asegura que los ejecutables nativos tengan los permisos correctos al copiarse a imágenes de contenedor.

  • Enlace:
    🔗 Changelog de Quarkus 3.18.2

WildFly 35.0.1

  • Qué trae:

    • Correcciones críticas que abordan errores como NullPointerException y problemas en la sincronización de transacciones.

  • Enlace:
    🔗 WildFly 35.0.1 Released

LangChain4j 1.0.0-Beta

  • Qué trae:

    • Primera versión beta con cambios importantes, como la deprecación de métodos generate() a favor de los experimentales chat(), que formarán parte de un nuevo Chat API.

    • Refactorización del interfaz McpTransport y de la clase ToolExecution para mejorar la configuración y ejecución de herramientas.

  • Enlace:
    🔗 Release notes de LangChain4j 1.0.0-Beta

JHipster Lite 1.28.0 y 1.27.0

  • Qué traen:

    • Múltiples mejoras en dependencias, incluyendo la actualización de Vitest 3.0.5 que corrige vulnerabilidades críticas (CVE-2025-24964) relacionadas con Cross-Site WebSocket Hijacking (CSWSH).

  • Enlaces:
    🔗 JHipster Lite 1.28.0
    🔗 JHipster Lite 1.27.0

JDKUpdater 14.0.73+109

  • Qué trae:

    • Nuevo set inicial de CVEs extraídos de la National Vulnerability Database y mejoras en la actualización de datos sin reemplazar información existente.

  • Enlace:
    🔗 Release notes de JDKUpdater 14.0.73+109

Keycloak 26.1.1

  • Qué trae:

    • Mejoras en la autenticación X.509 con la opción x509-cert-auth-crl-abort-if-non-updated y la opción force-login en el restablecimiento de credenciales.

  • Enlace:
    🔗 Release notes de Keycloak 26.1.1

Jox 0.4.0

  • Qué trae:

    • Rediseño del Channel para utilizar métodos de fábrica, optimizando su integración con hilos virtuales, y ajustes en la configuración del buffer a nivel de Flow.

  • Enlace:
    🔗 Release notes de Jox 0.4.0

🌟 Micronaut Framework 4.7.0 & LangChain4J Integration

La Micronaut Foundation ha lanzado Micronaut Framework 4.7.0 en diciembre de 2024, apenas cuatro meses después de la versión 4.6.0. Esta versión trae novedades muy interesantes para los desarrolladores que desean integrar LLMs en sus aplicaciones Java:

  • Soporte para LangChain4J:

    • Permite integrar modelos de lenguaje (LLMs) en aplicaciones Java.

    • Se ofrece soporte experimental mediante la versión 0.2.0 del módulo Micronaut LangChain4J.

  • Integración con Graal-based Dynamic Languages:

    • El módulo Micronaut Graal Languages proporciona integración con lenguajes dinámicos basados en Graal, como GraalPy (un runtime Python 3.11 compatible construido sobre GraalVM).

  • Configuración en Maven:

    • Se requiere especificar un annotation processor en el pom.xml para habilitar la funcionalidad de LangChain4J, y declarar la dependencia correspondiente.

    • Ejemplo de configuración Maven:

      <annotationProcessorPaths>
          <path>
              <groupId>io.micronaut.langchain4j</groupId>
              <artifactId>micronaut-langchain4j-processor</artifactId>
          </path>
      </annotationProcessorPaths>
      ...
      <dependency>
          <groupId>io.micronaut.langchain4j</groupId>
          <artifactId>micronaut-langchain4j-core</artifactId>
      </dependency>
  • Soporte para Chat Language Models:

    • Micronaut ahora soporta varios modelos de lenguaje, incluyendo Anthropic, Azure, Amazon Bedrock, HuggingFace, Mistral AI, Ollama, OpenAI, Google Gemini y Google Vertex AI (¡y más!).

  • Pruebas y Ejemplos:

    • Se ofrecen dependencias para probar el modelo (por ejemplo, para Ollama) y ejemplos de uso mediante anotaciones como @AiService.

    • Ejemplo de servicio AI:

      @AiService
      public interface MyAiService {
          @SystemMessage("Let's have a conversation")
          String chat(String message);
      }
      
  • Embedding Stores:

    • Micronaut facilita la integración con diferentes almacenes de datos para embeddings, como Elastic Search, MongoDB, Neo4j, Oracle, Open Search, PGVector, Redis y Qdrant.

  • Recursos Adicionales:

  • Novedades en GraalPy y GDK:

    • Oracle lanzó GraalPy version 24.1.2 en enero de 2025, ofreciendo un runtime Python 3.11 sobre GraalVM.

    • Además, se publicó el Graal Development Kit (GDK) para Micronaut 4.7.3.1 en febrero de 2025.

💡 Tip en Java de la Semana

Optimiza el rendimiento usando StringBuilder en concatenaciones dentro de bucles

Cuando necesites construir cadenas de texto dentro de un bucle, evita el uso del operador + para concatenar. Utiliza en su lugar la clase StringBuilder para minimizar la creación de objetos y mejorar la eficiencia.

Ejemplo:

public class ConcatenacionEjemplo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 1000; i++) {
            sb.append("Número: ").append(i).append("\n");
        }
        System.out.println(sb.toString());
    }
}

¿Por qué usarlo?

  • Reduce la sobrecarga de memoria al evitar la creación de múltiples objetos String.

  • Mejora la eficiencia en operaciones repetitivas de concatenación.

¡Eso es todo por esta semana! Espero que disfrutes de estas actualizaciones, ejemplos y tips, y que sigas comprobando que Java está tan vigente y potente como siempre.
Nos vemos en la próxima edición con más novedades, consejos y diversión en el mundo del desarrollo.

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

¡Y Feliz San Valentín 💖💖!

Ricardo

Reply

or to participate.