Do you want to stay on Java 8 while taking advantage of the latest Java syntax and features? A tool called Jabel enables this because, as its GitHub page states, “life is too short to wait for your users to upgrade their Java.”
Jabel is an “annotation processor” that instruments Java compiler classes and treats some Java 9 and later language features as if they were supported in Java 8. The result is valid Java 8 bytecode for switch expressions,
var declarations, and other features not supported in Java 8. Basically, Jabel tricks the compiler into thinking that certain features were developed for Java 8 by removing the checks that report them as invalid for the Java 8 target.
Jabel is in a proof of concept stage at this point, with developer Sergei Egorov even referring to it as a “hack.” The Jabel page stresses that the majority of open source libraries are still using Java 8 as their target. But since most new language features introduced after Java 8 did not require a change in bytecode, the
javac compiler could emit Java 8 bytecode even when compiling sources from Java 12.
Instructions on using Jabel can be found on GitHub. A plug-in for Jabel is distributed with the JitPack package repo.