Translate

miércoles, 29 de julio de 2026

Open DI: ¿el futuro de CDI impulsado por Micronaut?



Durante muchos años, CDI (Contexts and Dependency Injection) fue una de las tecnologías que definieron el desarrollo empresarial en Java. Frameworks como Jakarta EE, Quarkus y Helidon la adoptaron como base para construir aplicaciones modernas.

Sin embargo, el ecosistema siempre tuvo una tensión difícil de resolver: la flexibilidad de CDI frente al costo de su modelo de ejecución.

Gran parte de las implementaciones tradicionales dependen de escaneo del classpath, reflexión y generación dinámica de proxies. Ese enfoque ofrece una enorme potencia, pero también incrementa el tiempo de arranque, el consumo de memoria y complica escenarios como GraalVM y las aplicaciones cloud-native.

Con el lanzamiento de Micronaut 5.1, aparece una iniciativa que puede cambiar este panorama: Open DI (ODI).

Open DI es un proyecto de Eclipse EE4J que implementa Jakarta CDI Lite, pero utilizando la infraestructura de inyección de dependencias compile-time desarrollada por Micronaut.

En otras palabras, la API que utiliza el desarrollador es la de CDI, mientras que el motor que genera los beans y los proxies trabaja durante la compilación, aprovechando el sistema de annotation processors de Micronaut.

Esto significa que una aplicación puede escribir código utilizando las anotaciones estándar de CDI como:

@Inject

@Singleton

@ApplicationScoped

@Produces


pero obtener las ventajas de una resolución de dependencias prácticamente libre de reflexión en tiempo de ejecución.

Desde sus primeras versiones, Micronaut apostó por una idea muy clara: Todo lo que pueda resolverse durante la compilación no debería hacerse durante la ejecución.

Ese principio permitió conseguir tiempos de inicio extremadamente bajos y un consumo reducido de memoria, dos características muy valoradas en microservicios y funciones serverless.

Hasta ahora, esa infraestructura era exclusiva del ecosistema Micronaut.

Con Open DI, esa tecnología comienza a exponerse mediante una implementación estándar de CDI Lite.

Lo interesante no es solamente que exista otra implementación de CDI.

Lo realmente novedoso es que el modelo tradicional de CDI comienza a separarse de la idea de un contenedor basado en reflexión.

Open DI demuestra que es posible implementar la especificación utilizando generación de código durante la compilación.

Eso abre la puerta a aplicaciones que conservan la portabilidad del estándar pero con características mucho más atractivas para entornos cloud-native.

¿Y ... CDI Lite y no CDI Full? Sí. Open DI implementa CDI Lite, no la especificación completa.

Eso implica que algunas capacidades avanzadas de CDI Full, como ciertas extensiones portables, decorators o passivation, quedan fuera del alcance del proyecto.

Pero probablemente esa sea una decisión deliberada.

La mayoría de las aplicaciones modernas utilizan solamente una parte relativamente pequeña del enorme conjunto de funcionalidades que ofrece CDI Full. Apostar por CDI Lite permite simplificar la implementación y mantener el foco en el rendimiento.


El anuncio de Micronaut 5.1 prácticamente esconde una de sus novedades más importantes. Micronaut 5.1 hace posible el lanzamiento de Open DI 1.0.

Para lograrlo, el framework incorporó nuevos puntos de integración ("CDI integration hooks") dentro de su infraestructura de inyección de dependencias.

No se trata simplemente de un proyecto externo utilizando Micronaut, sino de una colaboración donde la propia arquitectura del framework evoluciona para permitir una implementación estándar de CDI.


Es demasiado pronto para saber si Open DI tendrá una adopción masiva. Pero conceptualmente resulta muy interesante.

 Durante años parecía que había que elegir entre dos caminos:

  • utilizar un estándar como CDI;
  • o utilizar un framework optimizado para compilación como Micronaut.


Open DI intenta combinar ambos mundos.

Si el proyecto madura y mantiene compatibilidad con la especificación, podríamos comenzar a ver aplicaciones que escriben código estándar de Jakarta CDI mientras aprovechan una infraestructura de ejecución mucho más eficiente.

No sería la primera vez que una innovación nacida en un framework termina influyendo sobre todo el ecosistema Java. Quizás Open DI sea otro ejemplo de ello.


Más allá de si termina convirtiéndose o no en una implementación ampliamente adoptada, Open DI representa algo muy valioso: demuestra que los estándares también pueden evolucionar.

Durante mucho tiempo asociamos CDI con reflexión, escaneo del classpath y contenedores pesados. Open DI desafía esa idea y propone una implementación basada en generación de código en tiempo de compilación.

Si esa visión prospera, el futuro de la inyección de dependencias en Java podría parecerse mucho más a Micronaut de lo que imaginábamos.


Dejo links: 

https://github.com/eclipse-ee4j/odi#open-di

https://micronaut.io/2026/07/27/micronaut-framework-5-1-0-release/


No hay comentarios.:

Publicar un comentario