Почему загрузка Oracle JDK 9 заканчивается так рано?

Я хотел установить JDK 9 на своей машине, посетил официальную страницу загрузки JDK и был удивлен, увидев,

Java SE 9 достиг конца поддержки. Пользователи Java SE 9 должны переключиться на Java SE 10. Посетите нашу страницу загрузки Java SE, чтобы получить текущую версию Java SE. Вы будете перенаправлены на страницу загрузки Java SE за... секунды. Обновите свои закладки на странице загрузки Java SE.

Я сделал некоторую историю поиска в Google и Java, но не нашел никакой конкретной причины.

У меня есть пара questions-

  1. Oracle по-прежнему поддерживает JDK 1.8, но перестала выпускать обновления для JDK 9, почему?
  2. Должен ли я продолжать использовать JDK 1.8 в течение некоторого времени, а затем напрямую переключаться на JDK 10?

Ответ 1

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

В Java 9 Oracle представила новую систему модульности (проект Jigsaw), которая также оказывает огромное влияние на архитектуру JVM (хотя и не так сильно на синтаксис языка). Им пришлось два раза откладывать выпуск Java 9 из-за разногласий по поводу реализации этой функции с другими влиятельными членами сообщества Java.

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

Java 9 и Java 10 - первые две версии, запланированные для этой новой модели выпуска, а Java 9 уже устарела с выпуском Java 10. Java 11, выпущенная в сентябре 2018 года, является Долгосрочная поддержка (LTS) с поддержкой до 2026 года. Это очень похоже на то, к чему многие привыкли в модели релизов Ubuntu (Кстати, они даже планировали заменить номера версий на что-то, включающее год и месяц выпуска или около того, аналогично тому, что Canonical делает с Ubuntu, но почему-то отбросил эту идею).

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

Для нового проекта "с нуля" Java 11, вероятно, является лучшим выбором на данный момент. Но может быть необходимо придерживаться Java 8, если используемый инструментарий еще не полностью поддерживает Java 11.

Очевидно, что в будущем Oracle хочет выпускать версию LTS каждые три года или каждые 6-е выпуски, поэтому следующий выпуск LTS следует ожидать после Java 11 - это Java 17 в сентябре 2021 года.

Ответ 2

Oracle перешла на временные выпуски. Это означает, что вы получите новую версию Java каждые 3 месяца и долгосрочную версию каждые несколько лет.

Ожидается, что долгосрочные выпуски будут поддерживаться в течение 3 лет после следующего выпуска, поэтому я не ожидал нового выпуска LTS до некоторого времени в конце 2019 года или в начале 2020 года, так как декабрь 2020 года является завершением поддержки JDK 8.