Quarkus 1.6 released - AppCDS, Google Cloud Functions, GraalVM 20.1.0 and more...
Summer is here and we are still hard at work improving Quarkus at a rapid pace.
Of course, we improved our existing features, our documentation and fixed bugs but we also delivered some very interesting new features:
-
Integrated generation of AppCDS archives to improve startup time in JVM mode
-
Support for Google Cloud Functions - joining the existing Amazon Lambda and Azure Functions support
-
Reactive IBM Db2 client (the Db2 JDBC driver is coming in 1.7)
-
An Apache Cassandra client
-
WebJars locator extension and Spring @Scheduled support
-
Better tools to troubleshoot your applications
-
Upgrade to GraalVM 20.1.0
A lot of this was made possible by the invaluable feedback and involvement of the community so keep it coming, open issues, start threads on the quarkus-dev
list, chat with us on Zulip.
We move fast and feedback is directly injected in the next version of Quarkus.
Migration Guide
Eager to migrate your existing applications? Here is our migration guide for 1.6.
What’s new?
Fast-jar packaging format
The fast-jar packaging format is maturing. If you haven’t tested it yet on your application, we recommend you give it a try as we will make it the default at some point in the future.
You can test it by adding the following lines to your application.properties
:
quarkus.package.type=fast-jar
or passing -Dquarkus.package.type=fast-jar
when you build.
AppCDS
Quarkus 1.6 introduces the ability to automatically generate AppCDS as part of the build process.
Essentially if you are using Java 11+, by configuring quarkus.package.create-appcds=true
(yes, it’s that simple!) Quarkus will create an AppCDS file that you can then leverage to improve the
startup time of the application in JVM mode. The AppCDS file is named app-cds.jsa
and is generated in the same directory as the application jar (all types of Quarkus jars are supported).
To make use of it, just run java -jar -XX:SharedArchiveFile=app-cds.jsa myapp.jar
from the directory where both the jar and AppCDS file are present
(this doesn’t have to necessarily be the original build directory, but the files do need to be in the same directory and the java process must be run from it).
Note that this directory requirement isn’t a Quarkus specific limitation, but a JVM requirement stating that the classpaths must be the same when building the AppCDS file and running the application with it.
Finally, make sure to use to same JVM version when building and running the application (again this is a JVM limitation).
In the coming days we will have a lot more details to share via a dedicated blog post.
Although this feature is experimental and still needs to be integrated properly with the container-image generation extensions, it nevertheless is fully functional.
CDI development mode endpoint
Quarkus 1.6 introduces some useful endpoints have an overview of your CDI context with /quarkus/arc/beans
and /quarkus/arc/observers
.
They are described at length in the CDI reference guide.
Extensions
Google Cloud Functions
Quarkus now support serverless on all the major cloud providers with the addition of the support for Google Cloud Functions.
Eager to discover more about it, we have two new guides for you either if you want to develop a simple function or use HTTP.
Apache Cassandra client
An Apache Cassandra client has joined the Quarkus Platform.
Learn more about how to use Cassandra in your Quarkus applications in the dedicated guide.
WebJars Locator extension
If you are using webjars in your application, we now provide an extension allowing you to drop the version from the webjar path.
More information in our documentation.
Spring @Scheduled support
Our Spring compatibility layer is becoming more and more comprehensive with the addition of the support for Spring’s @Scheduled
annotation.
What we support and the current limitations are all described in this new guide.
OpenTracing in the GraphQL extension
Like to trace things? Love GraphQL?
We got you covered as OpenTracing is now enabled in the SmallRye GraphQL extension as soon as the OpenTracing extension is around.
OptaPlanner extension moved out of the core repository
The OptaPlanner extension has been extracted from the Quarkus core repository to the OptaPlanner repository.
In passing, the artifact ids have changed so, if you are using the OptaPlanner extensions in your project, please move to the new ones:
-
org.optaplanner:optaplanner-quarkus
-
org.optaplanner:optaplanner-quarkus-jackson
-
org.optaplanner:optaplanner-quarkus-jsonb
The artifacts are part of the Quarkus Platform so:
-
You can install them directly via https://code.quarkus.io or via the usual
add-extension
command. -
It is part of the Platform BOM so you don’t need to define the version.
Native image
GraalVM 20.1.0
We upgraded to GraalVM 20.1.0. While older versions might still work, we recommend an upgrade to this version.
Trust store
The way trust stores are handled by native images has radically changed with GraalVM 19.3.
Our documentation was outdated and not very helpful in this regard, it has been updated.
Troubleshooting
TROUBLESHOOTING.md
Quarkus startup time and runtime performances are always improving and the main reason for that is that we get useful feedback from our community. (Well, and we do benchmarks too.)
When you encounter a performance issue with Quarkus, we often ask for more details and you might not be accustomed with the various tools that would give us useful insights.
Profiling startup or runtime slowness in user applications is made easy with our new TROUBLESHOOTING.md.
Extension dependencies validation
This change will concern you only if you are an extension developer: Quarkus now validates that the deployment and runtime dependencies are consistent in an extension.
If Quarkus warns you about it, check that each runtime dependency has the corresponding deployment artifact in the deployment pom.
Full changelog
You can get the full changelogs of 1.6.0.CR1 and 1.6.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 316 contributors. Many many thanks to each and everyone of them.
In particular for the 1.6 release, thanks to Aaron Rogers, Ales Justin, Alex Soto, Alexander Schwartz, Alexey Loubyansky, Andrea Cosentino, Andrej Petras, Andrew Guibert, Andy Damevin, Antonio Goncalves, Aurea Munoz, Luis Barreiro, Bill Burke, Cem Nura, Chris Laprun, Christian Beikov, Clement Escoffier, crissi98, Cuneyt Ozen, David Santos, Dejan Bosanac, Diogo Quintela, Domenico Loiacono, Dominika Vagnerova, Emanuel Alves, Emmanuel Bernard, Falko Modler, Foivos Zakkak, Galder Zamarreño, Garima Monga, Gaétan Collaud, Geoffrey De Smet, George Gastaldi, Georgios Andrianakis, ghokun, Giacomo Margaria, Guillaume Le Floch, Guillaume Nodet, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Gytis Trikleris, hantsy, Harald Reinmueller, Harsh Madhani, Hugh Lunnon, Ioannis Apostolidis, Ioannis Canellos, Jaikiran Pai, James Perkins, Jan Martiška, Jiří Locker, Jonathan Dowland, Jordi Sola, Jorge Solórzano, Justin Lee, kdnakt, Ken Finnigan, Kevin Viet, Ladislav Thon, Loïc Mathieu, Luka Lodrant, Manyanda Chitimbo, Marcin Czeczko, Mark Borner, Markus Heberling, Martin Kouba, Matej Novotny, Matej Vasek, Max Rydahl Andersen, Michał Górniewski, Michał Szynkiewicz, Moritz Becker, Paul Carter-Brown, Paul Robinson, Paulo Casaes, Pedro Igor, Peter Palaga, Phillip Krüger, Raffael Correia Mendes, Robbie Gemmell, Roberto Cortez, Romain Quinio, Rostislav Svoboda, Sanne Grinovero, Sergey Beryozkin, Sorin I Costea, Stuart Douglas, Ståle Pedersen, Stéphane Épardaud, Thomas Segismont, Timothy Power, Vincent Sevel, Vinícius Ferraz Campos Florentino, Vlastimil Eliáš, Willem Jan Glerum 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:
-
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.