Как запустить Java в режиме совместимости?

Поддерживает ли Java работу в режиме совместимости? Другими словами, если у нас есть JDK 8, установленный в системе, можно ли настроить его для запуска моего приложения в 7 или предыдущем выпуске с использованием той же установки?

Я могу привести один пример, например, IE-11 можно переключить на работу как IE 8, 9 или 10 в зависимости от параметра совместимости.


person Rajesh Kumar Yadav    schedule 04.05.2016    source источник
comment
Нет, такого режима совместимости нет. Если вы хотите быть абсолютно уверенным, вам придется установить дополнительные JDK и протестировать программу на них.   -  person Kayaman    schedule 04.05.2016
comment
@Gimby Я не думаю, что вопрос в компиляции, а в том, может ли программа Java 7 работать на Java 8. --- В любом случае, ответ таков (за очень немногими исключениями), что Java обратно совместима, без необходимости режим совместимости. Смотрите ссылку в первом комментарии.   -  person Andreas    schedule 04.05.2016
comment
Если вы хотите предотвратить случайный доступ к новым классам или членам Java 8, вам нужна библиотека JRE Java 7, чтобы указать ее как путь к загрузочному классу при компиляции. Это означает, что у вас все равно будет установлена ​​Java 7. Кроме того, даже режимы совместимости не избавляют вас от необходимости когда-нибудь проводить настоящие тесты на реальной машине…   -  person Holger    schedule 04.05.2016


Ответы (1)


Я согласен с комментарием Kayaman. Существует 2 типа несовместимости, которые могут возникнуть: изменения байт-кода (некоторые функции поддерживаются в версии 8, но не поддерживаются в версии 7 — новые версии Java имеют тенденцию быть совместимыми снизу вверх — поэтому 8 сможет запускать весь код, предназначенный для 7) и изменения библиотеки, которые более проблематично.

Если вы скомпилировали с Java 8, ориентированной на 7+, ваш байт-код будет совместим с Java 7 JVM, но у вас нет гарантии, что он будет работать с библиотеками Java 7.

Тогда лучше всего скомпилировать и запустить с Java 7, и он (скорее всего) будет работать с Java 8.

Затем есть другие изменения, которые могут повлиять на ваше приложение (например, производительность GC).

person GdR    schedule 04.05.2016