On Mon, Jun 24, 2024 at 9:59 AM Kenneth Knowles <k...@apache.org> wrote: > > Step 1 and 2 sound great. (I tried a first step with > https://github.com/apache/beam/pull/29992 but didn't have bandwidth) > > This will make it easier for people to get started with beam without having > to deal with ancient version compatibility and installing old Java, etc. Even > as a minor point, many of our build plugins are out of date because they have > moved on to more modern Java versions.
+1 > Questions: > > - Could Beam move to requiring latest Java to build and just relying on > "--release" flag or "--target" flag to build the artifacts we release? I probably wouldn't track the very latest, but whatever is generally available on relatively modern systems (and +1 to just using --target for artifacts). > (we need to be sure we don't rely on pieces of the standard library that are > missing in JRE8) This would need to be rigorously tested. How to ensure sufficient coverage? (This is where compiling against old SDKs may have an advantage. Or would using --source and --target be sufficient? Or will we still run into issues with our dependencies dropping support for old versions anyway?) > - Can we release multi-release jars to provide updated versions for > different JDK versions? As long as we choose to maintain backwards compatibility with version X, is there any advantage to providing separate artifacts for version Y>X? Seems like it would mostly just complicate things. I also think a bigger open question is how long we will maintain support for Java 8 (11, etc.) Is there a good measure for when the ecosystem (or, more targeted, our users) have moved on? > Kenn > > On Mon, Jun 24, 2024 at 9:44 AM Yi Hu via dev <dev@beam.apache.org> wrote: >> >> Dear Beam developers, >> >> As Java8 has gone through end-of-public-update, many Beam dependencies have >> already deprecated Java8 (see [1]), and dropping Java8 supports are planned. >> >> Beam hasn't deprecated Java8, moreover, currently Beam CI is using Java8 to >> test and release Beam. Referring to other Apache projects, I hereby suggest >> a 3-step process for dropping Java 8 support: >> >> 1. Switch CI to Java11, while retain the byte code compatibility to Java8 >> for Beam releases. Tracked in [1]. >> >> This won't affect Beam developers and users currently on Java8, and can >> be done immediately >> >> 2. Require Java11+ to build Beam, deprecate Java8 support [2]. >> >> This still won't affect Beam users currently on Java8, but for Beam >> developers build custom Beam artifacts, they will need Java11+ >> >> 3. Drop Java8 support >> >> This will affect Beam users. Targeted in a medium-long future date, when >> Beam's major dependencies already dropped Java8 support >> >> There are a few details for further decision >> >> * Java8 has ended premier support in March 2022, the next LTS, Java11 also >> ended premier support in Sept 2023. Should we bump the default Java version >> to 17 for CI at once (while keeping Java8/11 bytecode compatibility for the >> build)? >> >> * Timeline of deprecating Java8. >> I am volunteering to work on [1] which is targeted to Beam 2.58.0; >> naturally (2) would be Beam 2.59.0 or 2.60.0. >> >> Please provide your thoughts on the general process, and highlight >> particular areas of concern. >> >> [1] https://github.com/apache/beam/issues/31677 >> >> [2] https://www.oracle.com/java/technologies/java-se-support-roadmap.html >> >> Regards, >> Yi >> >> -- >> >> Yi Hu, (he/him/his) >> >> Software Engineer >> >>