Skip to content

Commit 0020144

Browse files
MichalMalerjherrman
andcommitted
Quarkus as a powerful runtime - Blog post #2
Apply suggestions from code review Co-authored-by: Jiri Herrmann <[email protected]> Clement's review Aplying Clemet's feedback VOL2; revamping of the Performance section Signed-off-by: Michal Maléř <[email protected]> Co-authored-by: Jiri Herrmann <[email protected]>
1 parent 57ae1b5 commit 0020144

File tree

9 files changed

+186
-0
lines changed

9 files changed

+186
-0
lines changed
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
---
2+
layout: post
3+
title: 'Quarkus: A Runtime and Framework for Cloud-Native Java'
4+
date: 2025-11-04
5+
tags: quarkus runtime framework performance cloud-native
6+
synopsis: This post explores how Quarkus speeds up development, cuts costs, and streamlines cloud-native Java.
7+
author: mmaler
8+
thumbnailimage: /assets/images/posts/mmaler-blog-posts/quarkus-as-a-powerful-runtime.jpeg
9+
---
10+
:imagesdir: /assets/images/posts/mmaler-blog-posts/2-Quarkus-as-a-powerful-runtime/
11+
ifdef::env-github,env-browser,env-vscode[:imagesdir: ../assets/images/posts/mmaler-blog-posts/2-Quarkus-as-a-powerful-runtime/]
12+
13+
= Quarkus: A Runtime and Framework for Cloud-Native Java
14+
15+
image::/assets/images/posts/mmaler-blog-posts/quarkus-as-a-powerful-runtime.jpeg[alt="Quarkus: Runtime and Framework for Cloud-Native Java", width=100%]
16+
17+
Cloud platforms favor services that start fast and stay lean.
18+
Quarkus is engineered for exactly that.
19+
Buildtime processing reduces runtime overhead and results in rapid startup, a small memory footprint, and frictionless deployment to containers, Kubernetes, and serverless.
20+
If your Java services need to start in milliseconds, run dense on shared nodes, and still feel great to build, Quarkus was made for that job.
21+
22+
Quarkus is a Java runtime that seamlessly integrates popular frameworks and libraries, shaping both the structure of modern applications and the developer experience behind them.
23+
In this post, “runtime” means the full execution stack in production: JVM or native, plus Quarkus and the integrated frameworks.
24+
25+
Quarkus itself can also work as a framework, as it constitutes a higher-level layer that provides structure and APIs.
26+
27+
== Why Quarkus stands out?
28+
29+
In modern software development, runtimes and frameworks form the foundation of productivity and consistency.
30+
Frameworks promote uniformity, simplify infrastructure, and enable automation at scale.
31+
32+
image::1-history.png[alt="A brief timeline leading to modern Java and Quarkus", width=100%]
33+
34+
Quarkus is a cloud-native Java runtime that integrates multiple frameworks and optimizes them for fast startup, low memory use, smooth Kubernetes and serverless deployments, and a great developer experience with live reload.
35+
Live reload provides fast feedback by showing code changes immediately without recompiling or restarting the server.
36+
37+
In addition to speed and live reload, Quarkus integrates established Java specifications such as CDI, JAX-RS, and JPA, with implementations provided by Arc (CDI), RESTEasy (JAX-RS), and Hibernate ORM (JPA).
38+
It also enforces its own conventions, drives behavior by using annotations, and defines how applications are structured.
39+
40+
In this sense, Quarkus is a framework that serves as a runtime and platform for cloud-native Java applications.
41+
It also adheres to industry standards, offering compatibility with technologies such as Spring, Apache Kafka, and Apache Camel to support familiar, flexible development models.
42+
43+
== Quarkus as a versatile framework
44+
45+
Beyond staple traits of modern frameworks, Quarkus introduces two platform-defining features: buildtime optimization and deep extensibility.
46+
47+
* *Buildtime optimization*: Quarkus shifts work from runtime to build time wherever possible.
48+
This approach reduces startup overhead and memory usage, resulting in a lean, fast, and efficient application tailored for production.
49+
+
50+
.Quarkus performs at build time what traditional frameworks do at runtime: reading configuration files, scanning annotations, and building a model of the application.
51+
image::2-build-time-principle.png[alt="Buildtime principle in Quarkus: being fast by doing less at runtime", width=100%]
52+
+
53+
.Thanks to buildtime initialization, the resulting application starts faster and consumes less memory.
54+
image::3-BuildTimeP-Benefits-JVM.png[alt="Benefits of Quarkus buildtime processing on the JVM", width=100%]
55+
+
56+
.All the benefits of buildtime initialization also apply when compiling to a native binary.
57+
image::4-BuildTimeP-Benefits-native.png[alt="Benefits of Quarkus native image compared to JVM", width=100%]
58+
59+
* *Extensibility*: Quarkus exposes extension points for everything from startup hooks to request filters.
60+
Over 800 link:https://extensions.quarkus.io[extensions] allow seamless integration with modern technologies such as Kafka, OpenTelemetry, and OpenID Connect.
61+
+
62+
These extensions integrate with Quarkus and participate in its buildtime and runtime lifecycle, making them first-class citizens of the Quarkus platform.
63+
64+
=== Simplified developer experience
65+
66+
Frameworks succeed when they reduce complexity without sacrificing flexibility.
67+
Quarkus does exactly that:
68+
69+
* Preconfigures popular libraries with sensible defaults.
70+
* Offers unified configuration and developer tooling.
71+
* Provides instant feedback with live reload and continuous testing.
72+
73+
This makes Quarkus both powerful and approachable.
74+
75+
You can start with a simple REST endpoint and scale it into a production-grade service without changing your development model.
76+
77+
.Frictionless developer experience: Vastly improved development feedback loop, unified approach to producing different package types, and using proven APIs that Java developers already know.
78+
image::6-Frictionless.png[alt="Frictionless developer experience: live reload, dev services, continuous testing", width=100%]
79+
80+
These features give developers structure, sensible defaults, and clear conventions during development, and they deliver fast startup, low memory use, and operational consistency in production.
81+
82+
=== Performance that matters
83+
84+
In practice, the two goals that matter most for production-grade frameworks at scale are fast startup and resilience against cascading failures.
85+
Rapid startup improves elasticity and recovery, while resilience prevents local faults from spreading and enables services to handle failures gracefully.
86+
For a broader industry perspective, see the link:https://cacm.acm.org/practice/application-frameworks/[ACM article on application frameworks].
87+
88+
Quarkus shifts work from runtime to build time, thus enabling faster cold starts.
89+
Additionally, it offers the option to generate native executables with GraalVM's native-image, enabling cold starts in milliseconds and a minimal memory footprint.
90+
This results in higher pod density, quicker horizontal scaling, and lower idle costs.
91+
As such, it enables cost-effective deployment in containers and serverless environments.
92+
93+
Native images often provide faster startup and lower RSS. However, they can deliver lower peak throughput and exhibit scaling limits on multi-core machines.
94+
Current native images typically use a single-threaded garbage collector, which is inefficient for large heaps and does not benefit from multiple cores.
95+
We generally recommend native execution for services that run on smaller instances, up to 2 vCPUs with roughly 2-4 gigabytes of RAM, where startup time and memory footprint dominate cost and user experience.
96+
97+
JVM execution, by contrast, takes longer to start and warm up.
98+
However, it can achieve higher peak performance through just-in-time compilation. It also scales well beyond two cores and it offers more capable garbage collectors and tuning options.
99+
100+
Choose the mode that matches your workload profile, cold-start targets, and cost envelope, and let Quarkus maintain a consistent development model across both paths.
101+
102+
* If you optimize for native execution, audit reflection and resource usage, enable dead-code elimination-friendly patterns, and consider profile-guided optimizations where appropriate.
103+
* If you optimize for JVM execution, budget for warm up, enable the right GC for your heap and latency goals, and measure steady-state throughput under realistic load.
104+
105+
Quarkus also includes structured health checks, metrics, and tracing, which align the runtime with production standards from day one.
106+
107+
Taken together, these in production choices provide measurable wins:
108+
109+
image::7-success-stories.png[alt="Real-world success stories using Quarkus", width=100%]
110+
111+
* link:https://quarkus.io/blog/vodafone-greece-replaces-spring-boot/[Vodafone Greece replaces Spring Boot with Quarkus]
112+
* link:https://www.logicmonitor.com/blog/quarkus-vs-spring[Quarkus vs. Spring Boot]
113+
114+
=== Security
115+
116+
Quarkus uses a standards-first composable security model.
117+
You enable what you need and configure it for your environment:
118+
119+
* **Transport:** Enable HTTPS in the application by configuring TLS.
120+
* **Authentication:** Choose Basic, form-based, mTLS, OpenID Connect (OIDC), or WebAuthN.
121+
* **Authorization:** Enforce RBAC on web endpoints with `@RolesAllowed`, `@DenyAll`, and `@PermitAll`.
122+
123+
This lets you apply the right security controls for each deployment.
124+
125+
=== Observability and control surfaces
126+
127+
Common control surfaces, such as metrics, logging, tracing, and configuration, are essential for site reliability engineers (SREs) and platform teams.
128+
129+
Quarkus exposes:
130+
131+
* Unified logging with link:https://quarkus.io/guides/logging[`quarkus-logging`].
132+
* Structured metrics and tracing with link:https://quarkus.io/guides/telemetry-micrometer-to-opentelemetry[Micrometer and OpenTelemetry].
133+
* Unified configuration of all the application's aspects by using `application.properties` or environment variables.
134+
135+
This standardization enables automation and scalable monitoring.
136+
137+
=== Modular and production-ready
138+
139+
Following a lean-core, modular-at-the-edge approach, Quarkus delivers:
140+
141+
* A minimal core for fast startup.
142+
* Pluggable extensions for authentication, tracing, messaging, and more.
143+
* Dev Services for automatic provisioning of databases, brokers, and containers in dev mode.
144+
145+
Whether you are building a prototype or deploying to OpenShift, Quarkus adapts.
146+
This modularity spans both the framework-level APIs developers work with and the runtime behaviors that execute beneath them.
147+
148+
Because Quarkus modularity is declarative and unified across extensions, it supports a platform-like developer experience without the rigidity of traditional frameworks.
149+
150+
=== Building your stack with Quarkus
151+
152+
We will explore this topic in depth in part 3 of this series.
153+
For now, here is how Quarkus fits into the picture.
154+
155+
Frameworks can serve as a foundation for creating higher-level abstractions.
156+
157+
Quarkus fits naturally into this model — not by becoming a platform in itself, but by enabling teams to build their customized stacks and frameworks on top of it.
158+
159+
Unlike many traditional frameworks, Quarkus provides a unified extension architecture that supports deep customization.
160+
Organizations can tailor Quarkus to fit specific domains, technologies, or compliance needs.
161+
This enables the creation of organization-specific developer experiences, including internal stacks built on a unified Quarkus extension architecture.
162+
163+
By encouraging consistency, offering buildtime integration, and exposing clean extension points, Quarkus supports the creation of opinionated, scalable internal frameworks without forking or reinventing the core.
164+
165+
By packaging Quarkus extensions, curated defaults, and service templates into an internal Quarkus stack, teams focus on business logic.
166+
At the same time, your framework layer standardizes infrastructure, security, and operational integrations across services.
167+
This has been proven by Logicdrop, who refactored their entire Spring Boot stack with Quarkus, reducing container size by ~75%, achieving sub-second startup times, and significantly improving developer productivity.
168+
169+
For more information, see the link:https://quarkus.io/blog/logicdrop-customer-story/[Logicdrop customer story] and their link:https://quarkus.io/blog/logicdrop-automating-quarkus-with-gitlab/?utm_source=chatgpt.com[GitLab automation write-up].
170+
171+
== Conclusion
172+
173+
Quarkus unifies the strengths of a development framework and a runtime.
174+
As a framework, it provides structure, conventions, and a cohesive developer experience.
175+
As a runtime, it delivers fast startup, low memory use, and operational consistency in the cloud.
176+
This dual role helps teams standardize practices, reduce costs, and ship resilient cloud-native services.
177+
178+
Quarkus is built in the open under the Apache License 2.0, governed with the Commonhaus model, and developed end-to-end on GitHub.
179+
Beyond the core project, the ecosystem includes the link:https://hub.quarkiverse.io/[Quarkiverse Hub], a community-run collection of link:https://quarkus.io/extensions/[Quarkus extensions] and related projects.
180+
The Quarkiverse Hub provides repository hosting with build, CI, and release publishing, so features land as versioned, testable modules you can adopt, fork, or extend.
181+
182+
image::8-expectations.png[alt="Setting expectations for performance and developer experience with Quarkus", width=100%]
183+
184+
So, that’s all for now, thank you for reading, and let’s meet again in the third article of this series, which will cover building your own stack with Quarkus.
185+
186+
For a closer look at how Quarkus makes Java cloud-native, see the https://quarkus.io/blog/mmaler-blogpost-1-intro/[introductory blog post].
413 KB
Loading
742 KB
Loading
508 KB
Loading
324 KB
Loading
376 KB
Loading
410 KB
Loading
306 KB
Loading
358 KB
Loading

0 commit comments

Comments
 (0)