Вот задумался. По сути всё, что я видел в Java 7, 8 прекрасно компилируется в Java 5 на уровне исходников (ну т.е. я могу каждую конструкцию переписать в аналогичную на Java 5). Я про фичи языка - try-with-resources, lambdas, etc. Поэтому опять же теоретически можно придумать компилятор Java 7, который будет выдавать код для JVM 1.6. Или 1.4. И писать как белые люди для отходов мамонта (бывают такие сценарии, когда работает какая-нибудь старинная вебсфера и никто её обновлять по ряду причин не будет, а функционал писать надо).
Отдельный вопрос со стандартной библиотекой. Банальный StandardCharsets.UTF_8 уже не найдётся в JRE 1.6 и будет ClassNotFoundException на этапе загрузки нашего класса. Поэтому стандартная библиотека должна идти отдельным привеском в виде что-то вроде java7.XXX, не совсем понимаю как именно, но в общем если подумать, можно такое нахимичить.
Вопрос в том - нахимичил ли кто-нибудь такое и насколько оно работает?