Quarkus 1.13 released - DevServices, Kubernetes Service Binding, OpenTelemetry

Today, we announce the availability of Quarkus 1.13.0.Final.

This release brings several new features:

  • DevServices simplifies testing with containers.

  • OpenTelemetry is now supported via two new extensions.

  • Kubernetes Service Binding simplifies the deployment on Kubernetes.

  • We introduced a new MicroProfile REST Client based on RESTEasy Reactive.

  • quarkus-jacoco can generate your test coverage reports.

And as usual its fair share of bugfixes and small improvements all over the place.

Migration Guide

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

What’s new?

Zero Config Setup with DevServices

With Quarkus, our main goal is to make developer lives easier and bring back developer joy. In 1.13, we added a new element to the (not so secret) Quarkus recipe: DevServices.

When starting dev mode (live reload), we are now able to automatically start containers for your tests and you don’t even need to configure anything: the container is automatically wired to the Quarkus dev mode configuration.

For instance, if you’re developing a PostgreSQL-based application, as soon as you have the PostgreSQL JDBC extension in your pom, a container will be started for testing using Testcontainers.

You only need to define your configuration for production with the %prod. prefix. The dev mode one is taken care of.

You will find all the details about this new feature in the Datasource guide.

OpenTelemetry Extension

The OpenTelemetry project from the Cloud Native Computing Foundation is an initiative to merge the OpenTracing and OpenCensus projects to provide a common project for all telemetry. Tracing is the first piece of OpenTelemetry which GA’d in the last month, metrics and logging are still under development.

Quarkus 1.13 introduces a new extension for OpenTelemetry called quarkus-opentelemetry which offers the ability to trace requests. For exporting traces to a Jaeger collector, use the quarkus-opentelemetry-exporter-jaeger extension which depends on quarkus-opentelemetry. With this initial version, traces are available in JAX-RS Resource methods, REST Client, and Reactive Messaging with Kafka. Further integrations with other extensions will come in future releases, as well as a guide and quickstart.

Kubernetes Service Binding

Quarkus supports binding services to applications via the Service Binding Specification for Kubernetes. Specifically Quarkus implements the Application Projection part of the specification, thus allowing applications running in appropriately configured Kubernetes clusters to consume services (such as a Database or a Broker) without the need for user configuration.

Currently, the following Quarkus extensions support this feature:

  • quarkus-jdbc-mariadb

  • quarkus-jdbc-mssql

  • quarkus-jdbc-mysql

  • quarkus-jdbc-postgresql

  • quarkus-kafka-client

  • quarkus-smallrye-reactive-messaging-kafka

This list of extensions will grow as more services with supported bindings become available on Kubernetes.

To enable Service Binding support, in addition to one of the currently supported extensions, the quarkus-kubernetes-service-binding extension needs to be added to the application dependencies.

Everything you need to know about it is detailed in the Kubernetes guide.

MicroProfile REST Client based on RESTEasy Reactive

We are continuing to enrich the RESTEasy Reactive experience and, this time, it’s on the REST Client front. A new RESTEasy Reactive-based REST Client extension quarkus-rest-client-reactive is present in Quarkus 1.13.

Note that RESTEasy Reactive can be used for reactive but also for traditional blocking workloads.

Vert.x based Websockets

Until now, if you wanted websockets support in your applications, you had to switch to Undertow.

Quarkus 1.13 introduces a pure-Vert.x-based Websockets extension called quarkus-websockets.

Test Coverage Reports

Given the way Quarkus is architected, it was not as easy as it should be to generate test coverage reports with Jacoco.

Quarkus 1.13 comes with quarkus-jacoco which will automatically generate your test coverage reports. And it does not require any Maven setup anymore. More about this in our updated guide.

@QuarkusIntegrationTest

@QuarkusIntegrationTest is the natural evolution of @NativeImageTest (which is still supported) and can be used to launch and test the artifact produced by the Quarkus build, and supports testing a jar (of all types), a native binary or container-image. For more information see this part of the documentation and the Javadoc of the annotation itself.

Full Changelog

You can get the full changelogs of 1.13.0.CR1, and 1.13.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 461 contributors. Many many thanks to each and everyone of them.

In particular for the 1.13 release, thanks to adrien, Alexey Loubyansky, Andrii Pyvovarov, Andy Damevin, Ante Butić, antoniodvr, Auri Munoz, Bernhard Lutzmann, Bill Burke, Bruno Leonardo Gonçalves, Cem Nura, Chris Laprun, Christopher Chianelli, Clement Escoffier, David M. Lloyd, Davide D’Alto, Edoardo Vacchi, Emanuel Alves, Eric Deandrea, Erin Schnabel, essobedo, Falko Modler, Foivos Zakkak, Geoffrey De Smet, George Gastaldi, Georgios Andrianakis, Guillaume Le Floch, Guillaume Smet, Gytis Trikleris, Ioannis Canellos, ismail BASKIN, Jacob Middag, Jaikiran Pai, Jan Martiška, Jim Ma, JiriOndrusek, Johnnes Souza, Jonathan Meier, Jose, Josef Smrcka, Julien Ponge, Justin Lee, Katia Aresti, Ken Finnigan, Knut Wannheden, Ladislav Thon, Lena Brueder, Loïc Mathieu, Maciej Swiderski, manusa, Manyanda Chitimbo, markusdlugi, Martin Kouba, Martin Panzer, Matej Novotny, Matthias Andreas Benkard, Max Rydahl Andersen, Mayank Kunwar, Michał Szynkiewicz, mrizzi, PAPADOPOULOS Nikolaos, Peter Palaga, Philip Hayes, Phillip Krüger, Robbie Gemmell, Roberto Cortez, Rostislav Svoboda, ruromero, Sanne Grinovero, SaumyaSingh1, Sergey Beryozkin, Sergio Sivelli, Shaaf, shawkins, Simon Hofer, Stephen Nimmo, Steven Hawkins, Stuart Douglas, Stéphane Épardaud, Suleimenov Yelzhas, Thomas McWork, Timothy Power, Tobias Stadler, Vasilis Andritsoudis, Vincent Sevel, xstefank 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: