Quarkus 3.31 - Full Java 25 support, Quarkus Maven packaging, Panache Next, and more!
It has been two months since our last feature release, and we are excited to announce the availability of Quarkus 3.31!
Quarkus 3.31 comes with a LOT of new features and improvements:
-
Full Java 25 support
-
#51587 - Introduce a quarkus Maven packaging and an assorted lifecycle
-
#50058 - Introduce Panache Next, our next generation of Panache with improved developer experience and new features for both Hibernate ORM and Hibernate Reactive
-
#50519 - Upgrade to Hibernate ORM 7.2, Reactive 3.2, Search 8.2, Elasticsearch 9.2 / OpenSearch 3.3 for clients / server (dev services)
-
#51586 - Hibernate Spatial support
-
#51314 - Upgrade to Testcontainers 2
-
#51412 - Upgrade to JUnit 6
-
#50987 - Support security annotations on Jakarta Data repositories
-
#51188 - Support
@PermissionsAllowedsecurity annotation on REST Data Panache endpoints -
#51220 - Encrypt OIDC tokens for custom TokenStateManager implementations
-
#51383 - Allow to configure OIDC DB token state manager column sizes for tokens
-
#51743 - Allow to select OIDC client for individual dynamic GraphQL clients
-
#51679 - Allow to assign a user and roles to a scheduled task
-
#51799 - Add support for OAuth 2.0 Pushed Authorization Requests to OIDC extension
-
#50603 - Enable headless AWT on Windows for native images
-
#51736 - Require Maven 3.9.0+ for Quarkus projects
-
#51049 - Add i18n to Dev UI
As usual, this release also includes many bug fixes, including fixes for some very old issues created in 2020, thanks to our amazing community!
We highly recommend to have a look at the migration guide as this version comes with some important changes.
Actualización
To update to Quarkus 3.31, we recommend updating to the latest version of the Quarkus CLI and run:
quarkus update
Note that quarkus update can update your applications from any version of Quarkus (including 2.x) to Quarkus 3.31.
For more information about the adjustments you need to make to your applications, please refer to the Quarkus 3.31 migration guide.
What’s new?
Full support for Java 25
Quarkus 3.31 adds full support for Java 25, including Java 25 runtime images and native image builds with Mandrel.
If you create new projects with Java 25, the projects will fully target Java 25 by default.
We were hard at work to ensure compatibility and avoid as many warnings as possible when running Quarkus applications on Java 25. If you encounter any issues, including warnings that shouldn’t be there, please report them on our bug tracker.
New quarkus Maven packaging and lifecycle
A few months ago, we started working on making our builds faster (see this blog post for all the gory details).
With Quarkus 3.31, we are introducing a new Maven packaging type called quarkus, designed to provide a more integrated and significantly more efficient build lifecycle.
In other words, we move away from the default Maven jar lifecycle and introduce a Quarkus-specific lifecycle optimized for Quarkus applications, avoiding the execution of goals that are unnecessary in most cases.
It is the default for newly created Quarkus projects and it can also be used for existing projects (see the migration guide for more details).
Larger applications
This "faster builds" effort is particularly beneficial for larger applications and we alleviated one of the latest bottleneck for creating VERY large applications: the number of CDI beans in the application could hit some class file limits during the build.
With Quarkus 3.31, you shouldn’t be limited by the number of CDI beans anymore.
Panache Next
If you use Hibernate ORM with Quarkus, you are probably already familiar with Hibernate ORM with Panache.
Panache Next is our next generation of Panache that brings a better developer experience and new features. While relying on the same underlying concepts as the current Panache implementation, Panache Next introduces a more intuitive API, improved type safety, and enhanced query capabilities. It also unifies the programming model between Hibernate ORM and Hibernate Reactive, stateful and stateless sessions, making it easier for developers to switch between them. Finally, it integrates seamlessly with Jakarta Data.
There would be a lot more to say but the best is to have a look at the documentation, and give it a try.
It is still experimental and we are very looking forward to your feedback.
Hibernate
Quarkus 3.31 upgrades Hibernate ORM to 7.2, Hibernate Reactive to 3.2, Hibernate Search to 8.2, and the Elasticsearch/OpenSearch clients and servers to 9.2/3.3 respectively.
It also brings support for Hibernate Spatial, allowing developers to work with spatial data types and perform spatial queries in their Quarkus applications.
JUnit 6 and Testcontainers 2
We upgraded to JUnit 6 (the update is relatively straightforward) and Testcontainers 2 (which comes with a lot more breaking changes).
The -junit5 extensions have been renamed to -junit, with relocations in place to avoid breaking existing projects.
Use quarkus update to get them updated automatically.
Security
What would be a Quarkus release without security improvements?
This release comes with a lot of improvements to our security extensions, including:
-
#50987 - Support security annotations on Jakarta Data repositories
-
#51188 - Support
@PermissionsAllowedsecurity annotation on REST Data Panache endpoints -
#51220 - Encrypt OIDC tokens for custom TokenStateManager implementations
-
#51383 - Allow to configure OIDC DB token state manager column sizes for tokens
-
#51743 - Allow to select OIDC client for individual dynamic GraphQL clients
-
#51679 - Allow to assign a user and roles to a scheduled task
-
#51799 - Add support for OAuth 2.0 Pushed Authorization Requests to OIDC extension
Registro completo de cambios
You can get the full changelog of 3.31.0.CR1, 3.31.0, and 3.31.1 on GitHub.
Colaboradores
The Quarkus community is growing and has now 1153 contributors. Many many thanks to each and everyone of them.
In particular for the 3.31 release, thanks to Ales Justin, Alexandre Dutra, Alexey Loubyansky, Andrea Boriero, Andy Damevin, Anis Da Silva Campos, Aurea Munoz, Aurélien Pupier, Bastian, Brian Setz, Bruno Baptista, cfitzw, Chihiro Ito, Chris Laprun, Christian Pieczewski, Clement Escoffier, dancer13, David M. Lloyd, Dione de Souza Silva, Evgeny Potapov, Fedor Dudinsky, Foivos Zakkak, Fouad Almalki, Francesco Nigro, Galder Zamarreño, George Gastaldi, Georgios Andrianakis, Guillaume Smet, Holly Cummins, Jakub Pietrzak, James Netherton, Jan Martiska, Jan Schatteman, Jeff Mesnil, Jens Teglhus Møller, Jiri Ondrusek, Julien Ponge, Karm Michal Babacek, Katia Aresti, Ladislav Thon, Lars, Lars Andringa, lloydmeta, Luca Molteni, Lucas, Lucas Pottersky, Lukas Lowinger, Maciej Lisowski, Marco Belladelli, Marco Sappé Griot, mariofusco, marko-bekhta, Martin Bartoš, Martin Kouba, Martin Ocenas, Martin Panzer, Matheus Cruz, matthaios.stavrou, Melloware, Michael Edgar, Michal Vavřík, Nicolo Pietro Belcastro, Olivier V, Ozan Gunalp, Phillip Krüger, Quark, Roberto Cortez, Rolf Thorup, Rolfe Dlugy-Hegwer, Rostislav Svoboda, Sanne Grinovero, Sergey Beryozkin, Severin Gehwolf, shjones, sNiXx, staillebois, Stefan Oehme, Steve Hawkins, Stéphane Épardaud, Teymur Babayev, Thomas Segismont, Thorsten Meinl, Victor Dalosto, Wei Huang, Willem Jan Glerum, xstefank, and Yoann Rodière.
Únete a nosotros
Valoramos mucho tus comentarios, así que por favor reporta errores, solicita mejoras… ¡Construyamos algo grandioso juntos!
Si eres un usuario de Quarkus o simplemente tienes curiosidad, no seas tímido y únete a nuestra acogedora comunidad:
-
proporcionar retroalimentación en GitHub;
-
escribir algo de código y enviar push a PR;
-
comentar con nosotros en Zulip y en nuestra lista de correo;
-
hacer tus preguntas en Stack Overflow.