Релизный цикл в java
15 сентября выйдет новая java — версия под номером 15. В этом посте разберёмся, каковы шансы увидеть её на вашем продакшене.
Java — распространённый язык, и требования к каждому релизу высоки. Ожидается, что новая версия будет удобной и быстро работать на всех процессорах. Разработка и тестирование занимают время, поэтому раньше java выходила раз в 3-5 лет. Между версиями выходили апдейты – исправления ошибок и безопасности.
Долгие релизы замедляют развитие. В 2017 году производители JVM перешли на короткие циклы: теперь новая версия выходит раз в полгода. Новые фичи быстрее попадают к пользователям, и можно быстро получить обратную связь.
❓В чём проблема?
В больших проектах десятки микросервисов, сотни и тысячи серверов. Переводить инфраструктуру на новые версии каждые полгода — так себе задача. При этом важно получать обновления, чтобы не было пробелов в безопасности.
В таких случаях подойдёт java с пометкой LTS (Long Time Support). Последняя LTS— java 11. Следующая — java 17, выйдет в сентябре 2021 года.
❓Чем LTS версия отличается от обычной?
Каждая версия java— проект с отдельной кодовой базой.
Если в коде JVM найдена ошибка, то в идеале она исправляется во всех версиях, и апдейт уходит всем пользователям. Чем больше версий поддерживается, тем больше времени занимает исправление ошибки, тестирование и подготовка апдейта.
В случае пробелов с безопасностью время терять нельзя. Поэтому обновление готовится только для последней версии (java 14) и для LTS версии (java 11).
Таким образом, java LTS получает апдейты в течение нескольких лет, остальные версии — в течение полугода.
На продакшене должна быть безопасная версия с наименьшим количеством ошибок. Поэтому доступны три варианта:
🔸Обновлять инфраструктуру каждые полгода
🔸Оставаться на LTS и обновляться раз в 3 года
🔸Платить за поддержку другой версии
Выбор зависит от размеров проекта и сложности обновления.
Ответ на вопрос перед постом
В больших системах тяжело менять версию каждые полгода, но важно получать все обновления. Поэтому подходящий вариант — придерживаться последней LTS версии - java 11.
Post #165
5.01K
- ❤ 1