In this project, we will create six applications using Spring Boot
, Quarkus
, and Micronaut
frameworks.
For each framework, we will implement one app with traditional blocking Web
using Apache Tomcat
and another app with non-blocking Reactive
using Netty
. We will also build both JVM
and Native
Docker images for the applications.
For the Spring Boot
apps, we will build additional Docker images with different configurations, including enabling or not some Java optimizations like Virtual Threads
(JEP 444
), CDS
(JEP 310
), and AOT
(JEP 295
).
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.
- [Medium] Spring Boot Performance Benchmark: Web, Reactive, CDS, AOT, Virtual Threads, JVM, and Native
- [Medium] Spring Boot 3.3.2 Benchmark: Web, Reactive, CDS, AOT, Virtual Threads, JVM, and Native
- [Medium] Spring Boot 3.3.4 Benchmark: Web, Reactive, CDS, AOT, Virtual Threads, JVM, and Native
- [Medium] Java Frameworks Performance Benchmark: Spring Boot vs. Quarkus vs. Micronaut
- [Medium] Performance Benchmark: Spring Boot 3.3.2 vs. Quarkus 3.13.2 vs. Micronaut 4.5.1
- [Medium] Performance Benchmark: Spring Boot 3.3.4 vs. Quarkus 3.15.1 vs. Micronaut 4.6.3
Framework | Version |
---|---|
Quarkus | 3.15.1 |
Micronaut | 4.6.3 |
Spring Boot | 3.3.4 |
The application's JVM and native Docker images can be found at this Docker Hub link.
- docker-build-spring-boot.sh: this script builds Spring Boot Docker images
- docker-build-quarkus.sh: this script builds Quarkus Docker images
- docker-build-micronaut.sh: this script builds Micronaut Docker images
- remove-docker-images.sh: this script removes all Docker images