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