Loading repository data…
Loading repository data…
ivangfr / repository
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.
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.
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.
| Framework | Version |
|---|---|
| Quarkus | 3.34.3 |
| Micronaut | 4.10.11 |
| Spring Boot | 4.0.5 |
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 |
Java 17 or higher;Docker, Podman, etc.)Bash 4.0 or higher (macOS ships with Bash 3.2; install via brew install bash)The application’s JVM and Native Docker images can be found in this Docker Hub link.
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 helpIf you find this useful, consider buying me a coffee:
This project is licensed under the MIT License.