Подтвердить что ты не робот

Могут ли новые версии JRE запускать Java-программы, скомпилированные со старыми версиями JDK?

Это может быть глупый вопрос, но я столкнулся с любыми проблемами с запуском программ Java и связанных библиотек, скомпилированных в Java версии 1.6 и 1.7 (я компилирую с использованием 1.7, тогда как некоторые библиотеки скомпилированы с использованием 1.6 ) и запустить всю программу в 1.7 JRE?

4b9b3361

Ответ 1

Совсем не так, что волшебство Java - обратно совместимо. Вы можете запускать почти весь код из Java 1 на Java 8. Там нет причин, по которым код Java 6 не будет запускаться на Java 8 Runtime.

Что интересно, это то, что для приложений, написанных, скажем, в Java 1.4, вы даже увеличиваете скорость при запуске на более поздних этапах. Это связано с тем, что Java постоянно развивается, а не только язык, известный как "Java", но также JVM (виртуальная машина Java). У меня все еще есть исходный код более 10 лет назад, который все еще работает, как и ожидалось в последней JVM.

Если вы хотите настроить таргетинг, скажем, виртуальную машину Java 5, то вы можете сделать это с помощью инструментов Java 8 SDK. В конечном счете вы можете указать, какую целевую виртуальную машину хотите поддерживать, если вы помните, что VM 5-й версии может не поддерживать все функции, которые будут иметь виртуальная машина версии 8.

Я только что протестировал код, написанный на Java 5, против новой среды исполнения Java 8, и все работает так, как ожидалось, поэтому, хотя у нас есть более мощный язык и время выполнения, мы можем продолжать использовать наши инвестиции прошлого, Только это делает Java отличным выбором для компаний.

Ответ 2

Как уже было сказано, вы главным образом безопасны и большинство продуктов, а 3 библиотеки rd будут работать. Однако существуют очень редкие угловые случаи, когда существуют двоичные несовместимости.

Официальный список несовместимости Oracle Java между версиями:

Дополнительный комментарий в случае библиотек:

Разумным правилом является использование последней версии версии версии для версии JRE для ваших программных целей. Очевидно, вы найдете множество исключений из этого правила, но в целом стабильность общедоступных библиотек обычно увеличивается со временем.

При изменении версий зависимостей необходимо учитывать совместимость API и версий.

Вновь большинство популярных зависимостей будут иметь веб-страницы, где такая информация должна быть доступна.

Если, однако, вы используете что-то более неясное, вы можете определить, какие JRE были классами в вашей скомпилированной зависимости.

Вот отличный ответ о том, как узнать версию класса. Возможно, вам придется разархивировать файл JAR.