Я не читал код для компилятора, но некоторые новые функции, очевидно, должны влиять на байт-код.
«Упрощенный вызов метода varargs» на самом деле является просто подавлением предупреждения, но он должен оставить некоторый маркер в байт-коде, чтобы код клиента мог отображать предупреждения по-разному.
«Try-with-resources» генерирует код, который может обрабатывать обычное исключение плюс второе исключение, выбрасываемое во время блока finally. Дополнительное исключение сохраняется с использованием нового метода addSuppressed () . Это не совсем изменение формата файла класса, но оно явно не будет работать на более ранних виртуальных машинах.
"Multi-catch" также создает байт-код, который немного отличается от того, который мог создать любой предыдущий компилятор. Несколько записей в таблице исключений теперь будут указывать на одно и то же тело перехвата.