Spring6 официально выпущен! Большое обновление, сможет ли оно спасти Java?
Spring6 официально выпущен! Большое обновление, сможет ли оно спасти Java?

Введение

Spring Framework6 и Spring Boot3 — это скачок вперед. Минимальная версия JDK, поддерживаемая всей платформой, напрямую переходит на JDK17. Огромные изменения были внесены как на уровне инфраструктуры, так и на уровне инфраструктуры. Какие конкретные функциональные обновления и улучшения были сделаны. в новой среде Spring 6.0 необходимо ли ее обновлять и использовать? Вы можете продолжить осмотр.

Ниже вы можете сначала взглянуть на промо-блог, переведенный с официального сообщества Spring.

Дорогой Spring Сообщество: Я рад сообщить об этом сейчас MavenCentral Уже доступно SpringFramework6.0.0 Понятно! Это 2023 Начало нового поколения фреймворков в 2018 году и далее, включая OpenJDK и Java Экосистема середина: текущие и будущие инновации. В то же время мы тщательно разработали его из Spring Framework 5.3.x Непосредственное обновление до современной среды выполнения. В качестве серьезного пересмотра базовой структуры Spring framework 6.0 Поставляется с Java 17+ базовый уровень и Jakarta EE 9+ (в Jakarta пространство имен), с акцентом на недавно выпущенные Jakarta EE10 API, например Servlet 6.0 и JPA 3.1. Это обеспечивает доступ к последним web Контейнеры (например, Tomcat 10.1) и новейшие поставщики персистентности (например, Hibernate ORM 6.1) Доступ. не придерживайся JavaEE8, перейдите к jakarta пространство имен, лучше сразу перейти к JakartaEE10 уровень! Предстоящие SpringBoot3.0.0 Версия предоставляет вам соответствующие управляемые зависимости. Инфраструктура, 6,0 для конвертации заранее и соответственно AOT поддержка обработки Spring Контекст приложения обеспечивает основу. Это делает Spring Boot 3 способен GraalVM Локальные изображения обеспечивают первоклассную поддержку. Вы также можете изучить Project Loom виртуальный поток и Spring Приложения. См. раздел «Использование виртуальных потоков» и узнайте больше. Project CRaC Метод восстановления контрольной точки для ускорения JVM скорость запуска, обе функции в настоящее время находятся в предварительной версии, но ожидается, что они будут основаны на SpringFramework6.x Первоклассный функционал приложения. Весна Framework 6.0 середина имеет множество других функций и улучшений, таких как HTTP Интерфейсный клиент, пара RFC 7807 Поддержка с подробностями проблемы и HTTP Клиентская база В микрометр для Наблюдательности. Посетите нашу страницу «Что нового», чтобы получить подробный обзор, и опробуйте его заранее. 6.0.0!2022 Год 11 луна 16 день Cheers,Juergen

есливерно Если вас интересует оригинальный текст, вы можете напрямую посетить официальный оригинальный текст.spring.io/blog/2022/1…

Из официального рекламного контента мы видим, что Spring внес множество улучшений в инфраструктуру:

  • поддерживать Java 17+ базовый уровень и Jakarta EE 9+
  • Для нового поколения контейнеров Tomcat 10.1 изподдерживать
  • Локальный образ для GraalVM обеспечивает первоклассное поддержку
  • Используйте виртуальные потоки
  • Другие оптимизации функций и т. д.

Для тех из нас, кто в основном использует CRUD, изменение функциональности, возможно, пока не стоит полного обновления. Давайте посмотрим на исторические версии, поддерживаемые Spring в целом.

Обновить запись

