This episode explains why Quarkus was born: the slow startup and large memory footprint of Java applications, the evolution from classic Jakarta EE to cloud-native frameworks, its comparison with Spring Boot, and the position of Quarkus 3.x in the modern ecosystem.

Java has been the enterprise language for more than two decades. But in the cloud-native era, classic Java applications face sharp criticism: slow startup and large memory consumption. When a pod in Kubernetes has to be replaced every few minutes, a 10-second startup time feels very expensive.
Quarkus was born to answer this problem. It is a Java framework designed specifically for container-first and Kubernetes-native development, with full support for GraalVM native images. This episode takes you through the history, background, and why Quarkus is needed in the midst of Spring Boot's dominance.
This series uses a hands-on approach: every concept is explained with real examples you can run yourself. Before continuing, make sure Java 17 or 21, Maven or Gradle, and your favorite editor are ready — full details are in episode 0.
Quarkus was first introduced by Red Hat in 2018 and officially released in 2019. Its name comes from the word quark — the smallest elementary particle — implying the hope of becoming a very small and fast Java framework. Quarkus is built on top of mature technologies: CDI (Contexts and Dependency Injection), JAX-RS for REST, and Hibernate for persistence.
The key to its revolution lies in the concept of build-time augmentation. Most of the work that is usually done at runtime — such as bean scanning and metadata reading — is moved to the build phase. The result is an application that, at runtime, only executes the core that is truly needed.
The journey has been long: from the heavyweight J2EE, to Java EE, to the more modular Jakarta EE, and finally to the emergence of microservice frameworks like Spring Boot and Micronaut. Quarkus arrived as a meeting point: it offers the familiarity of the Java EE/CDI stack yet with a modern cloud-native and reactive approach.
Another turning point was the birth of GraalVM: the ability to run Java applications as native executables without a JVM. Quarkus leverages this through its mature native image integration — something other frameworks find hard to replicate seamlessly.
These are the two most complained-about problems of traditional Java. Here's a simple comparison:
# Spring Boot applications on the JVM usually take 3-8 seconds
# Quarkus JVM mode is around 0.5-1 second
# Quarkus native image is around 0.01-0.1 second
./mvnw quarkus:dev
# Output: Quarkus started in 0.723s. Listening on: http://localhost:8080Even in JVM mode alone, Quarkus is far faster than traditional frameworks thanks to build-time augmentation. In native image mode, startup can drop to tens of milliseconds with a much smaller memory footprint — critical for serverless functions that start and stop frequently.
Quarkus has live coding or hot reload: changes to Java code, resources, or configuration are applied immediately without a manual restart. This shortens the developer feedback loop from seconds to almost instant.
The modern ecosystem demands that applications be broken down into small services that can be deployed, scaled, and replaced independently. Quarkus' fast startup and small memory footprint make each service very cheap to run — perfect for serverless scenarios, scale-to-zero, and cloud functions that start and stop frequently.
Spring Boot is a giant in the Java ecosystem and very suitable for many use cases. However, Quarkus offers advantages in specific areas: faster startup, smaller memory footprint, first-class native image support, and deeper reactive architecture. Spring Boot excels in documentation and a very large community.
A comparison often discussed:
| Aspect | Quarkus | Spring Boot |
|---|---|---|
| Startup | Very fast | Moderate |
| Native image | First class | Limited |
| Reactive | Deep (Vert.x) | Supported but more complex |
| Java EE runtime | CDI, JAX-RS | Spring native |
The choice of framework depends entirely on your needs. Quarkus shines for microservices, serverless, and applications that must be resource-efficient.
If your team is already comfortable with Jakarta EE specifications, the learning curve feels short because the APIs are the same; what changes is how things work and the execution model behind the scenes.
Quarkus uses the Jakarta EE standards but with a different approach: everything is processed at build time, not runtime. This makes Quarkus applications far lighter than classic application servers such as WildFly or GlassFish, which carry the entire container at runtime. As a consequence, there are no unused components — only what the application truly needs is installed.
At the time this series was written, the stable release is on the Quarkus 3.x track. Stable features that are already mature:
Quarkus follows a fast release cadence with periodic LTS versions. A quick way to check your version:
quarkus --version
./mvnw quarkus:infoThe command ./mvnw quarkus:info also shows the Quarkus version, the Java version, and the list of installed extensions — useful to make sure the whole team is using the same version.
This episode explained why Quarkus exists and why you should consider it: the slow startup and large memory footprint problems of classic Java, the birth of Quarkus at Red Hat, comparisons with Spring Boot and Jakarta EE, and the position of Quarkus 3.x as a stable cloud-native framework.
Key takeaways:
In episode 2 we'll cover the core concepts and main architecture of Quarkus — how build-time augmentation works behind the scenes, live coding and Dev UI, the role of extensions, and how the CDI container works.
Make sure all the tools from episode 0 are installed, because from the next episode onward you'll start practicing directly.