We've actually been stuck since at least 2022 AFAIK (
https://github.com/apache/beam/pull/24245 and I think there have been other
attempts as people discover it is not possible)

I'm generally for moves that unblock Beam from using up-to-date tools and
techniques, as long as we support our users who are on older versions.

>From what I can tell, options.release is actually more robust, as
sourceCompatibility + targetCompatibility does not ensure that you compile
against that version's inbuilt libraries. I would probably defer to you and @Yi
Hu <ya...@google.com> and other members of the community who have more
experience with these variations.

Kenn

On Tue, May 6, 2025 at 1:14 PM Steven van Rossum via dev <
dev@beam.apache.org> wrote:

> Hi all,
>
> I was hoping to update Error Prone to version 2.38.0 so we can turn on the
> ThreadSafe checker (https://errorprone.info/bugpattern/ThreadSafe), but
> it looks like that checker might not work just yet (
> https://github.com/google/error-prone/issues/4833).
>
> While preparing for that change I found out that recent versions of Error
> Prone minimally require JDK 17 for compilation. It occurred to me that
> Beam's toolchain management could be improved with Gradle's builtin
> toolchain management (
> https://docs.gradle.org/current/userguide/toolchains.html).
> Gradle's toolchain management combined with toolchain auto-discovery make
> it a bit easier to run builds without having to explicitly override
> JAVA_HOME, org.gradle.java.home or any of the Beam properties for selecting
> runtimes (java8Home, java11Home, testJavaVersion).
>
> A brief overview of some of the changes:
> - Replace java{VERSION}Home properties
> with org.gradle.java.installations.paths=/path/to/java8,/path/to/java11,...
> and enable/disable toolchain auto-discovery with
> org.gradle.java.installations.auto-detect.
> - Reconfigure (Java) compile tasks to use options.release instead of
> options.sourceCompatibility and options.targetCompatibility to keep
> producing JVM 8 compatible binaries.
> - Reconfigure release specific test tasks to use test.javaLauncher for JVM
> selection.
>
> Any thoughts on this?
>
> Cheers,
>
> Steve
>

Reply via email to