Поддерживаемые версии

  • 6.0.x это по состоянию на 2022 Год 11 Текущий функциональный филиал и основная производственная линия Луны. потребности нового поколения JDK 17 базовый уровень.
  • 5.3.x это последняя особенность пятого поколения и новейшая производственная линия (по состоянию на 2020 Год 10 лунаиз Прирост JDK 8、JDK 11 и JDK 17 долгосрочныйподдерживать。
  • 5.2.x — предыдущая производственная линия (по состоянию на 2019 Год 9 лунаиз GA), будет получать положительное одобрение до тех пор, пока 2021 Годконец。
  • 5.1.x и 5.0.x Больше не подлежит положительному одобрению, начиная с 2020 Год 12 луна была 5.2.x и 5.3.x заменять.
  • 4.3.x В 2020 Год 12 луна 31 день дошел до официального EOL (Конец жизни). Никакого дальнейшего обслуживания и исправлений безопасности для этой линии не планируется.
  • 3.2.x В 2016 Год 12 луна 31 день достигает своего официального EOL (использоватьEnd of Life). Никакого дальнейшего обслуживания и исправлений безопасности для этой линии не планируется.

В настоящее время официальные лица рекомендуют, если это возможно, обновить MavenCentral до последней версии SpringFramework6.0.x.

Связанные диапазоны версий JDK

Согласно официальной документации, совместимые версии Spring и JDK следующие:

  • Spring Framework 6.0.x: JDK 17-21 (expected)
  • Spring Framework 5.3.x: JDK 8-19 (expected)
  • Spring Framework 5.2.x: JDK 8-15
  • Spring Framework 5.1.x: JDK 8-12
  • Spring Framework 5.0.x: JDK 8-10
  • Spring Framework 4.3.x: JDK 6-8

можно увидеть 5.3.x и ниже версии совместимы JDK8 из, Если вы не планируете полностью обновиться в ближайшее время JDK17 Можно использовать 5.3.x версия совместима не только с JDK8 Также будет совместим 11 и 17 Это две стабильные версии.

Каковы новые возможности Spring Framework 6.x?

Опираясь на историческую справку, перейдем непосредственно к теме: Каковы новые возможности Spring Framework 6.x?

Базовый уровень JDK 17+ и Jakarta EE 9+

  • Вся база кода фреймворка Java17 На уровне исходного кода он начал давать сбой. JDK8 Если вы продолжите использовать его в будущем Spring Рано или поздно это придется модернизировать.
  • Сервлеты, JPA и т. д. переносятся из javax в пространство имен jakarta.
  • Совместимость во время выполнения с API jakarta EE 9 и jakarta EE 10.
  • Совместим с новейшими веб-серверами: Tomcat 10.1, Jetty 11, Undertow 2.3.
  • Ранняя совместимость с виртуальными потоками (в JDK 19 Предварительная версия середина).

основная редакция

  • Обновите до ASM 9.4 и Kotlin 1.7。
  • Заканчивать CGLIB Форк, захват власти CGLIB Сгенерированный класс.
  • Комплексные основы AOT.
  • верно GraalVM Первоклассные местные образы власти (см. Связанный SpringBoot3 сообщение в блоге).

основной контейнер

  • По умолчанию свойства базового компонента java.beans.Invector не определяются.
  • GenericApplicationContext серединаиз AOT поддержка обработки(refreshForAotProcessing)。
  • Базовый конструктор подготовки и фабричный метод Bean Дайте определение трансформации.
  • Раннее определение класса прокси-сервера, поддержка прокси-сервера AOP и класса конфигурации.
  • PathMatchingResourcePatternResolver использовать NIO и путь к модулю API Сканирование, соответственно одобрение GraalVM местное изображение и Java Сканирование пути к модулю середина.
  • DefaultFormattingConversionService поддерживатьбаза ISO по умолчанию java.time Тип разрешения.

Доступ к данным и транзакции

  • поддержкапредопределена JPA Тип управления (входит в состав Всуществовать) AOT иметь дело ссередина)。
  • JPA поддерживать Hibernate ORM 6.1 (оставаться в соответствии с Hibernate ORM5.6 совместимость).
  • Обновите до R2DBC 1.0 (в том числе R2DBC определение транзакции).
  • Снимите кронштейн JCA CCI.

Весенние новости

  • база @RSocketExchange сервисный интерфейс RSocket Клиент интерфейса.
  • база Netty 5 αlpha Модель реакции раннего одобрения.
  • поддерживать Jakarta WebSocket 2.1 и его стандарты WebSocket Механизм обновления протокола.

Общие веб-версии

  • база @HttpExchange сервисный интерфейс HTTP Клиент интерфейса.
  • поддерживать RFC 7807 Детали проблемы.
  • Унифицированная обработка кода состояния HTTP.
  • поддерживать Jackson 2.14。
  • Соответствует Servlet 6.0 (при сохранении совместимости с Servlet 5.0 во время выполнения).

