crush depth

JDK Support Range Change

I'm considering changing the range of JDKs I support.

Right now, I specify JDK 11 as the target bytecode level. That is, you require at least JDK 11 to run any code I write. I specify the range of allowed compiler versions as [11, 14]. That is, you can build the code on any JDK newer than 11 but older than 15.

I'd like to adjust this a bit to reduce the range of JDKs upon which I test code. Specifically, these would be the new rules:

  1. The target bytecode level is CurrentLTS. That is, you require at least JDK CurrentLTS to run any code I write.

  2. The set of allowed compiler versions is [CurrentLTS, CurrentLTS + 1), [Current, Current + 1).

At the time of writing, CurrentLTS = 11 (the next value of CurrentLTS will be 17), and Current = 14.

So under the new rules, at the time of writing, you could run the code on JDK 11, 12, 13, and 14. You could build the code on JDK 11, and any JDK greater than or equal to 14 but less than 15. This slightly odd-looking range is necessary because JDK compiler versions contain minor and patch levels such as 14.0.2. The explicit support statement would be that only JDK versions upon which the code is regularly built and the test suite executed would be supported. You could run the code on JDK 12 and 13, but you'd be on your own there as the code is only built and tested on 11 and 14.

This would reduce the number of CI builds I need to execute on each commit from at most six (11, 12, 13, 14, 15, 16) to exactly two (11, 14). With project counts in three figures, the build counts quickly add up!