Novedades en MicroProfile 5.0

Entregado bajo los auspicios del MicroProfile Working Group y cinco meses después del lanzamiento de MicroProfile 4.1 , el lanzamiento anticipado de MicroProfile 5.0 se puso a disposición de la comunidad de Java. Esta nueva versión se alinea con Jakarta EE 9.1 y actualiza las ocho API principales desarrolladas por la comunidad más una API independiente:

Las API CDI, JAX-RS, JSON-P y JSON-B, originalmente basadas en sus JSR equivalentes , ahora se basan en sus especificaciones equivalentes de Jakarta EE 9.1 , a saber, Jakarta Contexts and Dependency Injection 3.0 (CDI), Jakarta RESTful Web Services 3.0 (JAX-RS), Jakarta JSON Processing 2.0 (JSON-P) y Jakarta JSON Binding 2.0 (JSON-B). Detrás de escena, MicroProfile 5.0 utiliza Jakarta Annotations 2.0 , una especificación que “define una colección de anotaciones que representan conceptos semánticos comunes que permiten un estilo declarativo de programación que se aplica a una variedad de tecnologías Java”.

Las ocho API desarrolladas por la comunidad se actualizaron para usar las dependencias de Jakarta EE 9. Como tal, hay cambios importantes en todos ellos. Examinamos algunas de las API actualizadas aquí.

Configuración de microperfil 3.0

La API de configuración de MicroProfile proporciona configuración de tiempo de ejecución desde fuentes externas para minimizar el reempaquetado de una aplicación. Basadas en un sistema ordinal basado en prioridades, estas fuentes incluyen: propiedades del sistema ( 

ordinal = 400
); variables ambientales ( 
ordinal = 300
); y un 
.properties
archivo ( 
ordinal = 100
). Se da prioridad al valor ordinal definido más alto. Las fuentes personalizadas también se pueden definir mediante la implementación de la 
<a href="https://download.eclipse.org/microprofile/microprofile-2.0-javadocs-test/apidocs/org/eclipse/microprofile/config/spi/ConfigSource.html">ConfigSource</a>
interfaz.

El único cambio importante para Config 3.0 es que no se puede usar con versiones anteriores de Jakarta EE o Java EE debido a la migración del 

javax
espacio de nombres al espacio de 
jakarta
nombres. Otras actualizaciones incluyen: una aclaración en el JavaDoc para la 
<a href="https://download.eclipse.org/microprofile/microprofile-2.0-javadocs-test/apidocs/org/eclipse/microprofile/config/inject/ConfigProperty.html">@ConfigProperties</a>
anotación; una solución para una inconsistencia entre la especificación y el JavaDoc relacionado con la 
<a href="https://github.com/eclipse/microprofile-config/blob/4bda7c776e00a3baf41af728215900e02485de2c/api/src/main/java/org/eclipse/microprofile/config/spi/Converter.java#L140">Converter</a>
interfaz; y una solución para un error TCK en la 
<a href="https://github.com/eclipse/microprofile-config/blob/795080d31fc57ba17dc2506425acfee3b4566b72/tck/src/main/java/org/eclipse/microprofile/config/tck/ConfigProviderTest.java#L50">ConfigProviderTest</a>
clase.

Métricas de microperfil 4.0

La API de métricas de MicroProfile proporciona datos de telemetría de series temporales para aplicaciones de MicroProfile. Un 

/metrics
punto final integrado envía datos en formato Prometheus. Las métricas personalizadas se pueden definir a través de anotaciones integradas como @Counted , 
@Gauge
y .
@Histogram
@Timed

Los cambios importantes en Metrics 4.0 incluyen: una 

Timer
clase actualizada en la que 
Timer.update(long duration, java.util.concurrent.TimeUnit)
se ha cambiado a 
Timer.update(java.time.Duration duration)
; a 
<a href="https://github.com/eclipse/microprofile-metrics/blob/master/api/src/main/java/org/eclipse/microprofile/metrics/MetricRegistry.java">MetricRegistry</a>
que se ha cambiado de una clase abstracta a una interfaz; los métodos 
Metadata.getDescription()
y ahora devuelven tipo en lugar de ; y nuevos métodos, y , que devuelven tipo .
Metadata.getUnit()
String
Optional&lt;String&gt;
Metadata.description()
Metadata.unit()
Optional&lt;String&gt;

Tolerancia a fallas de microperfil 4.0

La API de Tolerancia a fallas de MicroProfile proporciona una serie de estrategias (tiempos de espera, reintentos, disyuntores, etc.) para manejar fallas dentro de una aplicación. Cada una de estas estrategias tiene una anotación correspondiente que, cuando se aplica, redirigirá la aplicación con un curso de acción necesario para minimizar los efectos adversos de una falla.

Los cambios importantes en Fault Tolerance 4.0 están relacionados principalmente con su interacción con la API de métricas. Esta especificación ahora es compatible con las etiquetas métricas que se introdujeron en Metrics 2.0. Y para mantener la coherencia con otras API de MicroProfile, el 

application:
alcance se reemplazó por el 
base:
alcance. Esto significa que las métricas de Fault Tolerance se exportan a través del 
/metrics/base
punto final que reemplaza el 
/metrics/application
punto final utilizado anteriormente.

Presentada en la conferencia DevNation de Red Hat el 27 de junio de 2016, la iniciativa MicroProfile se creó como una colaboración de proveedores para ofrecer microservicios para Java empresarial. El lanzamiento de MicroProfile 1.0 , anunciado en JavaOne 2016, constaba de tres API basadas en JSR consideradas mínimas para crear microservicios: JSR-346 – Inyección de contextos y dependencias (CDI); JSR-353 : API de Java para procesamiento JSON (JSON-P); y JSR-339 : API de Java para servicios web RESTful (JAX-RS).

MicroProfile 4.0, lanzado en diciembre de 2020 , fue la primera versión entregada bajo el entonces recién formado Grupo de Trabajo de MicroProfile, establecido en octubre de 2020 . Los miembros actuales del grupo de trabajo incluyen Oracle , IBM , Red Hat , Tomitribe , Fujitsu , Atlanta Java User Group , Garden State Java User Group e iJUG .

El grupo de trabajo de MicroProfile actualmente está evaluando OpenTelemetry , un proyecto formado por la fusión de los proyectos OpenTracing y OpenCensus , y el proyecto Micrometer , una fachada de métricas de aplicaciones independiente del proveedor, como posibles candidatos para reemplazar las API de OpenTracing y Metrics, respectivamente.