⚡️ 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
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🔥5❤4⚡4
🙈Помогите, мой Java-объект исчез (и GC тут ни при чём)
Подготовили перевод офигенной истории от разработчика HotSpot.
Во время работы над Project Valhalla у него начали самопроизвольно пропадать Java-объекты и классы — без участия GC, без крэшей JVM, просто
Дальше начинается настоящий отладочный квест: разбор
История классная сразу в нескольких смыслах:
— по пути узнаёте, как реально устроены заголовки объектов в HotSpot и что делает Valhalla
— видите живой пример miscompilation в C2 и то, как её можно отловить
— получаете небольшой мастер-класс по методичной отладке больших систем: от минимизации тестов до аккуратной проверки гипотез
Ну а с концовки мы посмеялись) Аккуратнее, спойлер!!!
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/973214/
Подготовили перевод офигенной истории от разработчика 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/
👍20❤9🔥8😁6🤯1
Forwarded from Amplicode – ускоряем разработку на Spring
🤩 Прямой эфир про Spring Data JDBC!
Трансляция уже началась, присоединяйтесь!
В программе:
– Как правильно строить и использовать агрегаты в Spring Data JDBC.
– Почему API устроено так, как устроено — взгляд изнутри от участника разработки Spring Data.
– Фильтрация данных, удобные DTO, реализация бизнес-операций.
😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Трансляция уже началась, присоединяйтесь!
В программе:
– Как правильно строить и использовать агрегаты в Spring Data JDBC.
– Почему API устроено так, как устроено — взгляд изнутри от участника разработки Spring Data.
– Фильтрация данных, удобные DTO, реализация бизнес-операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤9🔥9👎2
☠️ JetBrains закрывает Fleet
— легковесную IDE нового поколения, развиваемую параллельно с IntelliJ IDEA. Несмотря на технический успех и влияние на другие продукты компании, Fleet не смог занять устойчивую нишу.
Команда признала, что поддержка двух похожих линеек IDE лишь запутывала пользователей.
Вместо этого JetBrains переориентируется на новый вектор — агентную разработку, где код пишут AI помощники.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/news/975182/
— легковесную IDE нового поколения, развиваемую параллельно с IntelliJ IDEA. Несмотря на технический успех и влияние на другие продукты компании, Fleet не смог занять устойчивую нишу.
Команда признала, что поддержка двух похожих линеек IDE лишь запутывала пользователей.
Вместо этого JetBrains переориентируется на новый вектор — агентную разработку, где код пишут AI помощники.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/news/975182/
😁31🤯9🔥6🤔6❤3⚡2👍2
🏎 Hibernate Validator 9.1: самый мощный апгрейд за последние годы
Что, если ваш валидатор стал бы в 3 раза быстрее и потреблял бы вдвое меньше памяти — без единой правки бизнес-логики? Именно это случилось с Hibernate Validator 9.1: ушли тяжёлые коллекции, пришёл умный стек. Каскадная валидация теперь летает, даже при циклах в графе объектов.
Плюс бонус: меньше мусора в памяти, меньше аллокаций, быстрее интерполяция сообщений. В бенчмарках — просто космос. Все это – в новом переводе от команды Spring АйО.
Комментарий Поливаха Михаила:
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/975422/
Что, если ваш валидатор стал бы в 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
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥10👍9⚡4
Forwarded from OpenIDE – мультиязычная среда разработки
This media is not supported in your browser
VIEW IN TELEGRAM
Мы готовы анонсировать версию OpenIDE Pro, в состав которой войдут:
• Расширенная поддержка Go, Spring, и фронтенд-технологий
• Мощные инструменты профилирования, диагностики и анализа кода
• Официальная поддержка и SLA для компаний
Сразу ответим на повисший в воздухе вопрос – бесплатная OpenIDE остаётся, развивается и будет только расти: Marketplace, LSP, Docker-плагин, новые языки в виде плагинов.
OpenIDE Pro – это та версию, которую можно использовать в компаниях официально и без риска!
Подробнее про OpenIDE Pro мы рассказали в новой статье на Хабре
Если хотите попасть в ранний доступ — пишите нам на: [email protected]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👎18🔥10😁10👍6🤔5
Когда количество доступных 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👍6❤5
Forwarded from Amplicode – ускоряем разработку на Spring
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера прошел очередной прямой эфир от команды Amplicode при поддержке Spring АйО.
Миша и Илья вещали больше 2-х часов! Получился отличный материал From Zero To Hero про Spring Data JDBC.
Очень рекомендуем к просмотру!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18⚡7👍6👎1🔥1
Команда 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👍7⚡2❤2🤩2
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь можно вызывать действия прямо из окна автодополнения. А если дважды нажать точку (..), появится список всех доступных действий.
Если зайдёт — добавят и в другие IDE. Выглядит удобно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥49👍11❤9⚡2😁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/
GitHub только что анонсировал изменения в ценообразовании Actions. Ранее GitHub Actions имел бесплатный control plane.
Это означало, что если вы использовали GitHub Actions, но запускали задачи вне GitHub-hosted runners — будь то ваши собственные машины или в вашем собственном AWS аккаунте — вы ничего не платили GitHub за эти минуты; вы платили только за вычислительные ресурсы. Теперь подход изменился. Команда Spring АйО подготовила перевод анонса команды Github.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/977674/
🤯7⚡6👎3🔥2👍1
🌱 Некоторые детали реализации Slice Pagination в Spring Data JPA
Spring Data JPA предлагает два подхода к пагинации: Page и Slice. В отличие от
На этот вопрос ответил наш эксперт Михаил Поливаха:
Мы уже как-то писали о том, что в Spring Data есть 2 способа вернуть данные в постраничном виде -
Однако, несмотря на это,
То есть, как минимум,
Чтобы реализовать это, 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, то страничка дальше точно есть (хотя может и меньшего размера).Вот так вот оно работает 😉
🔥65👌12❤7👎2
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😁8❤5👎1
🌱 Spring Boot наконец получил нативную поддержку gRPC
Забудьте о сторонних стартерах и костылях — Spring gRPC 1.0 GA уже здесь. Теперь можно строить высокопроизводительные RPC-сервисы с Protocol Buffers прямо из коробки, без плясок с бубном.
В новом переводе от команды Spring АйО рассмотрим пошаговую миграцию со старых решений, генерацию кода из .proto, и сравнение с тем, как это работает в Quarkus.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/978418/
Забудьте о сторонних стартерах и костылях — Spring gRPC 1.0 GA уже здесь. Теперь можно строить высокопроизводительные RPC-сервисы с Protocol Buffers прямо из коробки, без плясок с бубном.
В новом переводе от команды Spring АйО рассмотрим пошаговую миграцию со старых решений, генерацию кода из .proto, и сравнение с тем, как это работает в Quarkus.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/978418/
🔥66❤18👍16⚡2🤯2
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Обнаружение взаимоблокировок на JVM с помощью Fray
– Новая usability фича в IntelliJ IDEA!
– Изменения цен на GitHub Actions
– Некоторые детали реализации Slice Pagination в Spring Data JPA
– AI-агенты портят разработчиков, JVM ничего не гарантирует, верните фишинг | Spring АйО Подкаст №45
– Spring Boot наконец получил нативную поддержку gRPC
– Amplicode: Spring Data JDBC — идеальная Data для вашего приложения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7🔥5
Подготовили материал о том, почему «быстрый запрос в MongoDB» — это индексы, форма запроса, проекции,
explain(), профайлер и наблюдаемость в Java/Spring Boot. Разбираем, как отличать
IXSCAN от COLLSCAN, где чаще всего прячутся антипаттерны (skip-пагинация, тяжёлые $regex/$nin, findAll), и как выстроить измеримый цикл оптимизаций от Atlas/Compass до Micrometer.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/979440/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍8⚡4❤1
Forwarded from Amplicode – ускоряем разработку на Spring
Запускаем цикл видео про разработку телеграм-бота на Spring!
В первом выпуске — база, на котором строится весь сервис.
В следующих частях покажем, как интегрировали в бота Spring AI и как разворачивали всё это дело.
Ну и конечно — код открыт и лежит на GitHub. Забирайте, изучайте, экспериментируйте!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥16❤6⚡4😁2
Parallel streams — это не «бесплатный» прирост производительности, а дорогая оптимизация.
🟣 Любое распараллеливание добавляет накладные расходы: разбиение данных, управление задачами через fork-join, синхронизацию и объединение результатов. Если операция над элементом дешёвая или данных недостаточно много, этот оверхед полностью съедает потенциальный выигрыш — и последовательный стрим оказывается быстрее.
🟣 Вторая причина — ограничения самой задачи. Многие вычисления по природе последовательны или содержат существенную последовательную часть, которую нельзя распараллелить. Закон Амдала жёстко ограничивает максимальный speedup: даже небольшой последовательный участок ставит потолок ускорению, независимо от количества ядер. В streams эта доля часто больше, чем кажется.
🟣 Наконец, упор часто происходит не в CPU, а в память. Параллельные стримы хорошо работают на больших массивах, но быстро деградируют на графах, списках и указательных структурах. В таких случаях потоки не ускоряют вычисления, а просто параллельно ждут данные из памяти.
Подробнее в новом переводе статьи от Брайана Гоетца – одного из ключевых архитекторов экосистемы Java и главного авторитета по конкурентному и параллельному программированию в JVM.
@spring_aio
Подробнее в новом переводе статьи от Брайана Гоетца – одного из ключевых архитекторов экосистемы Java и главного авторитета по конкурентному и параллельному программированию в JVM.
@spring_aio
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍23🔥11⚡2