Spring MVC

  • По умолчанию использовать PathPatternParser (с выделением PathMatcher функция).
  • Удалите устаревшие файлы и подтвердите FreeMarker JSP.

Spring WebFlux

  • новый PartEvent API Потоковая загрузка многочастных форм с помощью В (существовать клиент и сервер).
  • Создайте новый ResponseEntityExceptionHandler для настройки исключений WebFlux и отображения ответов об ошибках RFC 7807.
  • Возвращаемые значения Flux для непотоковых типов (списки больше не собираются перед записью).
  • база Netty 5 Модель реакции раннего одобрения.
  • JDK HttpClient интегрирован с WebClient.

Наблюдаемость

  • существовать Spring Несколько частей кадрасерединаиспользовать micrometer Наблюдаемые инструменты наблюдения. весенняя паутина Требуется модуль, который сейчас существует io.micrometer:micrometer observation:1.10+делатьдлякомпилировать Зависимости。
  • RestTemplate и WebClient обнаруживается для генерации HTTP Клиент запрашивает наблюдения.
  • Можно использоватьновый org.springframework.web.filter.ServerHttpObservationFilter для HTTP Обнаружение наблюдения за сервером Spring MVC。
  • Можно использоватьновый org.springframework.web.filter.active.ServerHttpObservationFilter для HTTP Обнаружение наблюдения за сервером SpringWebFlux。
  • с методом контроллера Flux и Mono возвращаемое значение micrometer Интеграция распространения контекста.

тест

  • поддерживатьсуществовать JVM или GraalVM родное изображениесерединатест AOT Обработан контекст приложения.
  • Интегрирован с обработкой параметров запроса HtmlUnit 2.64+.
  • Servlet Mock (MockHttpServletRequest, MockHttpSession) теперь существует в базе Servlet API 6.0。

Подвести итог

общий Spring6 Было сделано много обновлений, и следующий шаг — Подвести Итог Еще несколько важных моментов:

JDK17

самый низкий JDK Поддерживаемая версия изменена на JDK17, возможно, все к этому привыкли JDK8, это бесплатно и стабильно Поддерживаемые версии,на самом деле JDK Сообщество выпустило поддержку G1 Стабильная версия сборщика мусора JDK11,JDK11 Как и эта переходная версия, и JDK8 Сообщество будет оказывать поддержку примерно столько же времени и будет дополнительно обновляться. JDK11 Для официального использования также требуется много тестов на совместимость, лучше использовать напрямую. JDK17 С удовольствием.

JDK17 представил ЗГК, в GC Задержка, JDK 17 Улучшение более очевидно. По данным чьего-то стресс-теста в Интернете, в Parallel середина JDK 17 контраст JDK 8 и JDK 11 продвигать 40%; G1 середина,JDK 11 контраст JDK 8 продвигать 26%,**JDK 17 контраст JDK 8 продвигатьоколо 60%!**ZGC середина JDK 17 контраст JDK 11 продвигать Превосходить 40%. если прав GC Пользователи с более высокими требованиями к задержке могут рассмотреть возможность испытать ее как можно раньше. JDK17。

JDK 17 это Oracle Официально объявлено, что его можно бесплатно использовать в коммерческих целях. LTS версия, так называемая ЛТС, да Long Term Поддержка, которая является официальной гарантией долгосрочной поддержки. версия, по официальным данным может быть вплоть до утверждения 2029 Год 9 лунаделиться。

AOT

Многие люди, возможно, слышали о JIT, а термин AOT они услышали впервые. Позвольте мне объяснить это ниже:

Основное различие между этими двумя методами компиляции заключается в том, следует ли компилировать во время выполнения JIT, а именно JIT-компиляцию, динамическую (точно в срок) компиляцию, компиляцию во время работы;

AOT, Ahead Of Time, относится к предварительной компиляции, которая представляет собой два способа компиляции программ.

Существует два способа компиляции Java-приложений: с использованием своевременной компиляции (JIT) или предварительной компиляции (AOT). Первый — это режим по умолчанию, который используется виртуальной машиной Java Hotspot для преобразования байт-кода в машинный код во время выполнения. Последний поддерживается новым компилятором GraalVM и позволяет статическую компиляцию байт-кода непосредственно в машинный код во время сборки.

JIT (Just-In-Time — компиляция точно в срок)

