With JDK22 a Foreign Function and Memory API came out from a preview which is supposed to be a replacement for JNI which we heavily rely via JLine as that's only way to have better terminal features. JLine's terminal provider system has a support for FFM together with JNI/JNA which are more or less deprecated to get removed at some time in a future.
Spring Shell will always follow JDK baseline(JDK17) from boot/framework but order to add FFM support we need to start compiling some new modules with JDK22+.
Up until JDK25(next LTS) we need to be a relatively aggressive to use latest JDK(22,23,24) or at least we could not fall behind what JLine uses for its FFM parts.
This issue tracks work for this particular use case.
1132 changed how javadocs are generated as at some point we also need to handle that via toolchain and it was difficult if aggregated javadocs are in a root project(we can't change main jdk).
With
JDK22
a Foreign Function and Memory API came out from a preview which is supposed to be a replacement forJNI
which we heavily rely viaJLine
as that's only way to have better terminal features. JLine's terminal provider system has a support forFFM
together withJNI/JNA
which are more or less deprecated to get removed at some time in a future.Spring Shell
will always follow JDK baseline(JDK17
) from boot/framework but order to addFFM
support we need to start compiling some new modules withJDK22+
.Up until
JDK25
(next LTS) we need to be a relatively aggressive to use latestJDK
(22,23,24) or at least we could not fall behind whatJLine
uses for itsFFM
parts.This issue tracks work for this particular use case.