Do you ❤️ Trino? Give us a 🌟 on GitHub

Trino blog

News from the community of users and contributors

Trino is moving to Java 21


We’re excited to announce that as of version 432, Trino can run with Java 21. In fact, the Trino Docker image uses Java 21 now. We have done upgrades to newer Java LTS versions successfully before when we upgraded to Java 11 and then Java 17 with Trino 390. Each time the improvements to the JVM runtime, the garbage collectors, the involved libraries, and the dependencies resulted in performance gains that came nearly for free.

And each time we were able to take advantage of new language constructs and standard libraries to improve the codebase for all contributors and maintainers of the project.

Now it is time to do it again.

In September, Java 21 was released as the newest long-term support version. The consolidated release notes are truly impressive when it comes to breath and depth of improvements throughout the runtime, the standard libraries, the included tools, and the overall system.

Java 21 provides numerous great opportunities to improve Trino. Even without many code changes, the performance benefits can have a significant impact on the cost of running a Trino cluster.

Taking it one step further, and into the codebase and used libraries, we are able to move our performance work to the next level. Project Hummingbird, our performance fine-tuning initiative, is buzzing already. Dain Sundstrom shipped some great improvements recently again. Just like with our Java 17 upgrade, Mateusz Gajewski has been of critical importance to pull all the necessary changes together.

With the Trino 432 release we have now made the next big step. The Trino Docker image was changed to use the Eclipse Temurin distribution of Java 21. We have been running our test suites with Java 21 for quite some time and all looks good. With this release, you are now able to easily test Trino with Java 21. Just use the Docker container in your deployment or testing with your own pipeline or with the Trino Helm charts. The new version 0.14.0 of the chart already uses the right JVM configuration and Trino 432 by default.

Our plan is to make Java 21 the required runtime and move towards adopting the new language features and libraries. However, before we do that, we want your input. Are you ready to move to Java 21 for Trino? Did you do some testing with it already? Are there any issue you encounters? We want to know all about your experience. Find us on the Trino community chat and ping us in the #dev channel. Or leave comments in our Java 21 tracking issue.

We want to hear from you. Any input and feedback is welcome.

Update from 11 Jan 2024: The release of Trino 436 includes the switch to Java 21 as a requirement for running Trino.