Это может быть глупый вопрос, но я столкнулся с любыми проблемами с запуском программ Java и связанных библиотек, скомпилированных в Java версии 1.6 и 1.7 (я компилирую с использованием 1.7, тогда как некоторые библиотеки скомпилированы с использованием 1.6 ) и запустить всю программу в 1.7 JRE?
Могут ли новые версии JRE запускать Java-программы, скомпилированные со старыми версиями JDK?
Ответ 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 между версиями:
- в Java SE 8 с Java SE 7
- в Java SE 7 с Java SE 6
- в Java SE 6 с Java SE 5.0
- в Java SE 5.0 с Java SE 1.4.2
Дополнительный комментарий в случае библиотек:
Разумным правилом является использование последней версии версии версии для версии JRE для ваших программных целей. Очевидно, вы найдете множество исключений из этого правила, но в целом стабильность общедоступных библиотек обычно увеличивается со временем.
При изменении версий зависимостей необходимо учитывать совместимость API и версий.
Вновь большинство популярных зависимостей будут иметь веб-страницы, где такая информация должна быть доступна.
Если, однако, вы используете что-то более неясное, вы можете определить, какие JRE были классами в вашей скомпилированной зависимости.
Вот отличный ответ о том, как узнать версию класса. Возможно, вам придется разархивировать файл JAR.