Spring АйО
9.76K subscribers
390 photos
277 videos
507 links
Русскоязычное сообщество Spring-разработчиков.

Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy

Чат для общения: @spring_aio_chat
Download Telegram
⚡️ AOT-репозитории в Spring Data теперь доступны сразу в четырёх модулях

После почти полугода полировки Spring официально включили Ahead-of-Time репозитории в релизе 2025.1.0. Теперь AOT работает не только для JPA и MongoDB, но и для Cassandra и JDBC — и генерирует полноценный код репозиториев ещё на этапе сборки.

Главная фича — репозиторий больше не чёрный ящик. Генератор создаёт читаемый Java-код и JSON-метаданные, так что можно спокойно ставить брейкпоинты, видеть реальные запросы и понимать, что именно делает Spring Data. Для JPA, JDBC и Cassandra генерируется разный код — максимально близкий к конкретной технологии.

Плюс, AOT отлично дружит с новыми возможностями Java: репозитории и вспомогательный байткод могут попасть в AOT Cache и загружаться как готовые классы из shared objects. Это даёт ощутимый прирост времени старта и снижает потребление памяти.

Есть и нюансы: часть конфигурации «замораживается» (например, JdbcDialect нельзя динамически менять), сборка становится тяжелее, а reactive-репозитории пока не поддерживаются.

Но если вы хотите сервисы, которые стартуют быстрее, удобную отладку и меньше скрытой магии — AOT-репозитории выглядят как одно из самых интересных обновлений Spring Data за последние годы.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/971364/

@spring_aio
👍34🔥155
⚡️ JSpecify пришёл в экосистему Java по-настоящему

В новой версии IntelliJ IDEA JSpecify теперь будет автоматически подтягиваться через зависимости: Spring Boot 4, Spring Framework 7, JUnit 6, Guava 33.4+.

Звучит классно, но на этапе тестирования фичи разработчики быстро упёрлись в некоторые проблемы. Стоило добавить @NullMarked, как IDE начинала закидывать сотнями предупреждений, причём даже в проектах, которые проходили NullAway на CI абсолютно чисто.

Причина проста – спецификация намеренно оставляла свободу в интерпретации опредлённых сценариев в коде, что приводило к разногласиям между инструментами, например, между IntelliJ как IDE, и NullAway как CI инструмента.

В итоге JSpecify рисковал превратиться в ещё одну спецификацию наряду с JSR 305.

JetBrains, Spring и команда NullAway провернули следующее: сели, разобрали кейсы, устаканили своё понимание спецификации и пришли к единому результату в IntelliJ IDEA 2025.3 и в NullAway:

🟣 Предупреждения IDE теперь совпадают с NullAway в тех же сценариях
🟣 Cмешанные аннотации мигрируются намного мягче
🟣 Suppressions стали переносимыми

Работа над спецификацией идёт дальше: обсуждаются единые suppression-идентификаторы, новые аннотации для тонких null-контрактов и способы облегчить миграцию больших приложений.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/971390/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2312👍91
🔥 ORM снова в огне: почему “Вьетнам индустрии” никуда не делся — и при чём тут Spring Data JDBC

Во время подготовки к Spring Data JDBC Event, эксперт нашего сообщества, Михаил Поливаха, вновь поднял тему, которая болит у индустрии уже больше двух десятилетий. Поводом стала знаменитая статья Джеффа Отвуда (основанная на мыслях Теда Ньюарда) — та самая, где прозвучала фраза

«ORM — это Вьетнам нашей индустрии»


И что самое интересное: в 2025 году она звучит не менее актуально, чем в 2004-м.

Корневая проблема всё та же: объектная модель и реляционная модель — два мира, которые не хотят мириться друг с другом. ORM обещает стать «мостом», но чаще оказывается болотом компромиссов, где всё работает… пока не перестаёт.

Джефф перечислил 6 путей, которыми индустрия пыталась сбежать от этого несоответствия:

1. Выбросить объекты. Забить на rich-domain подход и возвращать проекции/tuple’ы. Нет объектов ⇒ нет mismatch’а. Практично, как бы цинично это ни звучало.

2. Перейти к "объектным" хранилищам. OODBMS вроде db4o пытались хранить объекты как есть. Идея жила недолго, но как попытка — эпохальная.

