JDK 9 это вещь которая начнет причинять разработчику боль поскольку совместимость уже не 100% с JDK 8, ну а на фоне планов Оракла с частыми релизами новых версий, вероятно скоро можно будет испытать боль которая лет 15 назад была известна разработчикам мобильных приложений под J2ME, что бы как то ыкрутиться был разработан
JEP-238 поддержанный в JDK 9 который позволяет делать JAR файлы прозрачно содержащие варианты для разных версий и JVM будет выбирать подходящие (скорее всего это всё приведет нас в конце концов в ад, но до этого надо еще дожить). Я вот подумал можно ли при таком прикрутить подход который юзал 15 лет назад для мобил, когда мне не хотелось дуплицировать код для поддержки как бы стандартных APi разных вендоров и сделал пример maven проекта который собирает мультиверсионный JAR в мавене с применением препроцессинга, я не призываю такое юзать, это чисто такой лайфак и может кому будет интересно взглянуть
https://github.com/raydac/jep-238-jcp-example