Quarkus 0.20.0 released

We just released Quarkus 0.20.0.

If you use Quarkus with GraalVM to build native executables, Quarkus 0.20.0 now requires GraalVM 19.1.1 so please upgrade your GraalVM installation.

What’s new?

Here are the main highlights of this release: Jackson extensions, OAuth2 extension, Camel extensions moved outside the Quarkus tree, a new MicroProfile REST Client implementation, Syslog support and a new guide for Azure deployments.

Hibernate ORM multi-line support in import scripts

We enabled multi-line support for the Hibernate ORM import scripts (typically import.sql).

You need to add semi-colons (i.e. ;) at the end of your SQL statements in your existing import scripts.

Improved integration of Hibernate Validator with CDI

Hibernate Validator is now fully integrated with CDI in Quarkus. You can even tweak the ValidatorFactory just by declaring beans in your applications. Just have a look at the updated documentation to learn more about it.

New MicroProfile REST Client implementation

In this release we’ve switched from using SmallRye REST Client to RESTEasy as an implementation of MicroProfile REST Client. As the MicroProfile REST Client builds on top of functionality that is already present within the JAX-RS Client and the RESTEasy Client, it made sense for us to combine all the clients into the RESTEasy project.

This change also brings the REST Client implementation in Quarkus up to date with the latest MicroProfile REST Client specification, version 1.3, that is part of the latest MicroProfile 3.0 platform release. Some of the new features in the release include support for SSL configuration of a client, making JSON the default MediaType if there is not one specified by @Produces or @Consumes, and easier configuration with config keys to enable setting common configuration across multiple client interfaces.

The GAV of the REST client has changed: please use io.quarkus:quarkus-rest-client from now on.

Upgrade to MicroProfile Metrics 2.0

We upgraded Quarkus to MicroProfile Metrics 2.0. The main difference is that @Counted is now always monotonic. If you need the behavior previously triggered by monotonic = false, use a @ConcurrentGauge.

Configuring a per method transaction timeout

You can now configure the transaction timeout of a specific transactional method using the @TransactionConfiguration annotation. Please refer to our Transaction guide for more information.

Syslog support for logging

Quarkus now supports shipping the logs to Syslog. Please refer to our updated logging documentation.

New extensions

Jackson extensions

Quarkus loves standards. That’s why we started by supporting JSON-B as our JSON serialization library.

We had a lot of users asking for Jackson support and, while you could use Jackson with Quarkus, it wasn’t as easy as for JSON-B.

We just added two new extensions to make Jackson a first class citizen in Quarkus:

  • quarkus-jackson for standalone usage of Jackson

  • quarkus-resteasy-jackson to use Jackson for your REST services

OAuth2 extension

The new Security OAuth2 extension allows to implement an authentication mechanism based on OAuth2 opaque tokens. It complements the existing JWT extension by allowing to authenticate a user based on a call to an introspection endpoint instead of decoding the token. An opaque token is a token with no information encoded in it, so it needs an external call to gather the user information, this external call is made against what is called an introspection endpoint.

Behind the scenes, it relies on Elytron and leverages the same annotations as the other security extensions, so it’s as easy to use as the other authentication mechanisms that Quarkus supports, and a user can easily switch between them.

If you have Keycloak as your authentication server, better use the Keycloak extension.

Camel extensions moved outside of the main Quarkus tree

From Quarkus 0.20.0, the Apache Camel extensions will have a new home at the Apache Software Foundation as an official Apache Camel subproject. The extensions have been moved to https://github.com/apache/camel-quarkus and the Maven group ID is now org.apache.camel.quarkus: you can list the available artifacts here.

The first Camel-Quarkus release is the 0.0.2, based on Camel 3.0.0-M2 and Quarkus 0.19.1. The Apache Camel team is working on a new release with more extensions based on the available Camel components, supporting the latest Camel 3.0.0 Milestone Release (Milestone 4 for completeness) and based on Quarkus 0.20.0 and GraalVM 19.1.

For contributions, improvements and discussions you can reach the Apache Camel team on Github, on Gitter and on the usual mailing lists.

Deploying Quarkus on Azure

We have a new guide covering the deployment of Quarkus applications to Microsoft Azure Cloud. If you want to deploy Quarkus applications on Azure, please take a look at it.

Full changelog

We also fixed some issues and merged a lot of improvements all over the place.

Contributors

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

In particular for this release, thanks to Alessio Soldano, Alex Soto, Alexey Loubyansky, Aleš Justin, Aris Tzoum, Bruno Borges, Cristhian Lopez, Clement Escoffier, David M. Lloyd, Edoardo Vacchi, Emmanuel Bernard, Fabrice Pipart, Frank de Jong, George Gastaldi, Georgios Andrianakis, Guillaume Dufour, Guillaume Smet, Gwenneg Lepage, Jacob Middag, Jan Martiska, Jeremie Bresson, Jirka Kremser, Justin Lee, Ken Finnigan, Loïc Mathieu, Łukasz Włódarczyk, Maciej Swiderski, Manyanda Chitimbo, Marco Mornati, Mario Fusco, Martin Kouba, Matej Novotny, Michael Simons, Michal Szynkiewicz, Moncef Aoudia, Peter Palaga, Rostislav Svoboda, Sanne Grinovero, Sébastien Blanc, Sergey Beryozkin, Stephane Epardaud, Stuart Douglas and Timothy Power.

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: