Можно ли скомпилировать более новую версию Java (9, 10, 11) для работы на старых платформах (например, Java 8)? - PullRequest
3 голосов
/ 28 марта 2019

Можно ли разрабатывать с использованием более новых версий Java (например, 9, 10, 11 и т. Д.) И сделать так, чтобы Java компилировалась до более старой версии - например, Java 8?

Мы хотели быиспользовать новые возможности новых версий Java, но наш код должен работать на платформе Java 8.

Если это имеет значение: мы строим с Maven.


Фразированиеэто в стиле Javascript:

Существует ли эквивалентность Babel Polyfill для Java?

Ответы [ 2 ]

6 голосов
/ 28 марта 2019

Нет - вы не можете использовать новые функции на более старой JVM; байт-код несовместим .

Вы можете абсолютно использовать более новые версии Java для компиляции до более низкой версии с некоторыми оговорками вокруг модулей.

Если вам нужны новые функции новых версий Java, то пришло время перейти на новую версию; кроме того, где вы будете в порядке, пока вам не потребуется поддержка от Oracle.

6 голосов
/ 28 марта 2019

Не обязательно.Если у вас есть код, который использует пакеты / синтаксические структуры, не определенные в предыдущих версиях, программа не сможет запуститься / скомпилироваться.

Думайте об этом так.До Java 8 не было лямбда-выражений.Поэтому, если вы создадите лямбда-выражение в Java 8+, а затем попытаетесь скомпилировать его в Java 7, компилятор будет выглядеть так: Что такое лямбда-выражение?

Короче нет.Тем не менее, вы можете пойти другим путем.Скомпилируйте код, написанный в более низкой версии, используя более высокую версию ... по большей части.

...