Safely Target Java Versions Using Gradle's Toolchains

A guide on how to use Gradle's Java toolchains correctly to target specific Java versions without giving up on recent tooling improvements.