Quarkus 1.3.0.Final released - New class loader infrastructure, GraalVM 20 support and much much more

In case you haven’t noticed, it has been a bit less than two months since our last major Quarkus release as we went through some extensive testing phases to validate our new class loader infrastructure.

A big thanks to all the people who tested our Alphas/CRs and provided feedback.

Two months? That’s a lot in the Quarkus world so expect a whole lot of new things.

Enough introduction, let’s see what 1.3 brings to the world.

Migration Guide

Eager to migrate your existing applications? Here is our migration guide for 1.3.0.Final.

What’s new?

New class loader infrastructure

Due to the innovative nature of Quarkus (especially in our test infrastructure and dev mode), we had a few recurring class loading issues.

Quarkus 1.3 comes with a brand new class loading infrastructure, fixing the structural issues we had. The new class loading infrastructure is described at length in the Class Loading Reference guide.

We ironed out this new infrastructure during the Alpha and CR phases so it is pretty solid now. If you encounter weird class loading issues, report them with a reproducer, we will include all those fixes in the upcoming 1.3.1.

One Vert.x to rule them all

A significant amount of work went into having only one Vert.x instance to handle everything in Quarkus instead of two. The idea behind this work is to reduce the resource consumption, hopefully without changing anything for you.

This is probably the most visible change: by default, an ASCII-art banner is now displayed when starting Quarkus.

You can of course:

  • customize it,

  • disable it for a given project,

  • disable it globally for all your projects.

Please refer to the documentation for more details.

Mutiny arising

A new reactive programming API has been introduced. This API named Mutiny replaces the Axle and Reactive Streams Operators models (Reactive Streams and CompletionStage). The previous models are still functional, but deprecated and will be removed in the future.

If you would like to know more, please refer to the Getting Started with Reactive guide.

Easy deployment to Kubernetes or OpenShift

The Kubernetes extension has been overhauled and now gives users the ability to deploy their Quarkus applications to Kubernetes or OpenShift with almost no effort. Essentially the extension now also takes care of generating a container image (see Container images for more details) and applying the generated Kubernetes manifests to a target cluster, after the container image has been generated.

Please refer to the documentation for more details.

Eclipse MicroProfile 3.3 specifications

The SmallRye extensions were updated to implement Eclipse MicroProfile 3.3.

A blog post with more details is coming soon.

Default HTTP read timeout

We have added the ability to configure the HTTP read timeout (via quarkus.http.read-timeout) and it comes with a default value of 1 minute.

New extensions

Container images

A massive effort has been put in facilitating the build of container images with Quarkus.

We now have a set of extensions building the images as part of the Quarkus build based on the Quarkus configuration, either using Jib, Docker or S2I.

More information in the Container Image guide.

OptaPlanner

OptaPlanner is an AI constraint solver. It optimizes planning and scheduling problems.

The OptaPlanner Quarkus extension brings all the features of OptaPlanner to Quarkus, even in native executables. If you want to discover how OptaPlanner can help, please read the OptaPlanner guide.

Security JPA

Want your users in a database managed by Hibernate ORM? Just add a couple of annotations and the Security JPA extension gets you covered.

Spring Cloud Config Client

We extended our Spring compatibility layer with a Spring Cloud Config Client.

AWS X-Ray

Support for AWS X-Ray was added so you can use it with your AWS lambdas, in JVM mode and native mode.

Qpid JMS

We now recommend the usage of the Qpid JMS extension instead of the Artemis JMS one. Features are the same, it just adds more flexibility.

The Artemis JMS extension is still there.

More information in the JMS guide.

Liquibase

We had a Flyway extension for a while, you can now also use Liquibase to handle your database schema migrations.

More on this in the Liquibase guide.

Reactive MongoDB with Panache

Love reactive? Love MongoDB? Love simple code?

Here comes the Reactive MongoDB with Panache extension. More details in the MongoDB with Panache documentation.

GraalVM 20.0 support

1.3.0.Final supports four flavors of GraalVM:

  • GraalVM 19.3.1 - JDK 8

  • GraalVM 19.3.1 - JDK 11

  • GraalVM 20.0.0 - JDK 8

  • GraalVM 20.0.0 - JDK 11

