Hi Laurent

It makes sense to me. I started this "move" (on the plugin side of the
thing) as part of the reproducible build effort.

At code level, I think it would be great to leverage some features
from Java 17+ (I'm thinking about record, memory API, etc).
I would be more than happy to help on this as soon as we have a consensus.

Thanks,
Regards
JB

On Mon, Apr 1, 2024 at 7:48 PM Laurent Goujon
<laur...@dremio.com.invalid> wrote:
>
> Hello Arrow Java developers,
>
> I would wonder if the community would be okay to change the minimum Java
> version used by the build toolchain to at least Java 17 or 21 (or even 22).
> This is different from changing the minimum Java version used at runtime
> which would still be 8 (following the vote from last september).
>
> Concretely it would mean:
> * Java 21 would be required to build Arrow Java
> * But Arrow would still be compatible with Java 8
> * Unit tests should keep running with Java 8 and higher.
>
> Reasons for changing the toolchain would be:
> - More and more tools and plugins now require at least Java 11, forcing the
> project to keep using older/unsupported versions
> - We hacked our way to support Java modules with
> https://github.com/apache/arrow/tree/main/java/maven/module-info-compiler-maven-plugin
> - There are several new features which we could conditionally include in
> the Arrow project like VarHandle (Java 9) and Foreign Function and Memory
> API (Java 22) to move away from Unsafe support which require more and more
> workarounds (Apache Lucene is a project which has managed to introduce
> support for multiple Java incubator and final API while maintaining
> compatibility with previous Java versions). But doing it from Java 8
> creates a higher barrier.
>
> Laurent

Reply via email to