Hi all, For client code, that is all the "api-*" modules + Spark, I think requiring Java 17 as a baseline is reasonable for now. We cannot go lower, because the Iceberg dependencies force us to bump at least to 17.
Many other dependencies/projects already have Java 17 as a baseline, and a bunch want to require 21 in the near future. We should also consider the EOL (End of public updates) for Java 17 [1]: - Oracle : 2024 (already EOL) - Temurin, Red Hat, MS, IBM : 2027 - Corretto, Azul : 2029 Java 21 EOL is 2029 for the major distros (2028 for Oracle). So I think that we should also consider Java 21 as the baseline for all Polaris modules soon. Spark should not be a big issue, as Spark 4 requires Java 17 or 21. Spark 3.5 on Java 21 doesn't seem to be officially supported. I suspect it's not a long time until Spark 4 will be the baseline. Some highlights in the Java LTS versions: - Java 11->17: Mostly source code style, G1 GC improvements - Java 17->21: Generational ZGC (<1ms pause times advertised), virtual threads, more pattern-matching, sequenced-collections, constants API - Java 21->25: Smaller object headers (10-20% less heap pressure), scoped values, stream gatherers, "better" AOT (faster startups), stable values Side note: I hope that Hadoop eventually works on Java 25 soon-ish, so that the Polaris service can benefit from these improvements. All modules other than the api-* and Spark ones, can be changed to Java 21 IMO - including polaris-core. There are dependencies on polaris-core in the "api-*" modules + Spark - for two constants and the RealmContext. It doesn't seem hard to remove the dependency to polaris-core from these modules: - the constants can be moved to the respective API module - RealmContext can either be removed from the function signatures or moved to a separate module. Proposal for iterative steps: 1. (parallel) a) remove the dependencies on polaris-core from the api and spark modules b) set the Java baseline to 17 for all modulöes that are built using the 'polaris-client' convention 2. let all modules require 21, keep 17 for api and spark modules 3. (later) a) re-evaluate downstream dependencies (Hadoop) to bump the server side to 25 b) re-evaluate downstream dependencies (Spark, Hadoop) to bump the client side to 21 WDYT? Robert [1] https://en.wikipedia.org/wiki/Java_version_history On Fri, Feb 6, 2026 at 2:19 PM Romain Manni-Bucau <[email protected]> wrote: > Hi Alexandre, > > I'd say it depends when the client will be consummed, if you do expect it > to be end of the year for end users, 21 sounds good, if right now, there > are still some 3rd parties you can integrate with which are relying on > security manager and moving to 21 can be an issue (even spark requires some > specific tuning you might have or not in existing clusters). > If there is no code difference, 17 doesnt hurt, if you want to leverage the > new features my 2cts would be to try to anticipate the adoption and > consider > september 21 would be okish (1 year after latest LTS it is ok to > support only last 2 LTS in other words). > > Just my 2 cts, hope it helps a bit > > Romain Manni-Bucau > @rmannibucau <https://x.com/rmannibucau> | .NET Blog > <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/> > | Old > Blog <http://rmannibucau.wordpress.com> | Github > <https://github.com/rmannibucau> | LinkedIn > <https://www.linkedin.com/in/rmannibucau> | Book > < > https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 > > > Javaccino founder (Java/.NET service - contact via linkedin) > > > Le ven. 6 févr. 2026 à 13:54, Alexandre Dutra <[email protected]> a écrit > : > > > Hi all, > > > > Yesterday during the sync meeting, we discussed the issue with the > > upcoming Iceberg 1.11 release that will require Java 17 or higher. > > > > Polaris is currently built with Java 21 or higher [1], but the > > compatibility level is set to Java 21 [2] for "server" modules, and > > Java 11 for "client" modules (including polaris-core) [3]. > > > > We agreed yesterday that all the client modules would have to be > > upgraded. The question was: should we upgrade to Java 21 directly, or > > just to Java 17 initially? > > > > For completeness, here is the list of client modules that need an > upgrade: > > > > api/iceberg-service > > api/management-model > > api/management-service > > api/polaris-catalog-service > > extensions/federation/hadoop > > extensions/federation/hive > > plugins/spark/v3.5/spark > > polaris-core > > tools/config-docs/annotations > > tools/immutables > > tools/misc-types > > tools/version > > > > For the sake of simplicity I would be in favor of 21 directly, but > > don't have strong opinions. > > > > I'm curious to hear your thoughts on this topic! > > > > Thanks, > > Alex > > > > [1]: > > > https://github.com/apache/polaris/blob/26a394e0ea68c68373a75251c97ab0711e637d20/settings.gradle.kts#L24 > > [2]: > > > https://github.com/apache/polaris/blob/9377aa731a64d6262dc7cc177d8a457d14c46f0a/build-logic/src/main/kotlin/polaris-server.gradle.kts#L24 > > [3]: > > > https://github.com/apache/polaris/blob/9377aa731a64d6262dc7cc177d8a457d14c46f0a/build-logic/src/main/kotlin/polaris-client.gradle.kts#L24 > > >
