Si alguna vez te preguntaste por qué en Quarkus hay imports de jakarta., org.eclipse.microprofile., io.smallrye. y io.quarkus., no estás solo. El ecosistema puede parecer un laberinto de especificaciones, implementaciones y proyectos con nombres que suenan parecidos.
La buena noticia: Quarkus no reinventó la rueda. Tomó lo mejor de cada mundo Java y lo integró en un framework cohesivo. Este artículo es tu mapa para entender de dónde viene cada pieza y cómo encajan.
Los estándares: Jakarta EE y MicroProfile
Quarkus no inventó sus propias APIs. Implementa estándares que la industria Java ya conoce.
Jakarta EE
Jakarta EE (antes Java EE) define las APIs empresariales clásicas. Son especificaciones que dicen qué debe hacer una funcionalidad, pero no cómo implementarla. Algunas de ellas son:
| API | Para qué sirve | Ejemplo de uso |
|---|---|---|
| CDI | Inyección de dependencias | @Inject, @ApplicationScoped |
| JAX-RS | APIs REST | @Path, @GET, @POST |
| JPA | Persistencia en BD | @Entity, EntityManager |
| Bean Validation | Validar datos | @NotNull, @Size |
| JSON-B | Serialización JSON | Automático con REST |
Cuando ves un import jakarta., estás usando un estándar Jakarta EE.
MicroProfile
MicroProfile nació para complementar Jakarta EE con APIs específicas para microservicios y cloud-native. Si Jakarta EE es el qué, MicroProfile es el cómo sobrevivir en la nube. Las más comunes son:
| API | Para qué sirve | Ejemplo de uso |
|---|---|---|
| Config | Configuración externalizada | @ConfigProperty |
| Health | Endpoints de salud | /q/health |
| Metrics | Métricas de la app | /q/metrics |
| Fault Tolerance | Resiliencia | @Retry, @Timeout, @CircuitBreaker |
| OpenAPI | Documentar APIs | /q/openapi |
| JWT | Autenticación con tokens | @RolesAllowed |
Cuando ves un import org.eclipse.microprofile., estás usando MicroProfile.
Las implementaciones: SmallRye y compañía
Los estándares anteriores definen qué, pero alguien tiene que implementar el cómo. Ahí entran las implementaciones.
| Especificación | Implementación en Quarkus | Mantenedor |
|---|---|---|
| JAX-RS | RESTEasy | Red Hat |
| JPA | Hibernate ORM | Red Hat |
| CDI | ArC (CDI lite de Quarkus) | Red Hat |
| MicroProfile Config | SmallRye Config | Comunidad + Red Hat |
| MicroProfile Health | SmallRye Health | Comunidad + Red Hat |
| MicroProfile Metrics | SmallRye Metrics / Micrometer | Comunidad |
| MicroProfile Fault Tolerance | SmallRye Fault Tolerance | Comunidad + Red Hat |
SmallRye es una familia de proyectos que implementan las especificaciones MicroProfile. Son implementaciones ligeras, optimizadas para funcionar bien con Quarkus.
Cuando ves un import io.smallrye., generalmente estás usando funcionalidades adicionales que van más allá de la especificación estándar.
El motor reactivo: Vert.x
Debajo de todo, Quarkus corre sobre Eclipse Vert.x, un toolkit para aplicaciones reactivas basado en event loop y I/O no bloqueante.
No necesitas saber los detalles para usar Quarkus, pero explica por qué:
quarkus-restes tan rápido (usa Vert.x HTTP server)- Puedes mezclar código imperativo y reactivo
- Las operaciones I/O pueden ser no bloqueantes
Si algún día necesitas acceso de bajo nivel (WebSockets personalizados, event bus interno), Vert.x está disponible. Pero para la mayoría de los casos, Quarkus te abstrae de él.
Compilación nativa: GraalVM y Mandrel
Quarkus puede correr en la JVM tradicional o compilarse a un ejecutable nativo usando GraalVM.
| Tecnología | Qué es | Cuándo usarla |
|---|---|---|
| GraalVM | VM de Oracle que puede compilar Java a binario nativo | Desarrollo, experimentación, soporte para múltiples lenguajes |
| Mandrel | Distribución de GraalVM mantenida por Red Hat | Producción con Quarkus, más ligera (solo Java) |
En términos simples: Mandrel es GraalVM enfocada exclusivamente en Quarkus. No incluye soporte para otros lenguajes (JavaScript, Python, Ruby), lo que la hace más pequeña y fácil de mantener.
Para desarrollo y aprendizaje, cualquiera de las dos funciona. Para producción empresarial con soporte de Red Hat, Mandrel es la opción recomendada.
El universo que une todo: Quarkus
Finalmente, Quarkus es el universo donde todas estas tecnologías convergen y cobran sentido. Aporta:
ArC: CDI optimizado
Quarkus no usa la implementación tradicional de CDI (Weld). Creó ArC, una versión optimizada que resuelve la inyección de dependencias en tiempo de compilación, no en runtime.
Extensiones
Las extensiones de Quarkus no son simples dependencias Maven. Son adaptadores que integran librerías al modelo de build-time de Quarkus. Por eso al agregar una extensión obtienes:
- Configuración automática
- Dev Services (contenedores locales)
- Compatibilidad con compilación nativa
- Integración con Dev UI
Funcionalidades propias
Quarkus también aporta innovaciones que no vienen de ningún estándar:
| Funcionalidad | Qué hace |
|---|---|
| Panache | Simplifica JPA con Active Record o Repository |
| Dev Services | Levanta contenedores automáticamente en desarrollo |
| Dev UI | Panel web para explorar la aplicación |
| Continuous Testing | Tests que corren automáticamente al guardar tu código |
Conclusión
No necesitas dominar cada proyecto para usar Quarkus. El framework te abstrae de la complejidad y te permite enfocarte en tu código de negocio.
Pero cuando veas un import extraño o quieras entender por qué algo funciona como funciona, ahora tienes el mapa:
- Jakarta EE y MicroProfile definen los estándares
- SmallRye, RESTEasy y Hibernate los implementan
- Vert.x proporciona el motor reactivo
- GraalVM/Mandrel habilitan la compilación nativa
- Quarkus es el universo que lo une todo y agrega su propia magia
Con este mapa, el ecosistema deja de ser un laberinto. Bienvenido al Quarkiverso. 🚀