3. Писать маппинг руками. JDBC/JOOQ и полный контроль. Иногда это даже предпочтительнее: больно, но честно.

4. Принять ограничения ORM. Hibernate-путь: 70–80% задач закрываем ORM, остальное — raw SQL. Звучит разумно, если не забывать про кэш и согласованность.

5. Встроить реляционность в язык. LINQ, Scala, F#. Красиво, но массовым это так и не стало.

6. Сделать сами объекты реляционными. RowSet/DataSet-подходы. Интересная идея, но нишевая.


В финале Джефф говорит жёстко, но честно: уберите O или уберите R из ORM — и проблема исчезнет.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/972316/
🔥28👍13🤯6🤔4😁321
⚡️ JetBrains задеприкейтили K1: начиная с IntelliJ IDEA 2025.3 основным и единственным актуальным режимом становится K2

K2 — это полностью переработанный компилятор Kotlin, построенный на новой архитектуре. Он избавляет IDE от привязки к внутренностям старого компилятора и обеспечивает поддержку будущих языковых фич, стабильность и масштабируемость.

Адаптация почти завершена: среди пользователей версии 2025.2 K2 включён у 98.6% (Ultimate) и 99.5% (Community). Для редких кейсов K1 ещё можно вернуть через VM-опцию, но режим считается устаревшим.

По производительности K2 даёт заметный прирост: анализ кода ускорился в среднем на 39%, Find Usages — на 34%, автодополнение — примерно на 26% благодаря параллельной обработке. В больших файлах ускорение особенно выражено.

Стабильность также выросла: меньше обращений в поддержку, меньше исключений в EAP, положительный фидбек от команд, работающих на крупных Kotlin-кодовых базах.

Функциональный паритет с K1 почти достигнут. Не перенесены лишь малопопулярные инспекции и рефакторинги (<0.5% использования).

Для тех, кто впервые слышит про K2, прикладываем материалы сообщества на эту тему:
Новый компилятор K2 в Kotlin. Часть 1
Новый компилятор K2 в Kotlin. Часть 2. Гайд по миграции
IntelliJ IDEA 2024.3 EAP: Новые Возможности и Улучшения

@spring_aio
👍26🔥544
🙈Помогите, мой Java-объект исчез (и GC тут ни при чём)

Подготовили перевод офигенной истории от разработчика HotSpot.

Во время работы над Project Valhalla у него начали самопроизвольно пропадать Java-объекты и классы — без участия GC, без крэшей JVM, просто AssertionError, NoClassDefFoundError и странные null там, где им вообще неоткуда взяться.

Дальше начинается настоящий отладочный квест: разбор markWord и Compact Object Headers, эксперименты с флагами JVM, попытка изолировать баг между интерпретатором, C1 и C2, майнинг логов -XX:+PrintCompilation и CompileCommand, поиск подозрительных intrinsic-ов и, в итоге, выход на одну-единственную битовую маску, которая смотрела в указатель, а не в метаданные объекта.

История классная сразу в нескольких смыслах:
— по пути узнаёте, как реально устроены заголовки объектов в HotSpot и что делает Valhalla
— видите живой пример miscompilation в C2 и то, как её можно отловить
— получаете небольшой мастер-класс по методичной отладке больших систем: от минимизации тестов до аккуратной проверки гипотез

Ну а с концовки мы посмеялись) Аккуратнее, спойлер!!!

Почему объекты превращались в null и почему классы «не находились» — я не знаю.


📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/973214/
👍209🔥8😁6🤯1
Forwarded from Amplicode
🤩 Прямой эфир про Spring Data JDBC!

Трансляция уже началась, присоединяйтесь!

В программе:
– Как правильно строить и использовать агрегаты в Spring Data JDBC.
– Почему API устроено так, как устроено — взгляд изнутри от участника разработки Spring Data.
– Фильтрация данных, удобные DTO, реализация бизнес-операций.

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍159🔥9👎1
☠️ JetBrains закрывает Fleet

— легковесную IDE нового поколения, развиваемую параллельно с IntelliJ IDEA. Несмотря на технический успех и влияние на другие продукты компании, Fleet не смог занять устойчивую нишу.

