|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: 'Quarkus 3.16 - OpenTelemetry Logging, LGTM Quarkus dashboard and too many things to list here' |
| 4 | +date: 2024-10-30 |
| 5 | +tags: release |
| 6 | +synopsis: 'We released Quarkus 3.16 which is packed with new features and enhancements: distributed logging with OpenTelemetry Logging, a nice default LGTM dashboard, a lot of new security features...' |
| 7 | +author: gsmet |
| 8 | +--- |
| 9 | + |
| 10 | +After the 3.15 LTS release comes Quarkus 3.16 and a lot of new features and enhancements. |
| 11 | + |
| 12 | +Quarkus 3.16 is the result of the 2 month worth of work so it's more packed than your usual Quarkus minor. |
| 13 | + |
| 14 | +Notable changes are: |
| 15 | + |
| 16 | +* https://github.com/quarkusio/quarkus/pull/43005[#43005] - Drop the compatibility layer for the Big Reactive Rename |
| 17 | +* https://github.com/quarkusio/quarkus/pull/38239[#38239] - OpenTelemetry Logging support |
| 18 | +* https://github.com/quarkusio/quarkus/pull/41264[#41264] - LGTM Quarkus dashboard |
| 19 | +* https://github.com/quarkusio/quarkus/pull/42954[#42954] - Generate serialization-free Jackson deserializers |
| 20 | +* https://github.com/quarkusio/quarkus/pull/42642[#42642] - Quarkus REST - Support record parameter containers |
| 21 | +* https://github.com/quarkusio/quarkus/pull/43331[#43331] - Introduce per invocation override of REST Client's base URL |
| 22 | +* https://github.com/quarkusio/quarkus/pull/41866[#41866] - Add quarkus-oidc-client-registration extension |
| 23 | +* https://github.com/quarkusio/quarkus/pull/42749[#42749] - Add new AuthorizationPolicy annotation to bind named HttpSecurityPolicy to a Jakarta REST endpoints |
| 24 | +* https://github.com/quarkusio/quarkus/pull/42879[#42879] - Add OIDC Client SPI |
| 25 | +* https://github.com/quarkusio/quarkus/pull/43241[#43241] - Support @PermissionsAllowed defined on meta-annotation |
| 26 | +* https://github.com/quarkusio/quarkus/pull/43283[#43283] - Introduce OidcResponseFilter |
| 27 | +* https://github.com/quarkusio/quarkus/pull/42935[#42935] - Support for two or more authentications for a single request |
| 28 | +* https://github.com/quarkusio/quarkus/pull/43609[#43609] - Support Keycloak Dev Service when OIDC client is used without OIDC extension |
| 29 | +* https://github.com/quarkusio/quarkus/issues/42534[#42534] - Integrate GraphQL clients with the TLS registry extension |
| 30 | +* https://github.com/quarkusio/quarkus/pull/43303[#43303] - Integrate Keycloak Admin Client with TLS registry |
| 31 | +* https://github.com/quarkusio/quarkus/pull/43402[#43402] - Auto log for Dev Services in containers |
| 32 | +* https://github.com/quarkusio/quarkus/pull/43441[#43441] - Add HTTP Access Log to Dev UI |
| 33 | +* https://github.com/quarkusio/quarkus/pull/42907[#42907] - Allow multiple format and themes in the Config Doc generator |
| 34 | + |
| 35 | +Note that we haven't forgotten 3.15 LTS, a 3.15.2 LTS is in the works and will be released in November. |
| 36 | +We are carefully selecting the fixes we will backport to it. |
| 37 | + |
| 38 | +== Update |
| 39 | + |
| 40 | +To update to Quarkus 3.16, we recommend updating to the latest version of the Quarkus CLI and run: |
| 41 | + |
| 42 | +[source,bash] |
| 43 | +---- |
| 44 | +quarkus update |
| 45 | +---- |
| 46 | + |
| 47 | +Note that `quarkus update` can update your applications from any version of Quarkus (including 2.x) to Quarkus 3.16. |
| 48 | + |
| 49 | +For more information about the adjustments you need to make to your applications, please refer to the https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.16[Quarkus 3.16 migration guide]. |
| 50 | + |
| 51 | +== What's new? |
| 52 | + |
| 53 | +=== Big Reactive Rename compatibility layer dropped |
| 54 | + |
| 55 | +Remember the Big Reactive Rename? |
| 56 | +It happened in 3.9 with the ultimate goal of avoiding the confusion between extensions that have a reactive core and are supporting equally well reactive and non-reactive workloads and extensions that are purely designed as reactive. |
| 57 | + |
| 58 | +A lot of extensions were renamed and we put in place relocations both for the artifacts and for the configuration. |
| 59 | + |
| 60 | +Compatibility layers have a cost and we decided to drop this one in 3.16, after the 3.15 LTS release. |
| 61 | + |
| 62 | +If you encounter issues with this change, please refer to the https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.9[Quarkus 3.9 migration guide]. |
| 63 | + |
| 64 | +If you are using `quarkus update` to update to each new version, the changes were handled for you already. |
| 65 | + |
| 66 | +=== OpenTelemetry Logging |
| 67 | + |
| 68 | +Quarkus 3.16 supports distributed logging via OpenTelemetry Logging. |
| 69 | +This is the natural continuation of the OpenTelemetry work in Quarkus. |
| 70 | + |
| 71 | +This support is part of the already existing OpenTelemetry extension and can be easily enabled via configuration properties. |
| 72 | + |
| 73 | +To learn more about it, have a look at the https://quarkus.io/guides/opentelemetry-logging[dedicated guide] |
| 74 | + |
| 75 | +=== LGTM dashboard |
| 76 | + |
| 77 | +When using the LGTM Dev Services, an out of the box Quarkus dashboard will now be provided. |
| 78 | + |
| 79 | +=== Quarkus REST |
| 80 | + |
| 81 | +In Quarkus REST, you can use custom classes as parameters of your REST methods but records were not supported. |
| 82 | +It is now the case in Quarkus 3.16. |
| 83 | + |
| 84 | +When using the REST Client, providing a URL is mandatory and you usually configure it globally. |
| 85 | +However, from time to time, you might want to configure it per-invocation. |
| 86 | +The `@Url` annotation was introduced for that: annotate a parameter of your REST Client method with it and you can dynamically provide a URL. |
| 87 | + |
| 88 | +=== Jackson |
| 89 | + |
| 90 | +You might remember that in Quarkus 3.14, we introduced https://quarkus.io/blog/quarkus-3-14-1-released/#faster-reflection-free-jackson-serializers[faster reflection-free serializers]. |
| 91 | + |
| 92 | +And you might have wondered "where are my faster reflection-free **de**serializers"? |
| 93 | + |
| 94 | +They just landed in 3.16! |
| 95 | + |
| 96 | +=== Security |
| 97 | + |
| 98 | +As usual, this version comes with several new features and enhancements related to our security layer: |
| 99 | + |
| 100 | +* https://github.com/quarkusio/quarkus/pull/41866[#41866] - Add quarkus-oidc-client-registration extension - see https://quarkus.io/guides/security-openid-connect-client-registration[documentation] here |
| 101 | +* https://github.com/quarkusio/quarkus/pull/42749[#42749] - Add new AuthorizationPolicy annotation to bind named HttpSecurityPolicy to a Jakarta REST endpoints - see https://quarkus.io/guides/security-authorize-web-endpoints-reference#authorization-policy-example[documentation] here |
| 102 | +* https://github.com/quarkusio/quarkus/pull/42879[#42879] - Add OIDC Client SPI - see https://quarkus.io/guides/security-openid-connect-client-reference#oidc-client-spi[documentation] here |
| 103 | +* https://github.com/quarkusio/quarkus/pull/43241[#43241] - Support `@PermissionsAllowed` defined on meta-annotation - see https://quarkus.io/guides/security-authorize-web-endpoints-reference#permission-meta-annotation[documentation] here |
| 104 | +* https://github.com/quarkusio/quarkus/pull/43283[#43283] - Introduce `OidcResponseFilter` - see https://quarkus.io/guides/security-oidc-code-flow-authentication#code-flow-oidc-response-filters[documentation] here |
| 105 | +* https://github.com/quarkusio/quarkus/pull/42935[#42935] - Support for two or more authentications for a single request - described https://quarkus.io/guides/security-authentication-mechanisms[here] |
| 106 | +* https://github.com/quarkusio/quarkus/pull/43609[#43609] - Support Keycloak Dev Service when OIDC client is used without OIDC extension |
| 107 | + |
| 108 | +=== TLS registry everywhere |
| 109 | + |
| 110 | +The TLS registry was introduced in Quarkus a while ago and we are iterating in each version to migrate more extensions to it. |
| 111 | + |
| 112 | +In Quarkus 3.16, two new extensions have been adapted to rely on the centralized TLS registry: |
| 113 | + |
| 114 | +- SmallRye GraphQL Client |
| 115 | +- Keycloak Admin Client |
| 116 | + |
| 117 | +=== Dev UI |
| 118 | + |
| 119 | +The Dev UI is continuously enhanced but we wanted to highlight a very nice addition: |
| 120 | +logs from your Dev Services containers and HTTP access logs are now available in the Dev UI. |
| 121 | + |
| 122 | +=== Configuration documentation |
| 123 | + |
| 124 | +When developing extensions, it can be handy to publish your configuration documentation. |
| 125 | + |
| 126 | +Until now, it was only possible to publish it in Asciidoc. |
| 127 | +With 3.16, you can also generate Asciidoc by passing `<format>markdown</format>` to the configuration of the Config Doc Maven Plugin. |
| 128 | + |
| 129 | +=== Platform component upgrades |
| 130 | + |
| 131 | +==== Camel Quarkus |
| 132 | + |
| 133 | +Camel Quarkus has been updated to 3.16.0. |
| 134 | + |
| 135 | +==== Quarkus CXF |
| 136 | + |
| 137 | +Quarkus CXF 3.16 was released and is now available in https://code.quarkus.io/?extension-search=origin:platform%20quarkus-cxf[Quarkus Platform 3.16]. |
| 138 | +Check the https://docs.quarkiverse.io/quarkus-cxf/dev/release-notes/3.16.0.html[Quarkus CXF 3.16.0] release notes for more information about what is new in this release. |
| 139 | + |
| 140 | +== Full changelog |
| 141 | + |
| 142 | +You can get the full changelog of https://github.com/quarkusio/quarkus/releases/tag/3.16.0.CR1[3.16.0.CR1], https://github.com/quarkusio/quarkus/releases/tag/3.16.0[3.16.0], and https://github.com/quarkusio/quarkus/releases/tag/3.16.1[3.16.1] on GitHub. |
| 143 | + |
| 144 | +== Contributors |
| 145 | + |
| 146 | +The Quarkus community is growing and has now https://github.com/quarkusio/quarkus/graphs/contributors[1020 contributors]. |
| 147 | +Many many thanks to each and everyone of them. |
| 148 | + |
| 149 | +In particular for the 3.16 release, thanks to AB, Adriano Moreira, Akulov S V, Ales Justin, Alex Martel, Alexandros Antonakakis, Alexey Loubyansky, Andreas Stangl, Andy Damevin, Auri Munoz, AxiomaticFixedChimpanzee, Bassel Rachid, Bruno Baptista, Chris Cranford, Chris Laprun, Christian Navolskyi, Claudio Miranda, Clement Escoffier, Dale Peakall, Daniel Bobbert, Daniel Cunha, Daniel Ezihe, Dannier Leonides Galicia Chinchilla, David M. Lloyd, Davide D'Alto, Dimitris Polissiou, Domenico Briganti, Falko Modler, Foivos Zakkak, Francesco Nigro, Galder Zamarreño, George Gastaldi, Georgios Andrianakis, Guillaume Smet, Gunnar Morling, Gunther C. Wenda, Holly Cummins, Inaki Villar, Ioannis Canellos, Jakub Gardo, Jakub Jedlicka, Jan Martiska, jcarranzan, Jeremy Whiting, Jerome Prinet, Jonathan Kolberg, Jorge Solórzano, Julien Ponge, Jérémie Bresson, Jérémie Panzer, Katia Aresti, KERN Christian, Konrad Durnoga, KS, Ladislav Thon, Lars, Laurent Perez, Loic Hermann, Lorenzo De Francesco, Loïc Hermann, Loïc Mathieu, luneo7, Marc Nuri, Marcel Stör, Marcelo Ataxexe Guimarães, Marek Skacelik, mariofusco, marko-bekhta, Martin Bartoš, Martin Kouba, Matej Novotny, Matheus Cruz, Matthias Schorsch, mauroantonio.depalma, Max Rydahl Andersen, Maximilian Rehberger, Melloware, Michael Edgar, Michal Maléř, Michal Vavřík, Nathan Erwin, Nicholas Kolatsis, Ozan Gunalp, Ozzy Osborne, Paul6552, Paulo Casaes, Peer Bech Hansen, Peter Palaga, peubouzon, PhilKes, Phillip Krüger, polarctos, Ralf Ueberfuhr, rghara, Robert Stupp, Roberto Cortez, RobinDM, Rod Cheater, Rolfe Dlugy-Hegwer, Roman Lovakov, Rostislav Svoboda, Sanne Grinovero, Sebastian Schuster, Sergey Beryozkin, Seto, sku20, Stéphane Épardaud, Thomas Canava, Thomas Segismont, Tiago Bento, tmulle, Vincent Sevel, xstefank, yamada-y0, Yasser Greyeb, Yoann Rodière, Yurii Dubinka, and Žan Ožbot. |
| 150 | + |
| 151 | +== Come Join Us |
| 152 | + |
| 153 | +We value your feedback a lot so please report bugs, ask for improvements... Let's build something great together! |
| 154 | + |
| 155 | +If you are a Quarkus user or just curious, don't be shy and join our welcoming community: |
| 156 | + |
| 157 | + * provide feedback on https://github.com/quarkusio/quarkus/issues[GitHub]; |
| 158 | + * craft some code and https://github.com/quarkusio/quarkus/pulls[push a PR]; |
| 159 | + * discuss with us on https://quarkusio.zulipchat.com/[Zulip] and on the https://groups.google.com/d/forum/quarkus-dev[mailing list]; |
| 160 | + * ask your questions on https://stackoverflow.com/questions/tagged/quarkus[Stack Overflow]. |
0 commit comments