Во время работы программы код точки доступа рассчитывается на основе алгоритма, а затем JIT Компиляция в реальном времени. Этот метод имеет высокую пропускную способность, имеет бонус к производительности во время выполнения, может работать быстрее, может динамически генерировать код и т. д., но он относительно медленно запускается и требует определенного количества времени и частоты вызовов для запуска. JIT механизм наслоения. ТОЧНО в срок Недостатком является то, что для компиляции требуются ресурсы времени выполнения, что может привести к задержкам процесса.

AOT (Ahead-Of-Time — до компиляции)

AOT Компиляция может напрямую преобразовать исходный код в машинный код с низким использованием памяти и высокой скоростью запуска. Нет необходимости. runtime Беги, прямо runtime Статическая ссылка на конечную программу середина, но бонуса к производительности во время выполнения нет, и дальнейшая оптимизация не может быть выполнена в зависимости от условий работы программы, AOT Недостатком является то, что компиляция программы перед ее запуском увеличит время установки программы.

Сейчас, в эпоху облачных технологий, снижения затрат и повышения эффективности, Java по сравнению с Go、Rust Очень большим недостатком других языков программирования является то, что процесс компиляции и запуска очень медленный. Это противоречит облачной технологии эластичного расширения и сжатия, основанной на вычислительных ресурсах реального времени Spring6. С помощью AOT Технология занимает мало памяти при работе, а скорость запуска высокая, что постепенно удовлетворяет потребности Java Спрос в эпоху облачных технологий для крупномасштабного использования Java Коммерческие компании, применяющие его, могут рассмотреть возможность его изучения и использования как можно скорее. JDK17 использует облачную технологию, чтобы помочь компаниям сократить расходы и повысить эффективность.

Что касается AOT, давайте кратко представим термин «родной образ».

Native Image это инновационная технология, которая может Java Код компилируется в автономный собственный исполняемый файл или собственную общую библиотеку. Обрабатывается во время сборки собственного исполняемого файла. Java Байт-код включает в себя все классы приложений, зависимости, сторонние зависимые библиотеки и все необходимые JDK добрый. Полученный в результате автономный собственный исполняемый файл является специфичным и не требует JVM Каждая отдельная операционная система и архитектура машины.

Graalvm

Как упоминалось ранее, технология AOT, поддерживаемая Spring6, является базовой поддержкой Graalvm, а Spring также обеспечивает первоклассную поддержку собственных образов GraalVM.

GraalVM это высокая производительность JDK, предназначенный для ускорения использования Java и Другие JVM язык для выполнения приложений, написанных на JavaScript、Python Многие другие популярные языки предоставляют среды выполнения. GraalVM Предусмотрено две операции Java Способ применения: в HotSpot JVM Использовать на Graal немедленный (JIT) компилятор или как предварительный просмотр (AOT) Скомпилированный собственный исполняемый файл. GraalVM Многоязычные возможности позволяют смешивать несколько языков программирования в одном приложении, устраняя при этом затраты на вызовы на иностранных языках.

GraalVM К HotSpot Java Виртуальная машина добавляет пользователя Java Написал Advanced немедленный (JIT) Оптимизирующий компилятор.

Архитектура Graalvm показана на рисунке ниже:

GraalVM имеет следующие возможности:

  • Высокопроизводительные приложения Graal — усовершенствованный оптимизирующий компилятор, генерирующий более быстрый и компактный код, требующий меньше вычислительных ресурсов.
  • Компиляция Java-приложений AOT для собственных двоичных файлов,Начни сейчас,Для достижения максимальной производительности не требуется разогрева
  • Программирование на полиглотах существует одно приложение середина использует лучшие функции и библиотеки популярных языков без дополнительных накладных расходов.
  • Существуют расширенные инструменты Java и многоязычная середина. Отладка.、монитор、Анализируйте и оптимизируйте потребление ресурсов

Вообще говоря, требования к облачным технологиям не высоки, и их можно будет продолжать использовать в краткосрочной перспективе. 2.7.X версия JDK8, однако Spring Чиновники имеют Spring6 Официальная версия выпущена. Когда у вас будет достаточно сил для ее поддержки, вы можете попробовать. Spring6 и JDK17 Лучше провести проверку проекта на этих версиях и обновиться до этих версий как можно раньше для пилотного тестирования.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose