Skip to content

ivangfr/graalvm-quarkus-micronaut-springboot

Repository files navigation

graalvm-quarkus-micronaut-springboot

License: MIT Buy Me A Coffee

The goal of this project is to compare some Java Microservices Frameworks like: Quarkus, Micronaut and Spring Boot. For it, we will implement applications using those frameworks, build their JVM and Native Docker images and measure start-up times, memory footprint, etc.

Proof-of-Concepts & Articles

On ivangfr.github.io, I have compiled my Proof-of-Concepts (PoCs) and articles. You can easily search for the technology you are interested in by using the filter. Who knows, perhaps I have already implemented a PoC or written an article about what you are looking for.

Additional Readings

Categories

Latest Framework Version Used

Framework Version
Quarkus 3.34.3
Micronaut 4.10.11
Spring Boot 4.0.5

Thread Pool Configuration

For fair benchmarking across frameworks, the Quarkus and Micronaut applications are configured to use 200 worker threads, matching Spring Boot's default Tomcat thread pool.

Framework Configuration Property Default (without config)
Spring Boot Tomcat default 200
Quarkus quarkus.thread-pool.max-threads=200 Math.max(8×CPU, 200)
Micronaut Tomcat default 200

Prerequisites

  • Java 17 or higher;
  • A containerization tool (e.g., Docker, Podman, etc.)
  • Bash 4.0 or higher (macOS ships with Bash 3.2; install via brew install bash)

Docker Images

The application’s JVM and Native Docker images can be found in this Docker Hub link.

Bash scripts

We've implemented bash scripts to build, manage, and verify Docker images for the frameworks comparison.

  • build-docker-images.sh Packages JAR files (via Maven) and builds Docker images for JVM or Native applications. Supports targeting all apps, by framework (quarkus/micronaut/springboot), by type (simple-api/jpa-mysql/kafka/elasticsearch), or specific apps.

  • remove-docker-images.sh Removes Docker images. Supports targeting all, by framework, by type, or specific apps.

  • push-docker-images.sh Pushes Docker images to Docker Hub (or another registry). Supports targeting all, by framework, by type, or specific apps.

  • tag-docker-images.sh Tags local Docker images with specific version tags (e.g., v1.0, latest). Supports targeting all, by framework, by type, or specific apps.

  • verify-docker-images.sh Starts Docker containers and runs HTTP tests to verify applications are working correctly. Tests different scenarios: simple-api, jpa-mysql, kafka (producer/consumer), elasticsearch. Also exports results to CSV.

Common options for all scripts:

  • --builder=BUILDER — Container builder (podman or docker)
  • --quarkus-version=TAG — Quarkus image tag
  • --micronaut-version=TAG — Micronaut image tag
  • --springboot-version=TAG — Spring Boot image tag
  • --dry-run — Show what would be done without executing
  • -h, --help — Show help

Support

If you find this useful, consider buying me a coffee:

Buy Me A Coffee

License

This project is licensed under the MIT License.

About

The goal of this project is to compare some Java Microservice Frameworks like: Quarkus, Micronaut and Spring Boot. For it, we will implement applications using those frameworks, build their JVM and Native Docker images and measure start-up times, memory footprint, etc.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors