New informational JEP: 14: The Tip & Tail Model of Library Development
Alex Buckley
alex.buckley at oracle.com
Mon Oct 21 20:29:59 UTC 2024
On 10/21/2024 12:02 PM, Karsten Silz wrote:
> Another person wasn't sure whether "Tip & Tail" required tip
> releases to pick the latest JDK as their baseline.
T&T does not require the tip train of a library to be baselined on the
tip JDK. After all, the tip JDK changes every six months, and we're
clear in JEP 14 that we're not asking libraries to adopt a six-month
release cadence even for their tips. ("It is not necessary to develop
tip releases in lock step with the JDK's six-month tip releases.")
That said, the tip JDK has more bug fixes, performance enhancements, and
security patches than any tail JDK, so testing the library tip on the
JDK tip is smart. The library's most enthusiastic users will try to run
its tip on JDK 24 as soon as 24 is released anyway. If a library is
baselining its tip train on JDK LTS releases, then early testing on tip
JDKs will make it easier to move the baseline up to the next LTS.
> I think Spring Boot *does* "Tip & Tail", as described by the JEP, as it
> follows all required procedures.
I agree.
> *RECOMMENDED*
>
> 7. "In the tip train, baseline each tip release on the JDK version that
> best supports the library's new features and enhancements."
> - NO: 3.2 supported Java 21 via a multi-release JAR, but the baseline
> was still 17 (https://github.com/spring-projects/spring-boot/wiki/
> Spring-Boot-3.2-Release-Notes#support-for-virtual-threads <https://
> github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-
> Notes#support-for-virtual-threads>)
IIRC Sprint Boot 3.2 was developed in roughly the same period as the JDK
18-19-20-21 cycle, so it makes sense to have chosen JDK 17 as the
baseline at the start of that period. There were many new features in
3.2 that were happy with JDK 17, so I'd put #7 in the YES column.
Using an MRJAR to achieve "baseline on 17 but support new 21 features"
will IMO be more costly for a long-term tail than saying: 3.j is
baselined on 17 and doesn't use virtual threads, while 3.k is baselined
on 21 and does use virtual threads.
> 10. "It is typical to bump the JDK baseline of the tip train when the
> library needs new JDK features."
> - NO: Baseline only changes with a new Spring Framework generation
Which might well use (either directly or in its many dependencies)
post-21 JDK features such as the Foreign Function & Memory API, the
Class-File API, Markdown documentation comments, etc.
Alex
More information about the jdk-dev
mailing list