To summarize, for Quarkus, you can use:

  • JDK 8, 11, 12, 13 or 14 in JVM mode

  • JDK 8 or 11 with GraalVM 19.3.1 or 20.0.0 to build native executables

JDK 11 support in GraalVM is still in tech preview. On our side, we did not encounter any specific issues except for the compilation to be ~20% slower.

Hibernate ORM

Automatic association management via bytecode enhancement is disabled from now on.

It is possible to disable the second level caching by setting the quarkus.hibernate-orm.second-level-caching-enabled configuration property to false.

Spring compatibility layer

The Spring compatibility layer is now based on trimmed down artifacts only including the necessary APIs and annotations instead of the full Spring jars.

Less dependencies, less code and you only have the supported features around.

And more…​

  • Several improvements in our Gradle and Kotlin support

  • The <enableJni> option of the native executable building has been deprecated and marked for removal as JNI is always enabled with GraalVM 19.3+

  • The Flyway extension now supports an out-of-order configuration property

  • Our Qute templating engine is maturing and got its share of bugfixes and improvements

  • We support Keycloak 9

  • Hibernate Search + Elasticsearch was upgraded to 6.0.0.Beta5

  • You now can inject the underlying Quartz scheduler of the Quartz extension for more flexibility

Full changelog

You can get the full changelogs of 1.3.0.Alpha1, 1.3.0.Alpha2, 1.3.0.CR1, 1.3.0.CR2 and 1.3.0.Final on GitHub.

ADOPTERS.md

To share stories about Quarkus usage, we added an ADOPTERS.md file at the root of the repository.

If you are using Quarkus and would like to be interviewed on our blog or simply added to this file, please contact us and we will be happy to oblige.

Contributors

The Quarkus community is growing and has now 246 contributors. Many many thanks to each and everyone of them.

In particular for the 1.3.0 release, thanks to Akito Kidani, Alex Soto, Alexey Loubyansky, Alvaro Serrano, Andreas Eberle, Andrej Petras, Andrew Guibert, Andy Damevin, Aurea Munoz, Bill Burke, Clement Escoffier, cstdev, Darran Lofthouse, David M. Lloyd, Emmanuel Bernard, Erik Mattheis, Erin Schnabel, Felix Wong, Geoffrey De Smet, George Gastaldi, Georgios Andrianakis, Grzegorz Piwowarek, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Harald Reinmueller, Harold Sun, Ioannis Canellos, Irena Kezic, Jaikiran Pai, Jakubo96, Jan Martiska, Jason T. Greene, Jesper Skov, Joachim Segala, Johannes, John O’Hara, Jonas Scholz, Jordi Sola, Josejulio Martínez, Justin Lee, Kamesh Sampath, Katia Aresti, Kaxil Naik, Ken Finnigan, Kuzuha Shinoda, Ladislav Thon, Loïc Mathieu, Luca Burgazzoli, Luis F Munoz, Luram Archanjo, Maciej Swiderski, Manyanda Chitimbo, Marc Häbich, Martin Kouba, Martin Panzer, Matej Novotny, Max Rydahl Andersen, Michal Karm Babacek, Michał Szynkiewicz, Miroslav Stary, Nicolas Martignole, Olivier Dufour, Ondrej Machala, Paulo Casaes, Pavol Loffay, Pedro Igor, Peter Palaga, Phillip Kruger, Pierre PLR, Raffael Hertle, Ramakrishna Pattnaik, Rinaldo Pitzer Júnior, Robbie Gemmell, Roberto Cortez, Rohan Maity, Rostislav Svoboda, Sanne Grinovero, Sebastian Wastl, Sergey Beryozkin, Stefnotch, Stuart Douglas, Stéphane Épardaud, testfixer, Thomas Segismont, Timothy Power, Tobias Liese, Tomaz Cerar, Vincent Sevel, Vincent Sourin, Vinícius Ferraz Campos Florentino and Yoann Rodière.

Come Join Us

We value your feedback a lot so please report bugs, ask for improvements…​ Let’s build something great together!

If you are a Quarkus user or just curious, don’t be shy and join our welcoming community: