Quarkus 1.11 released - RESTEasy Reactive, Dev UI, and more!
For each Quarkus release, it’s the same story: it comes with a ton of exciting new features and enhancements… But believe it or not, it’s true.
1.11 is an important milestone as it marks the beginning of two amazing new features:
-
RESTEasy Reactive,
-
Our Dev UI.
But it also comes with many other enhancements be it for Micrometer, for jbang or for our Spring compatibility layer.
And this release wouldn’t be so great without all the people who tested our Betas and CR so a big thanks to everyone who participated in testing this release!
Migration Guide
Eager to migrate your existing applications? Here is our migration guide for 1.11.
GraalVM 20.3 in its Java 11 flavor is the newly recommended GraalVM version.
What’s new?
RESTEasy Reactive
As you probably guessed from the name, this work is a new JAX-RS implementation written from the ground up to work on our common Vert.x layer and is thus fully reactive, while also being very tightly integrated with Quarkus and consequently moving a lot of framework specific work (like annotation scanning and metamodel generation) to build time.
RESTEasy Reactive allows you to leverage the widely used and very powerful JAX-RS APIs to expose a REST layer for your application, while gaining a significant improvement in the maximum throughput the application can achieve. The application should also start slightly faster and consume a little less memory.
It got presented in great details by Georgios in the RESTEasy Reactive announcement.
A detailed documentation is available in the RESTEasy Reactive guide.
开发用户界面
This is the beginning of a great story: Quarkus 1.11 offers a UI dedicated to development to make it easier than ever.
Each extension can expose features in this Dev UI, be it to list the CDI beans, list your endpoints, replay your Flyway migrations, deploy to OpenShift… Sky is the limit.
Quarkus 1.11 introduces the infrastructure of this Dev UI and some features already. If you are an extension developer or wants to do some frontend work, additions and improvements are very welcome.
The Dev UI is available in dev mode only (e.g. mvn quarkus:dev
) and accessible at the /q/dev
endpoint by default.
Want to add a feature to the Dev UI? Just have a look at our Dev UI guide.
Improved Micrometer support
Our Micrometer support is continuously improving:
-
Kafka Streams metrics are now exposed.
-
Registries were moved to extensions.
As for registries, the one for Prometheus is part of our Core extensions: io.quarkus:quarkus-micrometer-registry-prometheus
.
The rest of the registries are hosted in the Quarkiverse (our home for additional extensions):
- Azure Monitor
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-azure-monitor
- Datadog
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-datadog
- JMX
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-jmx
- SignalFX
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-signalfx
- Stackdriver
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-stackdriver
- StatsD
-
io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-statsd
If you feel like contributing to these registries or creating new ones, the Quarkus Micrometer Registry project is the place you are looking for.
Spring Data REST
If you are using our Spring Data compatibility layer, you can now benefit from the Spring Data REST extension to simplify writing a CRUD REST layer. It is very similar to our REST with Panache extension.
You can find more information about it in the dedicated guide.
Non application endpoints moved to /q/
Quarkus exposes some technical endpoints that are not part of your application (for example, the Health endpoints).
To avoid conflicts with your application endpoints,
they have all been moved to the /q/
namespace.
Redirects have been added to redirect the old URLs to the new ones.
This root path can be customized with quarkus.http.non-application-root-path
.
Edit: We discovered some issues with the /q
namespace introduced in this release that are described here. These issues were resolved in 1.11.5.Final
.
Hibernate ORM
Until now, it was only possible to inject the JPA EntityManagerFactory
and EntityManager
in your applications.
Starting with 1.11, you can inject the Hibernate ORM-specific SessionFactory
and Session
if you need to access their specific methods.
Jackson
FAIL_ON_UNKNOWN_PROPERTIES
is now disabled by default for the default CDI-enabled ObjectMapper
.
See https://quarkus.io/guides/rest-json#jackson for more details about how to go back to the previous behavior.
jbang dev mode & platform support
The integration with jbang now supports enabling development mode and can use Quarkus platforms (BOM) for version management. For this you need to use jbang v0.62+.
To run it, just pass in -Dquarkus.dev
, i.e.:
jbang -Dquarkus.dev myapp.java
where myapp.java
for example is the following:
//usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS io.quarkus:quarkus-bom:1.11.0.Final@pom
//DEPS io.quarkus:quarkus-resteasy
//DEPS io.quarkus:quarkus-smallrye-openapi
import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.QuarkusApplication;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import static java.lang.System.*;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hello")
public class quarkusrest {
public static void main(String... args) {
Quarkus.run(args);
}
@GET
public String sayHello() {
return "hello from Quarkus with jbang.dev";
}
}
Notice the use of @pom
in the first line; that instructs jbang to load the pom for the platform and use it for version management and the other dependency versions can be left out.
Then with dev mode you can edit that file and save it again and Quarkus live reload feature will take care of applying the changes.
Other dev mode features like https://localhost:8080/q/dev
and https://localhost:8080/q/swagger-ui
are also available.
For now this only works for single file jbang scripts, future releases will enable it to work for multiple files too. |
Full Changelog
You can get the full changelogs of 1.11.0.Beta1, 1.11.0.Beta2, 1.11.0.CR1, and 1.11.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.
贡献者
The Quarkus community is growing and has now 417 contributors. Many many thanks to each and everyone of them.
In particular for the 1.11 release, thanks to Alex Soto, Alexey Loubyansky, Amos Feng, Andy Damevin, Auri Munoz, Bill Burke, Bruno Gonçalves, Cem Nura, Chin Huang, Chris Laprun, Christian von Atzigen, Christoph Hermann, Clement Escoffier, cristhiank, David M. Lloyd, Davide D’Alto, Dejan Bosanac, Dennis Kieselhorst, Erin Schnabel, essobedo, Falko Modler, Foivos Zakkak, Galder Zamarreño, Geoffrey De Smet, George Andrinopoulos, George Gastaldi, Georgios Andrianakis, Guillaume Le Floch, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Gytis Trikleris, Henrique Prange, Ioannis Canellos, Jan Martiška, Jordi Sola, Julien Ponge, Justin Holmes, Justin Lee, Jérôme TAMA, Kai Hudalla, Katia Aresti, kdnakt, Ken Finnigan, Ken Kwan, Kevin Viet, Knut Wannheden, Ladislav Thon, Loïc Mathieu, Lucca Biagi de Paula Prado, luneo7, Manyanda Chitimbo, Mark Little, Martin Kouba, Martin Panzer, Masafumi Miura, Matej Vasek, Max Rydahl Andersen, Mayank Kunwar, Michael Edgar, Michał Szynkiewicz, mrizzi, Nicolas Gimenez, nragon, Oscar, Peter Palaga, Phillip Kruger, Pierre Smeyers, Piotr Delert, René Grob, Robbie Gemmell, Roberto Cortez, Rostislav Svoboda, Rustam Sultansoy, Samuel Le Berrigaud, Sanne Grinovero, Saumya Singh, Sergey Beryozkin, Simon Bengtsson, Slava, Stuart Douglas, Stéphane Épardaud, Timothy Power, Viacheslav Medvediev, Vincent Sevel, Willem Jan Glerum, Yoann Rodière, Zach Kimberg, and Àngel Ollé Blázquez.
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:
-
provide feedback on GitHub;
-
craft some code and push a PR;
-
discuss with us on Zulip and on the mailing list;
-
ask your questions on Stack Overflow.