Hello,
As you might know, JDK now offers "LTS" releases. The latest LTS release
was Java 17, one year ago.
To prepare Apache SIS for the future, I propose to upgrade its Java
requirements to Java 17+.
I suggest the following plan of action:
1. Make a java 8 compatible 1.3 release (as I understand it, it is already
planned).
2. Upgrade maven compiler configuration to require java 17 source and
target compatibility. As the build already succeed on Java 17, I expect
this task to be trivial.
3. Update project README to clarify Apache SIS compatibility regarding
Java versions. (i.e: 1.0 to 1.3 included: java 8 compatible. Going further:
Java 17 compatible).
4. Start discussing / experimenting JPMS (Jigsaw) modularization in the
long-term.
Who is in favor of such migration ? Is there any objection, remarks or
questions ?
Some additional information:
- The switch to Java 17 would bring the following features to developers:
- improved instanceof (also refered as pattern matching for
instanceof) -> since Java 16
- Java records -> Since Java 14
- Sealed classes and interfaces -> Since Java 15
- "var" keyword for local variable definitions -> Since Java 11
- JDK Http Client -> Since Java 11
- Many new methods / improvements in StdLib, amongst others :
VarHandles, new utility methods on Stream (mapMulti, toList, takeWhile,
toList, etc.), new utilities on Optional (or, stream, etc.)
- I advocate for a jump from Java 8 directly to Java 17, without stopping
by Java 11, because:
- Java 11 "premier" support will end very soon (september 2023).
- Jjava 11 does not offers some of the most usefuls features stated
above (records, improved instanceof, sealed interfaces).
- Other well-known open-source projects already decided to discard
Java 11. For example, Spring framework 6.0 (released this month) requires
java 17.
Regards,