Updated Jun 22, 2026

Quarkus From Zero

Quarkus calls itself "supersonic subatomic Java," which sounds like marketing until you watch a Quarkus app boot in tens of milliseconds and sip a fraction of the memory a traditional Java service needs. It was built for a world that didn't exist when classic Java frameworks were designed: containers, Kubernetes, serverless, and autoscaling — where slow startup and fat memory cost real money. If you've done Spring Boot or Jakarta EE, Quarkus will feel familiar and faster — because it runs the same standards (CDI, JAX-RS, Hibernate, MicroProfile) but optimizes them in a fundamentally different way.

The one idea that explains everything Quarkus does: move work from runtime to build time. Classic frameworks scan, reflect, and wire everything when the app starts; Quarkus does as much of that as possible when the app is compiled, so startup is nearly free — and so the app can even be compiled to a native machine-code executable. We build that mental model first, then walk the pieces you'll actually use, demystifying each.

📝 This assumes you know Java and will lean on concepts from Jakarta EE (CDI, JAX-RS) and Hibernate & JPA (Panache simplifies these). If those are new, do them first — Quarkus is "the standards, optimized," so knowing the standards pays off.

How to read this

Read in order — it builds one example (a small Product service) and adds a capability each phase. The real magic to feel is dev mode (Phase 2) and native compilation (Phase 9). Phases carry difficulty badges.

The phases

Part 1 — The Quarkus way (🟢 Basic)

  1. What Quarkus Is & Why It's Fast 🟢 — build-time vs runtime work, native images, and how it relates to Spring Boot / Jakarta EE.
  2. Dev Mode & the Developer Experience 🟢 — live reload, the Dev UI, continuous testing — the thing people fall in love with.
  3. Building REST APIs 🟢 — JAX-RS endpoints (RESTEasy Reactive) and JSON, the standards you already know.

Part 2 — A real application (🟡 Intermediate) 4. CDI in Quarkus (ArC) 🟡 — build-time dependency injection: the same @Inject, wired at compile time. 5. Persistence: Hibernate with Panache 🟡 — Panache's active-record and repository patterns over Hibernate. 6. Configuration 🟡 — MicroProfile Config, application.properties, profiles, and injecting config.

Part 3 — Going further (🔴 Advanced → 🟢) 7. Reactive Quarkus with Mutiny 🔴 — Uni/Multi, reactive vs imperative, and when each fits. 8. Testing Quarkus Apps 🟡 — @QuarkusTest, continuous testing, and testing the native build. 9. Native Compilation & Containers 🔴 — GraalVM native images, the closed-world model, and container-first deployment. 10. Production & Where to Go Next 🟢 — health/metrics, Kubernetes-native, the extension ecosystem, and what to build.

Quarkus isn't a rejection of Spring/Jakarta EE — it's the same ideas re-engineered for the container era. Knowing the standards (this guide assumes them) is exactly what makes Quarkus click.


Phase 1: What Quarkus Is & Why It's Fast →