Нет, компилятор javac
не выполняет большую оптимизацию, поскольку JIT отвечает за большинство оптимизаций во время выполнения, поэтому вы получите довольно идентичный байт-код. За исключением того, что файл класса будет помечен как Java 11, так что вы не сможете запустить его на более низкой версии.
Java обратно совместима, поэтому запуск байт-кода Java 8 на более новых версиях не является чем-то особенным.
Конечно, запуск байт-кода Java 8 на более новой JVM позволяет (возможно) использовать улучшенные динамические оптимизации в JIT, так что вы с большей вероятностью получите улучшенную производительность, просто используя более позднюю JVM без какой-либо дополнительной компиляции.
Как показывает видео Йоханнеса, всегда есть интерес оптимизировать строки для памяти и скорости, так как они являются наиболее часто используемыми объектами в проектах Java. Однако это все еще микробенчмарк, и большинство различий происходит от кода, скомпилированного и запущенного с Java 11, по сравнению с кодом, скомпилированным и запущенным с Java 8.
Я попытался найти источники, которые бы отвечали на перекомпиляцию , но ничего не мог найти с быстрым взглядом. Поэтому до тех пор, пока не будет доказательств того, что немикробенчмарки выиграют (реалистично, а не теоретически) от перекомпиляции до байт-кода Java 11, я буду классифицировать его как "Performance Voodoo".