Команда признала, что поддержка двух похожих линеек IDE лишь запутывала пользователей.

Вместо этого JetBrains переориентируется на новый вектор — агентную разработку, где код пишут AI помощники.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/news/975182/
😁31🤯9🔥6🤔632👍2
🏎 Hibernate Validator 9.1: самый мощный апгрейд за последние годы

Что, если ваш валидатор стал бы в 3 раза быстрее и потреблял бы вдвое меньше памяти — без единой правки бизнес-логики? Именно это случилось с Hibernate Validator 9.1: ушли тяжёлые коллекции, пришёл умный стек. Каскадная валидация теперь летает, даже при циклах в графе объектов.

Плюс бонус: меньше мусора в памяти, меньше аллокаций, быстрее интерполяция сообщений. В бенчмарках — просто космос. Все это – в новом переводе от команды Spring АйО.

Комментарий Поливаха Михаила:
Несмотря на то, что с валидацией мы напрямую работаем не часто, имейте в виду, что Spring Boot и ваши @RestController-ы под капотом всё равно используют hibernate-validator. Поэтому почитайте, не поленитесь 😉.


📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/975422/
28👍19🔥12
Media is too big
VIEW IN TELEGRAM
🍃 Фиксим баг в исходниках Java, K1 больше нет, одна аннотация JSpecify в год | Spring АйО Подкаст №44

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
🗯 СЛУШАТЬ НА ЯНДЕКС МУЗЫКЕ
🤩 СЛУШАТЬ НА SPOTIFY
🤩 СЛУШАТЬ НА APPLE PODCASTS

💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥10👍94
Forwarded from OpenIDE
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 OpenIDE Pro — новый продукт для сегмента B2B

Мы готовы анонсировать версию OpenIDE Pro, в состав которой войдут:

• Расширенная поддержка Go, Spring, и фронтенд-технологий
• Мощные инструменты профилирования, диагностики и анализа кода
• Официальная поддержка и SLA для компаний

Сразу ответим на повисший в воздухе вопрос – бесплатная OpenIDE остаётся, развивается и будет только расти: Marketplace, LSP, Docker-плагин, новые языки в виде плагинов.

OpenIDE Pro – это та версию, которую можно использовать в компаниях официально и без риска!

Подробнее про OpenIDE Pro мы рассказали в новой статье на Хабре

👉👉👉 ТУТ

Если хотите попасть в ранний доступ — пишите нам на: pro@openide.ru


😌Незаметно присоединяйтесь ©
Please open Telegram to view this post
VIEW IN TELEGRAM
23👎18🔥10😁10👍6🤔5
🧠 Как сократить расходы на токены и повысить точность LLM

Когда количество доступных LLM инструментов (tool-ов) разрастается, традиционные подходы к tool calling становятся непрактичными — утилизация токенов улетает ещё до начала общения. К тому же, модели становится сложнее выбрать нужный набор tool-ов для решения проблемы.

В новом переводе от команды Spring АйО читаем о паттерне Tool Search Tool, предложенном Anthropic и реализованном в Spring AI с помощью ToolSearchToolCallAdvisor. Он позволяет LLM динамически находить нужные инструменты по мере необходимости, экономя до 64% токенов и повышая точность.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/976178/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍65
Forwarded from Amplicode
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Spring Data JDBC — идеальная Data для вашего приложения

Вчера прошел очередной прямой эфир от команды Amplicode при поддержке Spring АйО.

Миша и Илья вещали больше 2-х часов! Получился отличный материал From Zero To Hero про Spring Data JDBC.

Очень рекомендуем к просмотру!

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
187👍6👎1🔥1
🥸 Обнаружение взаимоблокировок на JVM с помощью Fray

Команда Spring АйО подготовила перевод про Fray — инструмент для обнаружения и воспроизведения ошибок многопоточности в Java-программах.

Основанный на научных исследованиях и написанный на Kotlin, Fray использует технику теневой блокировки для выявления взаимоблокировок и других проблем синхронизации. Он уже доказал свою эффективность на таких проектах, как Kafka, Flink и Lucene.

Комментарий от Михаила Поливаха:

В экосистеме Java уже довольно долгое время существуют решения, которые позволяют тестировать concurrent сценарии, например JCStress от разработчиков OpenJDK или Lincheck от JetBrains.

