Java 17 и Jakarta EE 9 — минимальные требования для Spring Framework 6

Kate

Administrator
Команда форума
От переводчика: на конференции SpringOne были сделаны довольно важные анонсы относительно нового поколения Spring Framework, на Хабре это почему-то это прошло незамеченным. Судя по всему, в ближайшее время мы будем жить не просто в мире “Java 8/Java 11+”, а появится ещё один водораздел: “Spring 5/Spring 6+”. Чем это грозит? Например, если вы используете Hibernate 5.4, то придется принудительно обновиться на Hibernate 5.5+.
1 сентября на SpringOne было объявлено, что минимальные требования для Spring Framework 6 и Spring Boot 3, который будет доступен в 4 квартале 2022 года, сдвигаются в сторону увеличения:
  • Java 17+ (c Java 8-17 в линейке Spring Framework версии 5.3.x)
  • Jakarta EE 9+ (с Java EE 7-8 в линейке Spring Framework версии 5.3.x)

Эти минимальные требования, нацеленные на будущее, дадут нам значительные преимущества при дизайне API и разработке интеграций. Это будет сильно заметно при разработке и обеспечит поддержку как фреймворка, так и ваших приложений в будущем на много лет вперед.
Тем не менее, за все, конечно же, надо платить: приложения, написанные с использованием Spring Framework 6 и Spring Boot 3, потребуют минимум JDK 17 и Tomcat 10 / Jetty 11 (для совместимости с Jakarta EE 9). Что ещё более важно — могут потребоваться изменения в вашем исходном коде. Например, поменять пакеты javax.* на jakarta.* во всех местах, где вы используете servlet API, JPA, Bean Validation и т.д. (в соответствии с Jakarta EE 9).
Хотя это решение сначала может показаться агрессивным, имейте в виду, что релиз запланирован на четвертый квартал 2022-го года. К этому времени JDK 11 будет вытеснен не только JDK 17 (который является новой LTS версией), но уже выйдут JDK 18 и JDK 19 с новыми фичами, а также будет ожидаться выпуск JDK 20, в котором эти фичи будут “заморожены”.
То же самое применимо к Jakarta EE: к тому времени должен выйти Jakarta EE 10, а также новое поколение Tomcat, Jetty и других серверов, которые будут использоваться в качестве среды выполнения приложений. Если мы сохраним озвученные минимальные требования, это позволит нам продвигаться вперед cо Spring Framework 6.x вместе с эволюцией Java, где Java 17 и Jakarta EE 9 — это только начало.
Параллельно новым версиям, Spring Framework 5.3.x и Spring Boot 2.x будут также активно разрабатываться в обозримом будущем. Spring Boot 2.6 выйдет в ноябре этого года, а затем Spring Boot 2.7 в мае 2022-го. Когда мы дойдем до финального релиза Spring Boot 2.x (еще не определено, будет ли это 2.7 или, возможно, более поздняя версия), то этот релиз превратится в версию с расширенной поддержкой, вместе со Spring Framework 5.3.x.
Поддержка продлится несколько лет и будет происходить параллельно с развитием Spring Framework 6 и Spring Boot 3. Можно посмотреть на то, как мы поступили с релизами Spring Framework 3.2.x и 4.3.x, чтобы понять, как это будет реализовано.
Так что, если вы планируете остаться на JDK 8 или 11 еще на несколько лет, или хотите остаться на Spring Framework 5.3, но на инфраструктуре JDK 17 подольше, то будьте уверены, что наша расширенная поддержка Spring Framework 5.3.х и Spring Boot 2.x это покроет. Как только будете готовы к переводу приложения на следующее поколение экосистемы Java, обновляйтесь на Spring Framework 6 и Spring Boot 3.
Не спешите, обновляйтесь также на новые версии Tomcat, Jetty и т.п. — и получите преимущества новой инфраструктуры и новые архитектурные опции. Надеемся, что вы оцените по достоинству то, что появится в ближайшие несколько лет.
P.S. Если интересно, как обстоят дела с JDK 11, который является LTS версией, то нужно отметить, что срок коммерческой поддержки JDK 11 короче, чем у JDK 8. У JDK 11 LTS он заканчивается в конце 2023 года. А JDK 17 в качестве следующей LTS версии будет поддерживаться до 2026 года как минимум.
Да, мы понимаем уникальную роль JDK 8 в экосистеме Java, но JDK 11 в сравнении с 8 – транзитивный релиз. Также в JDK 17 накоплен весь набор самых свежих API и улучшений JVM, который делает переход на эту версию более привлекательным. Последний, но не окончательный аргумент: в рамках той же самой линейки Spring Framework 6.x будут поддерживаться JDK 23 LTS (2024) и JDK 29 LTS (2027). И это превращается в довольно широкий диапазон JDK: c 17 по 29-й.

 
Сверху