Quarkus REST: un nuevo nombre para un viejo malentendido

Comparativa visual: Quarkus REST vs RESTEasy Reactive vs Classic desde la nave del Quarkiverso

En el universo en expansión de Quarkus, a veces es necesario detener la nave, mirar el mapa y recalibrar coordenadas. Sobre todo cuando una decisión de nomenclatura puede alterar la brújula de muchos desarrolladores.

Este artículo aclara la confusión entre quarkus-restquarkus-resteasy-reactive y quarkus-resteasy.


🚨 Diferencias entre Quarkus REST, RESTEasy Reactive y Classic

Desde Quarkus 3.9, la extensión quarkus-resteasy-reactive fue renombrada a quarkus-rest. No hubo cambios técnicos relevantes, solo un cambio de nombre para evitar confusiones.

La funcionalidad sigue siendo la misma: una única implementación moderna, eficiente y basada en Vert.x, capaz de manejar tanto código imperativo como reactivo.

El nuevo nombre quarkus-rest ya no refleja la implementación interna, sino que se alinea con el estilo arquitectónico REST, compatible tanto con programación imperativa como reactiva.


🔍 ¿Por qué era confuso?

El problema estaba en el nombre. Muchos desarrolladores creían que quarkus-resteasy-reactive solo servía para código reactivo explícito, con tipos como Uni o Multi. Y eso no era cierto.

Desde su origen, esta extensión soportó ambos estilos:

EstiloDescripciónEjemplo de retorno
ImperativoProgramación tradicional (JAX-RS)StringList<Entity>
ReactivoProgramación con MutinyUni<String>Multi<Entity>

El origen de la confusión

La confusión crecía porque quarkus-resteasy (sin «reactive») seguía existiendo como opción imperativa «clásica».

Muchos desarrolladores asumían que:

  • quarkus-resteasy → solo imperativo
  • quarkus-resteasy-reactive → solo reactivo
  • Para ambos estilos → usar las dos juntas ❌

Pero esto era incorrecto. Usar ambas extensiones juntas podía generar conflictos o redundancias, ya que quarkus-resteasy-reactive (hoy quarkus-rest) estaba diseñada para manejar ambos enfoques de forma unificada.


🧭 Nombres desde Quarkus 3.9

Nombre anteriorNombre actualEstado
quarkus-resteasy-reactivequarkus-rest✅ Recomendado
quarkus-resteasy-reactive-jacksonquarkus-rest-jackson✅ Recomendado
quarkus-resteasy-reactive-jsonbquarkus-rest-jsonb✅ Recomendado
quarkus-resteasyquarkus-resteasy⚠️ Modo clásico (sin cambios)

💡 Nota: El nombre antiguo sigue funcionando por retrocompatibilidad, pero se recomienda migrar al nuevo.


💡 ¿Qué estilo de código puedo usar con quarkus-rest?

Ambos. Y el framework se adapta automáticamente.

Imperativo (tradicional)

@GET
@Path("/saludo")
public String hola() {
    return "Hola imperativo";
}

Reactivo con Mutiny

@GET
@Path("/reactivo")
public Uni<String> holaAsync() {
    return Uni.createFrom().item("Hola reactivo");
}

Ambos funcionan sobre la misma extensión (quarkus-rest) y Quarkus se encarga del cambio de hilos cuando detecta operaciones bloqueantes.


🔄 ¿Qué tengo que hacer si usaba quarkus-resteasy-reactive?

En la mayoría de los casos, migrar es tan simple como reemplazar la extensión.

Migración automática

Si usas el comando de actualización de Quarkus:

quarkus update

El cambio suele aplicarse automáticamente, junto con otros ajustes menores en dependencias.

Migración manual

En tu pom.xml, cambia:

<!-- Antes -->
<artifactId>quarkus-resteasy-reactive</artifactId>

<!-- Después -->
<artifactId>quarkus-rest</artifactId>

En proyectos reales —especialmente en contextos empresariales— siempre es recomendable validar que no haya efectos colaterales por cambios acumulados entre versiones.

📖 Para más detalles técnicos sobre este cambio, consulta la Guía de migración oficial de Quarkus 3.9 (en inglés).


🏢 Si usas Red Hat Build of Quarkus

Si trabajas con RHBQ, puedes consultar las notas de versión específicas en el portal de documentación de Red Hat.

Estas páginas ofrecen información detallada sobre:

  • Compatibilidad con versiones de Quarkus community
  • Cambios clave y lineamientos
  • Soporte para entornos empresariales

📊 Resumen: ¿Qué extensión usar?

SituaciónExtensión recomendada
Proyecto nuevoquarkus-rest
Migración desde RESTEasy Reactivequarkus-rest
Necesitas solo imperativo (legacy)quarkus-resteasy (clásico)
Quieres imperativo + reactivoquarkus-rest

📌 Conclusión

quarkus-rest no es una nueva tecnología. Es simplemente el nuevo nombre de quarkus-resteasy-reactive, una extensión que ya soportaba ambos estilos (imperativo y reactivo) desde hace años.

El cambio de nombre elimina una ambigüedad común y deja claro que esta es la implementación moderna y recomendada para construir APIs REST en Quarkus.