Java Spring Boot: Support Java 11 and 17
Context
The initial implementation will target Java 8 as the "lowest common denominator". Our goal is to official support Java 11 and 17 as more recent LTS versions (with the assumption that intervening versions will work also).
Implementation
Ideally there will not be any implementation changes to support new versions of Java, as we are targeting the "lowest common denominator" of Java 8.
We should add testing against newer Java versions at every level. This testing should happen on CI but not on a local developer build by default, to keep the developer build fast and limit the complexity of setting up a local development environment. It should still be possible to run the newer Java tests locally if the developer wants to. If we discover that problems resulting from differences between Java versions are not as rare as we hoped, we can revisit this.
-
Run all unit tests against all supported Java versions -
Run all scenario tests against all supported Java versions -
Run at least one acceptance test against each supported Java version - We will eventually have a large number of variations of supported scenarios; running all of them against every Java version could explode the length of the pipeline. Given that previous testing stages should be providing the confidence that the application works, the goal at the acceptance stage should be demonstrating that it works, not trying to provide full coverage.