Search code examples
javaquarkusthorntail

What is the difference between Quarkus and Thorntail?


Could you please provide more detailed difference between Quarkus and Thorntail?

This would help when considering between these two when building a new "Java cloud native app".


Solution

  • What Quarkus has over Thorntail:

    • Capability to create native executables, which gives you massive improvements in startup time and memory footprint. This can be critical for cloud deployments.
    • Even with the usual executable JAR, Quarkus is still going to have significantly smaller memory footprint (thanks to the dead code elimination), and faster startup time (because lot's of initialization work that's normally done on run-time was moved to built-time).
    • Live coding (akka hot swapping code) - best I've seen so far.
    • Better integration testing capabilities.

    Advantages of Thorntail over Quarkus:

    • Thorntail is mature, while Quarkus only just released the first Beta. This is only issue in very short term obviously.
    • Compatibility with other Java libraries is going to be less of a problem in Thorntail, in a sense that:

      • there's a higher chance that a library will work out-of-the-box in Thorntail, than there's a chance that it will work out-of-the-box in Quarkus,
      • if it's not working out-of-the-box, it's gonna be easier to make it work with Thorntail than to make it work with Quarkus.

      It should be said however that Quarkus team made an amazing job of preparing an impressive list of extensions which covers probably everything one could wish for(?)

    Conceptually Quarkus may choose to stay "lighter" in some cases. E.g. the CDI implementation in Quarkus is a subset of the CDI spec, in order to remain leaner and faster.