|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: 'Quarkus: Runtime and Framework for Cloud-Native Java' |
| 4 | +date: 2025-10-22 |
| 5 | +tags: quarkus runtime framework performance cloud-native |
| 6 | +synopsis: This post explores how Quarkus speeds up development, cuts costs, and makes development enjoyable for 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: 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 | +In this post, “runtime” means the full execution stack in production: JVM or native, plus Quarkus and the integrated frameworks. |
| 18 | +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. |
| 19 | + |
| 20 | +From a complementary perspective, “framework” denotes the higher-level layer that provides structure and APIs; in this sense, Quarkus can also be viewed as a framework. |
| 21 | + |
| 22 | +== Why Quarkus stands out |
| 23 | + |
| 24 | +In modern software development, runtimes and frameworks form the foundation of productivity and consistency. |
| 25 | +Frameworks promote uniformity, simplify infrastructure, and enable automation at scale. |
| 26 | + |
| 27 | +image::1-history.png[alt="A brief timeline leading to modern Java and Quarkus", width=100%] |
| 28 | + |
| 29 | +Quarkus, a truly cloud-native Java runtime, integrates multiple frameworks under one roof and optimizes them for developer efficiency, memory usage, and lightning-fast startup. |
| 30 | +As a result, it provides a solid foundation for building modern, cloud-native applications. |
| 31 | + |
| 32 | +Quarkus integrates established Java frameworks, such as CDI, JAX-RS, and Hibernate, but it also enforces its own conventions, uses annotations to drive behavior, and defines how applications are structured. |
| 33 | + |
| 34 | +In this sense, Quarkus is a framework that serves as a runtime and platform for cloud-native Java applications. It also embraces industry standards, offering compatibility with technologies such as Spring, Kafka, and Camel to support familiar and flexible development models. |
| 35 | + |
| 36 | +== Quarkus as a versatile framework |
| 37 | + |
| 38 | +Beyond standard traits common to modern frameworks, Quarkus introduces two platform-defining features: build-time optimization and deep extensibility. |
| 39 | + |
| 40 | +* *Build-time optimization*: Quarkus shifts work from runtime to build time wherever possible. |
| 41 | +This approach reduces startup overhead and memory usage, resulting in a lean, fast, and efficient application tailored for production. |
| 42 | ++ |
| 43 | +image::2-build-time-principle.png[alt="Build-time principle in Quarkus: being fast by doing less at runtime", width=100%] |
| 44 | ++ |
| 45 | +image::3-BuildTimeP-Benefits-JVM.png[alt="Benefits of Quarkus build-time processing on the JVM", width=100%] |
| 46 | ++ |
| 47 | +image::4-BuildTimeP-Benefits-native.png[alt="Benefits of Quarkus native image compared to JVM", width=100%] |
| 48 | ++ |
| 49 | +image::5-JVM-Snapshotting-Native.png[alt="JVM snapshotting vs native images in Quarkus", width=100%] |
| 50 | + |
| 51 | +* *Extensibility*: Quarkus exposes extension points for everything from startup hooks to request filters. |
| 52 | +Over 800 extensions allow seamless integration with modern technologies such as Kafka, OpenTelemetry, and OpenID Connect. |
| 53 | + |
| 54 | +These extensions integrate with Quarkus and participate in its build-time and runtime lifecycle, making them first-class citizens of the Quarkus platform. |
| 55 | + |
| 56 | +=== Simplified developer experience |
| 57 | + |
| 58 | +Frameworks succeed when they reduce complexity without sacrificing power. |
| 59 | +Quarkus does exactly that: |
| 60 | + |
| 61 | +* Preconfigures popular libraries with sensible defaults. |
| 62 | +* Offers unified configuration and developer tooling. |
| 63 | +* Provides instant feedback with live reload and continuous testing. |
| 64 | + |
| 65 | +This makes Quarkus both powerful and approachable. |
| 66 | + |
| 67 | +You can start with a simple REST endpoint and scale it into a production-grade service without changing your development model. |
| 68 | + |
| 69 | +image::6-Frictionless.png[alt="Frictionless developer experience: live reload, dev services, continuous testing", width=100%] |
| 70 | + |
| 71 | +These features reflect Quarkus’s dual role: it behaves like a framework during development, offering structure, defaults, and conventions, and it acts as a runtime during execution, delivering performance, efficiency, and operational consistency. |
| 72 | + |
| 73 | +=== Performance that matters |
| 74 | + |
| 75 | +As discussed in the link:https://cacm.acm.org/practice/application-frameworks/[ACM article on application frameworks], two recurring goals are fast startup and resilience against cascading failures. |
| 76 | + |
| 77 | +Native image generation with GraalVM enables cold starts in milliseconds and a minimal memory footprint, allowing cost-effective deployment in containers and serverless environments. |
| 78 | + |
| 79 | +Quarkus also includes structured health checks, metrics, and tracing, thereby aligning with production standards from day one. |
| 80 | + |
| 81 | +image::7-success-stories.png[alt="Real-world success stories using Quarkus", width=100%] |
| 82 | + |
| 83 | + |
| 84 | +=== Security |
| 85 | + |
| 86 | +Quarkus uses a standards-first, composable, security model. |
| 87 | +You enable what you need and configure it for your environment: |
| 88 | + |
| 89 | +* **Transport:** Enable TLS for HTTPS, or terminate TLS at your ingress. |
| 90 | +* **Authentication:** Choose Basic, form-based, mTLS, or OpenID Connect (OIDC). |
| 91 | +* **Authorization:** Enforce RBAC on web endpoints with `@RolesAllowed`, `@DenyAll`, and `@PermitAll`. |
| 92 | + |
| 93 | +This lets you apply the right security controls for each deployment. |
| 94 | + |
| 95 | +=== Observability and control surfaces |
| 96 | + |
| 97 | +Common control surfaces, such as metrics, logging, tracing, and configuration, are essential for Site Reliability Engineers (SREs) and platform teams. |
| 98 | + |
| 99 | +Quarkus exposes: |
| 100 | + |
| 101 | +* Unified logging with link:https://quarkus.io/guides/logging[`quarkus-logging`]. |
| 102 | +* Structured metrics and tracing with link:https://quarkus.io/guides/telemetry-micrometer-to-opentelemetry[Micrometer and OpenTelemetry]. |
| 103 | +* Unified configuration of all the application's aspects by using `application.properties` or environment variables. |
| 104 | + |
| 105 | +This standardization enables automation and scalable monitoring. |
| 106 | + |
| 107 | +=== Modular and production-ready |
| 108 | + |
| 109 | +Following a lean-core, modular-at-the-edge approach, Quarkus delivers: |
| 110 | + |
| 111 | +* A minimal core for fast startup. |
| 112 | +* Pluggable modules for authentication, tracing, messaging, and more. |
| 113 | +* Dev Services for automatic provisioning of databases, brokers, and containers in dev mode. |
| 114 | + |
| 115 | +Whether you're building a prototype or deploying to OpenShift, Quarkus adapts. |
| 116 | +This modularity spans both the framework-level APIs developers work with and the runtime behaviors that execute beneath them. |
| 117 | + |
| 118 | +Because Quarkus modularity is declarative and unified across extensions, it supports a platform-like developer experience without the rigidity of traditional frameworks. |
| 119 | + |
| 120 | +=== Building your stack with Quarkus |
| 121 | + |
| 122 | +Frameworks can serve as a foundation for creating higher-level abstractions. |
| 123 | + |
| 124 | +Quarkus fits naturally into this model—not by becoming a platform itself, but by enabling teams to build their customized stacks and frameworks on top of it. |
| 125 | + |
| 126 | +Unlike many traditional frameworks, Quarkus provides a unified extension architecture that supports deep customization. |
| 127 | +Organizations can tailor Quarkus to fit specific domains, technologies, or compliance needs. |
| 128 | +This enables the creation of organization-specific developer experiences, as seen in solutions like Amadeus’s SQube. |
| 129 | + |
| 130 | +By encouraging consistency, offering build-time integration, and exposing clean extension points, Quarkus supports the creation of opinionated, scalable internal frameworks without forking or reinventing the core. |
| 131 | + |
| 132 | +With Quarkus, teams can focus on business logic while the runtime handles infrastructure concerns, and the platform provides consistency across services. |
| 133 | +This is similar to Logicdrop, which refactored its entire Spring Boot stack with Quarkus, reducing container size by ~75%, achieving sub-second startup times, and significantly improving developer productivity. |
| 134 | + |
| 135 | +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]. |
| 136 | + |
| 137 | +== Conclusion |
| 138 | + |
| 139 | +Quarkus unifies the strengths of a framework and a runtime. |
| 140 | + |
| 141 | +As a framework, it provides structure, conventions, and a cohesive developer experience; as a runtime, it delivers fast startup, low memory use, and operational consistency in the cloud. |
| 142 | + |
| 143 | +This dual role helps teams standardize practices, reduce costs, and ship resilient cloud-native services — while preserving developer joy. |
| 144 | + |
| 145 | +image::8-expectations.png[alt="Setting expectations for performance and developer experience with Quarkus", width=100%] |
| 146 | + |
| 147 | +For a closer look at how Quarkus makes Java cloud-native, see the https://quarkus.io/blog/mmaler-blogpost-1-intro/[introductory blog post]. |
| 148 | + |
| 149 | +== What’s next? |
| 150 | + |
| 151 | +Explore more Quarkus use cases in the link:https://quarkus.io/blog/[official blog archive], or check out the link:https://quarkus.io/guides/[Quarkus guides] to start building your own cloud-native stack today. |
0 commit comments