Скомпилируйте старую программу, написанную на Java, за 5 дней с помощью Java 8.

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

Однако мой вопрос заключается в следующем. Скажем, кто-то написал программу пару лет назад, и в то время последней версией Java была Java 5. Итак, они написали свою программу, используя функции Java 5, и скомпилировали свой код, используя Java 5.

Затем я прихожу спустя годы и хочу взять их точный код (ничего не меняя) и перекомпилировать его. Могу ли я использовать Java 8? Или мне безопаснее компилировать код с помощью Java 5.

Короче говоря, есть ли какие-либо проблемы с безопасностью при компиляции старого кода с использованием новейшей версии Java?


person Kyle Bridenstine    schedule 12.01.2016    source источник
comment
Безопаснее в каком смысле? Ничто не мешает вам скомпилировать программу с помощью java 8, и вы, безусловно, должны это сделать, если собираетесь запускать ее в среде выполнения java 8.   -  person pvg    schedule 12.01.2016
comment
Компиляция почти такая же, так что проблем быть не должно. Теперь среда выполнения изменилась и может иметь некоторое влияние, если приложение использует некоторые классы не так, как должно (например, я видел ошибку в одном из-за другого подхода к хранению наборов в Java 8... но это приложение было пропущено с использованием Хэшсеты)   -  person Augusto    schedule 12.01.2016
comment
Перечисления были введены в Java 6. Я помню, что мне пришлось изменить все переменные перечисления на перечисление, чтобы код компилировался.   -  person Gilbert Le Blanc    schedule 12.01.2016
comment
@GilbertLeBlanc Перечисления были представлены в Java 5. Обратите внимание на тег @since в javadoc для java.lang.Enum.   -  person VGR    schedule 13.01.2016
comment
Вы безопаснее с Java 5, если хотите убедиться, что все компилируется и работает точно так же. Вы безопаснее с Java 8, если вас беспокоят проблемы безопасности и удобство сопровождения. На самом деле, я думаю, что в наши дни поддерживать приложение Java 5 совершенно непрактично. Но если у вас есть стабильная кодовая база, будьте готовы к нескольким дням перехода на Java 8.   -  person Didier L    schedule 13.01.2016


Ответы (1)


Java 8 обратно совместима, так что все должно быть в порядке. Однако возможно, что некоторые используемые вами функции устарели, и в этом случае вы, вероятно, получите предупреждения, но все равно сможете скомпилировать и запустить свой код.

Подробнее об этом можно прочитать здесь: Руководство по совместимости для JDK 8

person Ricardo Ferreira da Silva    schedule 12.01.2016