Жизнеспособно ли скомпилировать мой проект на java8, а затем запустить его на java 17

Я читал несколько статей, в которых в jdk 9 были удалены.* API. Под удалением означает ли это, что они полностью удалены из jdk 9 или помечены как устаревшие?

Учитывая приведенное выше утверждение, если в случае, если проект скомпилирован jdk 8, будет ли он работать без проблем на jdk 17? Я пробую это в первый раз, и у меня возникли проблемы с тем, что tomcat не может поддерживать jdk 8 из-за изменений модульности.

Я планирую скомпилировать в jdk 8, а затем запустить на jdk 17, пока весь проект не станет совместимым с jdk 17 (в соответствии с jdk 17 я имел в виду использовать обновленные API, а не существующие устаревшие API jdk8).

Я иду в правильном направлении? или мне следует использовать другой подход к миграции?

1 ответ

Под удалением означает ли это, что они полностью удалены из jdk 9 или помечены как устаревшие?

Некоторые просто помечены как устаревшие. Остальные были полностью удалены, хотя, как правило, не в Java 9. Большинство удалений было выполнено позже, а некоторые еще предстоит. Если вы посмотрите на элементы, которые теперь помечены как @Deprecated, аннотация в некоторых случаях будет формально указывать на то, что элемент будет удален.


Учитывая приведенное выше утверждение, если в случае, если проект скомпилирован jdk 8, он будет работать без каких-либо проблем на jdk 17

Не обязательно. Еще одна вещь, которая произошла, - это то, что доступ к «внутренним» API Java SE был постепенно закрыт. Итак, если ваше приложение использует эти API, в Java 9 вы получали предупреждения, в Java 11 вы получали ошибки по умолчанию, а в Java 17 некоторый доступ стал (я думаю) невозможным.

Так что ... могут быть "проблемы".

Правильный подход к миграции - просто сделать это. И тестируйте, тестируйте, тестируйте, пока не решите все проблемы.

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


Я иду в правильном направлении? или мне следует использовать другой подход к миграции?

Есть только один подход ... правда. Тестировать, тестировать и тестировать.

Перед тем как начать, рекомендуется проверить все зависимости вашего проекта (библиотеки и т. Д.), Чтобы узнать, поддерживаются ли они в Java 17. Затем обновите их до правильных (возможно, последних) версий.

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

Другие вопросы по тегам