Важно то, что, как заявляется, Fray способен не просто выявлять баги в concurrency, но и воспроизводить их, а также помочь в разъяснении причин багов, а это very huge deal.

Баги в многопоточности они тем и неприятны, что они плавающие, трудно воспроизводимые и т.д. Если Fray позволит не просто обнаружить баг, но и отдебажить его, то он явно найдет спрос в Enterprise.


📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/976924/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍722🤩2
This media is not supported in your browser
VIEW IN TELEGRAM
🆕 Новая usability фича в IntelliJ IDEA!

Теперь можно вызывать действия прямо из окна автодополнения. А если дважды нажать точку (..), появится список всех доступных действий.

Если зайдёт — добавят и в другие IDE. Выглядит удобно.

🔗Полный what's new: https://www.jetbrains.com/idea/whatsnew/2025-3/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍1192😁1🤩1
💰 Изменения цен на GitHub Actions

GitHub только что анонсировал изменения в ценообразовании Actions. Ранее GitHub Actions имел бесплатный control plane.

Это означало, что если вы использовали GitHub Actions, но запускали задачи вне GitHub-hosted runners — будь то ваши собственные машины или в вашем собственном AWS аккаунте — вы ничего не платили GitHub за эти минуты; вы платили только за вычислительные ресурсы. Теперь подход изменился. Команда Spring АйО подготовила перевод анонса команды Github.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/977674/
🤯76👎3🔥2👍1
🌱 Некоторые детали реализации Slice Pagination в Spring Data JPA

Spring Data JPA предлагает два подхода к пагинации: Page и Slice. В отличие от Page, Slice не знает общего количества записей, но всё равно умеет определять, есть ли следующая страница. Как это возможно без COUNT-запроса?

На этот вопрос ответил наш эксперт Михаил Поливаха:

Мы уже как-то писали о том, что в Spring Data есть 2 способа вернуть данные в постраничном виде - Page и Slice. Разница довольно простая - Slice не знает общий размер датасета, который удовлетворяет запросу, а Page знает. Достигается это знание отправкой ещё одного COUNT-запроса в БД.

Однако, несмотря на это, Slice способен ответить на вопрос, есть ли следующая страничка данных:


public interface Slice<T> extends Streamable<T> {

/**
* Returns if there is a next {@link Slice}.
*
* @return if there is a next {@link Slice}.
*/
boolean hasNext();
}


То есть, как минимум, Slice должен понимать, следующая страничка с данными присутствует, при этом не делая "COUNT".

Чтобы реализовать это, Spring Data JPA, например, делает очень простую вещь:

int pageSize = 0;

if (pageable.isPaged()) {
pageSize = pageable.getPageSize();
createQuery.setMaxResults(pageSize + 1);
}

List<Object> resultList = createQuery.getResultList();
boolean hasNext = pageable.isPaged() && resultList.size() > pageSize


То есть, из БД запрашивается не pageSize, а pageSize + 1, то есть чуть-чуть больше. Ну и дальше простое сравнение - если нашли pageSize, то странички дальше точно нет, а если нашли pageSize + 1, то страничка дальше точно есть (хотя может и меньшего размера).

Вот так вот оно работает 😉
🔥63👌127👎2
Media is too big
VIEW IN TELEGRAM
🍃 AI-агенты портят разработчиков, JVM ничего не гарантирует, верните фишинг | Spring АйО Подкаст №45

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
🗯 СЛУШАТЬ НА ЯНДЕКС.МУЗЫКЕ
🤩 СЛУШАТЬ НА SPOTIFY
🤩 СЛУШАТЬ НА APPLE PODCASTS

💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😁85👎1
🌱 Spring Boot наконец получил нативную поддержку gRPC

Забудьте о сторонних стартерах и костылях — Spring gRPC 1.0 GA уже здесь. Теперь можно строить высокопроизводительные RPC-сервисы с Protocol Buffers прямо из коробки, без плясок с бубном.

В новом переводе от команды Spring АйО рассмотрим пошаговую миграцию со старых решений, генерацию кода из .proto, и сравнение с тем, как это работает в Quarkus. 

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/978418/
🔥6418👍162🤯1