r/quarkus

Spring Boot vs Quarkus vs Micronaut with JDBC: memory, startup, and CPU
▲ 12 r/quarkus

Spring Boot vs Quarkus vs Micronaut with JDBC: memory, startup, and CPU

I ran a small comparison of equivalent Spring Boot, Quarkus, and Micronaut applications using JDBC rather than Hibernate/ORM.

All three used the same Java 25 runtime, H2 database, SQL, fixture data, request workload, and JVM flags. I ran them one at a time in the same 1 GiB / 2 vCPU Ubuntu VM, then did a separate run with all three together.

For the individual 15-minute runs:

  • Spring Boot: 4.90 s startup, 214.3 MiB median RSS
  • Quarkus: 2.25 s startup, 178.4 MiB median RSS
  • Micronaut: 2.54 s startup, 186.7 MiB median RSS

Quarkus had the lowest whole-run median RSS and reached readiness fastest. One interesting detail is that Quarkus and Micronaut converged quite closely later in the run: their final five-minute median RSS was 189.7 vs 189.4 MiB, and their sampled peaks were almost identical.

CPU usage was low for all three, so this isn't a throughput benchmark. It's mostly a look at the footprint of three equivalent small JVM applications under the same setup.

I also published the method, raw data, application sources, and analysis script so the numbers are inspectable:

https://pvrlabs.xyz/articles/spring-boot-quarkus-micronaut-jdbc.html

Experiment/data:
https://github.com/PVRLabs/experiments/tree/main/statlite/spring-quarkus-micronaut-jdbc

Curious whether these results line up with what people here see from Quarkus JVM deployments.

u/fykup — 10 days ago
▲ 22 r/quarkus+1 crossposts

Quarkus Desktop is out! Build AWT/Swing apps with CDI, Dev Mode, and hassle-free GraalVM Native Executables 🚀

Hey everyone,

PS: Two days ago I was looking to add some "Web API" capabilities into a Java Swing based Point of Sales and a found this extension (quarkus-desktop). u/quarkus

For decades, AWT and Swing have been the backbone of many powerful desktop applications. However, modernizing them—especially trying to compile them into GraalVM native executables—has always been a painful journey. Managing reflection, JNI callbacks, and OS-specific resources by hand for GraalVM is incredibly tedious.

That is why the Quarkus community just launched Quarkus Desktop!

It is a brand new official Quarkiverse extension designed to bring the absolute best of modern Java development (CDI, live reload/dev mode, centralized configuration) straight into AWT and Swing desktop apps.

🌟 Key Features:

  • True Native Executables: It completely automates the heavy lifting for GraalVM. It registers all necessary reflection, fonts, images, drag-and-drop, and clipboards for Windows, Linux, and macOS.
  • **Windows & Window Management:**No more public static void main. Windows are treated as standard CDI beans (@Singleton or @Dependent) that observe a DesktopStartupEvent fired automatically on the Event Dispatch Thread (EDT).
  • Thread Safety Made Easy: Swing requires everything to run on the EDT. Quarkus Desktop introduces an injected EdtExecutor (works great with CompletableFuture or Mutiny) and a @RunOnEdt annotation to automatically offload background work and return safely to the UI thread.
  • Native OS Integrations: Seamlessly handles macOS application menus (About, Preferences, Quit requests) by firing them as standard CDI events.
  • Rock Solid Stability: The extension is backed by a massive showcase app containing 75 pages and ~3,800 automated checks compared pixel-by-pixel between JVM and Native modes across all operating systems.

💻 Quick Code Preview:

import io.quarkiverse.desktop.awt.DesktopStartupEvent;

import jakarta.inject.Singleton;

import javax.swing.*;

@ Singleton

public class MainWindow extends JFrame {

@ Inject

MyBackendService service;

void open(@Observes DesktopStartupEvent event) {

setTitle("Quarkus Powered Swing App");

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

add(new JScrollPane(new JList<>(service.getData())));

pack();

setVisible(true);

}

}

🔗 Official Links to check it out:

What do you think about this approach? Could this help you breathe new life into older enterprise Swing systems or build lightweight native utilities?

u/poolborges — 14 days ago