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

Trino blog

News from the community of users and contributors

Twenty four


Six month ago we adopted Java 23 as requirement, following our standard procedure to upgrade with each Java version as soon as it becomes available. This allows us to take advantage of all the great improvement each release brings. The upgrade to 23 was pretty easy since the changes from 22 to 23 were not that big. The story turns out to be a bit different now with our upgrade to Java 24.

Java 24 features #

We have been planning and working towards the upgrade consistently since the 23 bump in September. Java 24 is set to be released in March 2025 and the list of changes is quite significant:

  • JEP 450 Compact Object Headers (Experimental)
  • JEP 472 Prepare to Restrict the Use of JNI
  • JEP 475 Late Barrier Expansion for G1
  • JEP 478 Key Derivation Function API (Preview)
  • JEP 483 Ahead-of-Time Class Loading & Linking
  • JEP 484 Class-File API
  • JEP 485 Stream Gatherers
  • JEP 486 Permanently Disable the Security Manager
  • JEP 487 Scoped Values (Fourth Preview)
  • JEP 488 Primitive Types in Patterns, instanceof, and switch (Second Preview)
  • JEP 489 Vector API (Ninth Incubator)
  • JEP 490 ZGC: Remove the Non-Generational Mode
  • JEP 491 Synchronize Virtual Threads without Pinning
  • JEP 492 Flexible Constructor Bodies (Third Preview)
  • JEP 494 Module Import Declarations (Second Preview)
  • JEP 495 Simple Source Files and Instance Main Methods (Fourth Preview)
  • JEP 496 Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
  • JEP 497 Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
  • JEP 498 Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
  • JEP 499 Structured Concurrency (Fourth Preview)

The list of new features is also quite large. You can find more details in the release notes and each individual JEP.

Trino perspective #

From a Trino perspective we want to specifically take advantage of performance improvements to MemorySegment (mismatch, copy, fill), “JEP 491 Synchronize Virtual Threads without Pinning” and “JEP 475 Late Barrier Expansion for G1”. On the other hand JEP 486 Permanently Disable the Security Manager turned out to be the most impactful.

Since Trino and its connectors have a large footprint of dependencies there was a high chance that some projects as not keeping up with the security manager removal, although it was first deprecated with Java 17 in 2021.

At this stage the Kafka, Kudu, and Phoenix connectors are affected. The Kafka project is planning to make a new compatible release available in time and we will adopt that version.

The Kudu and Phoenix connectors however will be removed, since it is not possible to use them with Java 24 as requirement. Both connectors are not heavily used in our community as we learned from our communication with numerous users, integrators, and the results from our user survey. We are tracking progress for each removal in the issues #24419 Phoenix connector and #24417 Kudu connector. If either of these communities ends up supporting Java 24, or a newer version as required by Trino, in the future, we can potentially add the connectors back in if community members contribute updated versions.

Release plans #

In terms of shipping the changes we follow our established pattern:

  • Clean up codebase and get it ready, specifically this include the removal of the Kudu and Phoenix connectors.
  • Cut a release that is completely ready to be used with Java 24, but does not yet make it a hard requirement
  • Allow for community testing and feedback using Java 24.
  • Introduce Java 24 as hard requirement in another release.
  • Adopt Java 24 features and bring the benefits to our users with following releases.

As you see, there is a bunch of work waiting, we we better back to it. As usual, if you have questions or comments, chime in on the relevant issue or chat with us on Trino Slack in the core-dev channel.