Skip to content

lplotni/testing-jvm-frameworks

Repository files navigation

testing-jvm-frameworks

Let's compare jvm frameworks 🎉💻

The idea is pretty simple:

How does the same simple service that is able to consume a message from a queue and expose some information via an HTTP endpoint looks like in different popular jvm frameworks/libs. And how do those services compare based on:

  • startup time
  • size of the artifact
  • memory footprint
  • personal take on the codebase feel

Playground domain

Each service uses a fictional domain consuming bookings over a queue and stores it in memory providing certain statistics for those bookings over HTTP.

Local setup used to measure

Local java version

 ~/repos/testing-jvm-frameworks > java --version
 openjdk 13.0.1 2019-10-15
 OpenJDK Runtime Environment (build 13.0.1+9)
 OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

Hardware

  • MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
  • CPU: 2,7 GHz Quad-Core Intel Core i7
  • Memory: 16 GB 2133 MHz LPDDR3

Spring-based service

Bootstapped using spring-initializr

Endpoints:

Startup time

Only providing the endpoint

2019-12-19 12:50:16.616  INFO 9235 --- [main] d.l.test.bookings.BookingsApplication    : Started BookingsApplication in 1.785 seconds (JVM running for 2.127)

Micronaut-based service

Bootsrapped using micronaut cli

Endpoints:

Startup time (graalvm & native-image)

Only providing the endpoint

15:44:12.614 [main] INFO  io.micronaut.runtime.Micronaut - Startup completed in 22ms. Server Running: http://localhost:8080

Quarkus-base service

Bootsrapped using quarkus starter

Endpoints:

Startup time

Although quarkus supports graalvm and native-images it's currently not compatilbe with java11 & graalvm (quarkusio/quarkus#5691).

Only providing the endpoint

<to come....>

Resources

About

Let's compare spring and others

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published