Quarkus 1.2.0.Final released - GraalVM 19.3.1 support, Metrics, Cache extension, and more

It has been one month since your last Quarkus fix and you are getting used to our frequent releases so here comes 1.2.0.Final. We have been hard at work to bring a lot of exciting new features: GraalVM 19.3.1 support is finally there, we added a new Cache extension to easily cache everything, we added default metrics for several extensions, our HashiCorp Vault support was greatly improved and more…​

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

Excited to learn more about all this? Let’s detail a bit more all these new features.

What’s new?

GraalVM 19.3.1 support

1.2.0.Final supports three flavors of GraalVM:

  • GraalVM 19.2.1 - JDK 8 (this one will be dropped in 1.3)

  • GraalVM 19.3.1 - JDK 8

  • GraalVM 19.3.1 - JDK 11 (yes, JDK 11!)

Together with Red Hat’s OpenJDK team and the GraalVM team, we finally got around all the issues we encountered with the 19.3 branch and 19.3.1 brought the latest fixes we needed.

Finally, you can start using JDK 11 even when you want to build native executables. GraalVM for JDK 11 is still in tech preview though.

19.3.0 is not supported, you need either 19.2.1 or 19.3.1.

To summarize, for Quarkus, you can use:

  • JDK 8, 11, 12 or 13 in JVM mode - support for JDK 14 is coming in 1.3

  • JDK 8 or 11 to build native executables

Cache extension

A brand new Cache extension allows to cache the return values of your CDI beans methods. It is based on Caffeine and comes with a set of annotations to drive it.

In a nutshell, it looks like:

@ApplicationScoped
public class CachedBean {

    @CacheResult(cacheName = "foo")
    public MyObject load(MyKey key)
        // Call expensive service here.
    }

    @CacheInvalidate(cacheName = "foo")
    public void invalidate(MyKey key) {
    }

    @CacheInvalidateAll(cacheName = "foo")
    public void invalidateAll() {
    }
}

Want to learn more? We have a guide for you.

Metrics

We are continuously improving the observability of Quarkus and after working on adding default Health probes, we are now working on adding default metrics.

In 1.2.0, we added metrics for Agroal (our database connection pool) and Hibernate ORM. More will follow.

If you are looking for a starting point to contribute to Quarkus and want metrics for a particular extension, this would be a good first contribution!

Vault improvements

We added several improvements to our HashiCorp Vault support:

  • The Vault Transit Secret Engine is now supported: you can now use Vault for "encryption as a service". Everything you need to know about it is in the dedicated guide.

  • Support for multiple KV paths has been added.

SmallRye Fault Tolerance 4.x

As explained at length in this blog post, we have a brand new MicroProfile Fault Tolerance implementation.

It should be faster than before (and we have a few more improvements in the works for 1.3) so give it a try and report back if you encounter any issue.

Hibernate ORM

Automatic association management disabled

The Hibernate ORM enhancement has a feature that automatically manages the associations for you: you add an element at one end of an association and it’s automatically added at the other end.

This is very practical but doesn’t work very well in some situations and things can quickly get tricky. We decided to disable it in Quarkus.

More tuning

You can now configure the following from the application.properties:

  • Physical naming strategy

  • Implicit naming strategy

  • If identifiers should all be quoted

See our documentation for all the Hibernate ORM configuration properties.

Hibernate Validator localization

If you configure your Quarkus application to support several locales, Hibernate Validator will now automatically resolve the locale to use from the Accept-Language header if you’re validating beans or methods in the context of a REST call.

More information in the Validation guide.

Support for Transaction observers in ArC

ArC, our CDI implementation, now has support for transaction observers, typically @Observes(during = TransactionPhase.AFTER_SUCCESS).

More Qute

You can now use the Qute template engine when sending emails with the Mailer extension.

Now using UBI as base image

We used Alpine for a while for our base image for JDK-based Dockerfiles. We now consistently use UBI images for JDK and native Dockerfiles.

And more…​

  • You can now override the logging configuration of each handler on category level.

  • We upgraded to Hibernate Search 6.0.0 beta3.

  • We now use mongodb-driver-sync instead of the legacy mongo-java-driver artifact

Full changelog

You can get the full changelogs of 1.2.0.CR1 and 1.2.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

Quarkus has now 215 contributors. Many many thanks to each and everyone of them.

In particular for the 1.2.0 release, thanks to Akito Kidani, Alex Soto, Alexander Zimmermann, Alexey Loubyansky, Anatoly Sablin, Andreas Eberle, Andreas Paschwitz, Andrew Guibert, Andy Damevin, Arne Mejlholm, Bruno Devaux, Clement Escoffier, Damien, David M. Lloyd, David Walluck, Dennis Baerten, Emmanuel Bernard, George Gastaldi, Georgios Andrianakis, Gordon Hutchison, Grzegorz Piwowarek, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Gytis Trikleris, Harald Reinmueller, Ian Wormsbecker, Ioannis Canellos, Irena Kezic, Jaikiran Pai, Jan Martiska, Jason T. Greene, Johannes, Justin Lee, Ladislav Thon, Loïc Mathieu, Manyanda Chitimbo, Marcel Overdijk, Mark Little, Martin Kouba, Matej Novotny, Matt Berteaux, Matthias Harter, Max Rydahl Andersen, Michael J. Simons, Michal Szynkiewicz, Nayden Gochev, Pavol Loffay, Pedro Igor, Peter Palaga, Rohan Maity, Romain Quinio, Rostislav Svoboda, Sanne Grinovero, Sergey Beryozkin, Stuart Douglas, Stéphane Épardaud, Tobias, Vincent Sevel, Vinícius Ferraz Campos Florentino, x80486 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: