🔎 Java-приложение тормозит. Кто виноват: код, GC или Python?
Когда сервис начинает активно есть память или отвечать медленнее обычного, не всегда хочется сразу раскручивать полноценный профайлер. Стоит сначала заглянуть внутрь JVM и понять, где вообще искать проблему.
Для этого команда Axiom JDK сделала Profiling Tools — плагин для OpenIDE.
🖥 Прямо внутри среды разработки можно подключиться к локальному Java-процессу и посмотреть:
— CPU JVM и общую загрузку процессора;
— heap, non-heap и GC Load;
— потоки, их состояния, CPU Load и выделенную память;
— стектрейсы, а для процессов, запущенных из OpenIDE, перейти к нужной строке кода.
Как заметить подозрительный рост heap и проверить работу GC, найти внешний процесс, который отъедает CPU у Java, и понять, действительно ли тормозит сервис или ему просто почти не прилетают запросы?
🔷 Какие метрики смотреть в каждом случае и как по ним сузить поиск проблемы — разобрали на Хабре.
Когда сервис начинает активно есть память или отвечать медленнее обычного, не всегда хочется сразу раскручивать полноценный профайлер. Стоит сначала заглянуть внутрь JVM и понять, где вообще искать проблему.
Для этого команда Axiom JDK сделала Profiling Tools — плагин для OpenIDE.
— CPU JVM и общую загрузку процессора;
— heap, non-heap и GC Load;
— потоки, их состояния, CPU Load и выделенную память;
— стектрейсы, а для процессов, запущенных из OpenIDE, перейти к нужной строке кода.
Как заметить подозрительный рост heap и проверить работу GC, найти внешний процесс, который отъедает CPU у Java, и понять, действительно ли тормозит сервис или ему просто почти не прилетают запросы?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥1🔥1🤯1
В jackson-databind раскрыли CVE-2026-83557 с оценкой CVSS 5,6. Причина: java.lang.Comparable не попал в список потенциально опасных типов DefaultBaseTypeLimitingValidator.
Уязвимость проявляется при сочетании трёх условий: @JsonTypeInfo, базовый тип Comparable и отсутствие строгого PolymorphicTypeValidator.
В таком случае входные данные могут заставить Jackson создать объект неожиданного класса. В proof of concept исследователи получили java.io.File с произвольным путём. Само по себе это не RCE: последствия зависят от того, как приложение использует объект дальше.
Патчи уже выпустили: Для Jackson 2 — версии 2.18.10, 2.21.6 и 2.22.2; для Jackson 3 — 3.1.6 и 3.2.2.
Сейчас стоит:
1. Обновить jackson-databind до исправленной версии.
2. Найти места, где @JsonTypeInfo используется вместе с Comparable.
3. Проверить настройки PolymorphicTypeValidator.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4⚡1🤔1
💥 Java Rock Star Meetup — уже в ближайшую пятницу
18 сентября будем разбираться, для чего нужны value-типы и как Project Valhalla пытаются наконец довести до финиша, а ещё — как в агентном SDLC сохранить связь между требованиями, инженерными решениями, кодом и реальным поведением системы.
А пока — делимся важной организационной информацией.
Расписание:
18:00–19:00 — сбор гостей
19:00–19:05 — открытие
19:05–20:00 — Иван Углянский: «Проект Valhalla, или Как добавить value-типы в Java, не превращая её в C++», доклад + Q&A-сессия
20:00–21:00 — Максим Козлов: «Мы точно сделали то, что требовалось? От требования к результату в агентном SDLC», доклад + Q&A-сессия
После 21:00 — афтепати и квиз
📍 Москва, Лофт Casa Picassa, ул. Бауманская, 11, стр. 8, зал «Кандинский». Митап начинается в час пик, поэтому рекомендуем продумать маршрут заранее.
❗️Для участия нужно зарегистрироваться. Если вы еще не успели, то сейчас самое время. Принять участие в митапе.
До встречи🤘
18 сентября будем разбираться, для чего нужны value-типы и как Project Valhalla пытаются наконец довести до финиша, а ещё — как в агентном SDLC сохранить связь между требованиями, инженерными решениями, кодом и реальным поведением системы.
А пока — делимся важной организационной информацией.
Расписание:
18:00–19:00 — сбор гостей
19:00–19:05 — открытие
19:05–20:00 — Иван Углянский: «Проект Valhalla, или Как добавить value-типы в Java, не превращая её в C++», доклад + Q&A-сессия
20:00–21:00 — Максим Козлов: «Мы точно сделали то, что требовалось? От требования к результату в агентном SDLC», доклад + Q&A-сессия
После 21:00 — афтепати и квиз
📍 Москва, Лофт Casa Picassa, ул. Бауманская, 11, стр. 8, зал «Кандинский». Митап начинается в час пик, поэтому рекомендуем продумать маршрут заранее.
❗️Для участия нужно зарегистрироваться. Если вы еще не успели, то сейчас самое время. Принять участие в митапе.
До встречи🤘
❤🔥2⚡1🔥1
⏳ Spring Boot 3.5 остался без публичной поддержки. А что дальше?
В июне 2026 года закончилась публичная поддержка Spring Boot 3.5. Приложения не остановились, но появляющиеся уязвимости могут превратить плановую миграцию в аврал.
Мы в Axiom JDK опросили более 300 Java-специалистов. Большинство регулярно используют Spring, а выборка в основном отражает опыт крупного бизнеса и финтеха.
Что видно сразу?
🕒 Больше половины не знали о сроках окончании поддержки. 53,5% не знали дату, а 55,8% не смогли определить допустимый срок работы без публичных обновлений.
🧩 Версии живут параллельно. Spring Boot 3.x используют 83,7%, 2.x — 21,2%, а 32,7% работают сразу с несколькими поколениями.
🚀 Переход на Spring Boot 4 уже начался: 18,9% уже начали или завершили миграцию, у 41% она в планах.
🛠 Поддержку считают важной, но лишь четверть готова к ней обратиться: 61,2% отметили практическую ценность, а 26,9% используют или рассматривают внешнюю поддержку.
Картина двойственная: часть уже работает над переходом, но у большинства нет четкого плана действий на период после окончания открытой поддержки. Важно заранее определить ответственного, сроки и источник исправлений.
Кто чаще инициирует обновления и где между разработкой и ИБ возникает разрыв ответственности — разобрали в статье Блога.
👀 И это только то, что бросается в глаза. Полные данные, анализ рисков и практические ориентиры — в отчёте об исследовании.
В июне 2026 года закончилась публичная поддержка Spring Boot 3.5. Приложения не остановились, но появляющиеся уязвимости могут превратить плановую миграцию в аврал.
Мы в Axiom JDK опросили более 300 Java-специалистов. Большинство регулярно используют Spring, а выборка в основном отражает опыт крупного бизнеса и финтеха.
Что видно сразу?
🕒 Больше половины не знали о сроках окончании поддержки. 53,5% не знали дату, а 55,8% не смогли определить допустимый срок работы без публичных обновлений.
🧩 Версии живут параллельно. Spring Boot 3.x используют 83,7%, 2.x — 21,2%, а 32,7% работают сразу с несколькими поколениями.
🚀 Переход на Spring Boot 4 уже начался: 18,9% уже начали или завершили миграцию, у 41% она в планах.
🛠 Поддержку считают важной, но лишь четверть готова к ней обратиться: 61,2% отметили практическую ценность, а 26,9% используют или рассматривают внешнюю поддержку.
Картина двойственная: часть уже работает над переходом, но у большинства нет четкого плана действий на период после окончания открытой поддержки. Важно заранее определить ответственного, сроки и источник исправлений.
Кто чаще инициирует обновления и где между разработкой и ИБ возникает разрыв ответственности — разобрали в статье Блога.
👀 И это только то, что бросается в глаза. Полные данные, анализ рисков и практические ориентиры — в отчёте об исследовании.
👍2🤔1🏆1👨💻1
Forwarded from Сети и сигналы
Банк международных расчетов (BIS) и ряд экономистов видят в этом признаки пузыря, сравнивая ситуацию с крахом доткомов. Китайский экономист и глава Baidu Робин Ли прогнозирует, что лишь 1% ИИ-компаний переживет возможный будущий крах — это, по его мнению, приведет к формированию более стабильного рынка с реалистичными сценариями применения технологии.
В России, где на бирже не торгуются компании, которые специализируются исключительно на разработке ИИ, развитие сдерживают высокие ставки по кредитам и дефицит электроэнергии.
💬 «У российской модели есть определенный запас устойчивости именно потому, что значительная часть инвестиций связана не только с венчурными ожиданиями. ИИ встроен в государственную технологическую повестку, программы цифровой трансформации и стратегии крупнейших компаний, поэтому одномоментного прекращения инвестиций вслед за глобальной рыночной коррекцией ожидать не следует. При этом такая модель имеет другое ограничение. Наличие крупного корпоративного или государственного заказчика способно обеспечить финансирование технологии, но само по себе не обеспечивает ее экономическую эффективность. Поэтому устойчивость российской модели будет определяться не объемом выделяемых средств, а способностью переводить инвестиции в промышленную эксплуатацию», — считает гендиректор Axiom JDK Роман Карпов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤔4🤯2❤1😁1
Внутри — девять JEP
G1 теперь выбирается по умолчанию даже в окружениях с одним CPU или небольшим объёмом памяти. Compact Object Headers сжимают заголовок объекта с 96 до 64 бит на 64-битном HotSpot; в SPECjbb2015 это дало до 22% экономии heap. TLS 1.3 получил гибридный постквантовый обмен ключами, а JFR теперь редактирует типичные секреты ещё до записи диагностических данных.
Не только рантайм
Lazy Constants откладывают вычисление до первого обращения, выполняют его не больше одного раза и безопасно работают при конкурентном доступе. Structured Concurrency вышла в седьмое preview, а примитивные типы в pattern matching, instanceof и switch — в пятое.
Но релиз не из серии «поставил и забыл». В небольших окружениях стоит проверить переход с Serial GC на G1; Compact Object Headers при проблемах можно отключить флагом -XX:-UseCompactObjectHeaders; а вручную ограниченный список TLS named groups не даст включиться гибридному обмену. Перед обновлением стоит проверить контейнерные лимиты, JVM-флаги и TLS-настройки.
И главное: Java 27 — не LTS. Четыре JEP остаются в preview, а Vector API — в incubator. Поэтому релиз скорее подходит для проверки совместимости и новых API, чем на роль новой опорной production-ветки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6⚡3
🐘 Команда Gradle выпустила 9.8 RC2
Главное для Java-команд — заявленная поддержка Java 27. В релиз-кандидат также вошли повторное использование настроек Maven mirror и связанные с исходниками позиции ошибок в выводе сборки.
RC — это не сигнал немедленно обновлять рабочий wrapper. Это приглашение проверить новый стек до финального релиза. Особенно внимательно стоит прогнать плагины, convention plugins, configuration cache, корпоративные зеркала и сборки, где toolchain отличается от JVM, на которой работает сам Gradle.
Практический сценарий простой: отдельная ветка, обновление wrapper, полный CI и сравнение времени и воспроизводимости сборки. Если тесты прошли, команда заранее снимает риск несовместимости с Java 27. Если нет — получает время сообщить о проблеме до GA, не затрагивая production-процесс.
🔷 Релиз Gradle 9.8.0 RC2
Главное для Java-команд — заявленная поддержка Java 27. В релиз-кандидат также вошли повторное использование настроек Maven mirror и связанные с исходниками позиции ошибок в выводе сборки.
RC — это не сигнал немедленно обновлять рабочий wrapper. Это приглашение проверить новый стек до финального релиза. Особенно внимательно стоит прогнать плагины, convention plugins, configuration cache, корпоративные зеркала и сборки, где toolchain отличается от JVM, на которой работает сам Gradle.
Практический сценарий простой: отдельная ветка, обновление wrapper, полный CI и сравнение времени и воспроизводимости сборки. Если тесты прошли, команда заранее снимает риск несовместимости с Java 27. Если нет — получает время сообщить о проблеме до GA, не затрагивая production-процесс.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2⚡1
🫨 Java запрещает менять final? Разбираем JEP 500
Поле объявлено final, но через reflection его всё ещё можно изменить после создания объекта. Старый Java-компромисс, который годами помогал фреймворкам, теперь начинает мешать самой JVM.
В JDK 26 OpenJDK сделал первый шаг к тому, чтобы final действительно означал «неизменяемый»: пока такие мутации получают warning, а в будущем их планируют запрещать по умолчанию.
В новом видео Максим Лебедев, Developer Advocate Axiom JDK, разбирает:
— что меняет JEP 500 Prepare to Make Final Mean Final в JDK 26;
— кого могут затронуть изменения;
— как найти final-field mutation в своём проекте;
— что проверить уже сейчас, чтобы будущие обновления JDK не принесли сюрпризов.
🌐 YouTube | 🌍 VK Видео
А если вам удобнее читать — текстовая версия уже ждет вас на Хабр!
Поле объявлено final, но через reflection его всё ещё можно изменить после создания объекта. Старый Java-компромисс, который годами помогал фреймворкам, теперь начинает мешать самой JVM.
В JDK 26 OpenJDK сделал первый шаг к тому, чтобы final действительно означал «неизменяемый»: пока такие мутации получают warning, а в будущем их планируют запрещать по умолчанию.
В новом видео Максим Лебедев, Developer Advocate Axiom JDK, разбирает:
— что меняет JEP 500 Prepare to Make Final Mean Final в JDK 26;
— кого могут затронуть изменения;
— как найти final-field mutation в своём проекте;
— что проверить уже сейчас, чтобы будущие обновления JDK не принесли сюрпризов.
А если вам удобнее читать — текстовая версия уже ждет вас на Хабр!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍3
♻️ G1 за восемь версий JDK: что успели переделать
G1, или Garbage-First, — сборщик мусора в JVM, который делит heap на регионы и старается удерживать паузы под контролем за счёт поэтапной очистки памяти. Для многих Java-приложений это уже привычный GC по умолчанию.
Но за знакомым названием скрывается сборщик, который от JDK 17 до 25 успели заметно перекроить.
Дмитрий Соломенников разобрал на Хабр, как менялся G1 и какие реальные проблемы эксплуатации стояли за этими изменениями. Как:
— в JDK 17 улучшили работу с humongous objects, а в одном из сценариев Full GC стал проходить на 10–12% быстрее;
— в JDK 18 переработали remembered set и сократили потребление памяти почти на 25%;
— в JDK 20 переход на tri-color marking высвободил около 1,5% кучи;
— в JDK 21 G1 научился перемещать humongous objects во время Full GC, чтобы бороться с фрагментацией;
— в JDK 24–25 доработали настройку эвристик и сценарии, которые могли неожиданно растягивать паузы.
Получилась полноценная биография G1: от устройства регионов и remembered set до оптимизаций, которые появились после лет эксплуатации в проде.
🔷 История G1 от JDK 17 до 25 — на Хабре
G1, или Garbage-First, — сборщик мусора в JVM, который делит heap на регионы и старается удерживать паузы под контролем за счёт поэтапной очистки памяти. Для многих Java-приложений это уже привычный GC по умолчанию.
Но за знакомым названием скрывается сборщик, который от JDK 17 до 25 успели заметно перекроить.
Дмитрий Соломенников разобрал на Хабр, как менялся G1 и какие реальные проблемы эксплуатации стояли за этими изменениями. Как:
— в JDK 17 улучшили работу с humongous objects, а в одном из сценариев Full GC стал проходить на 10–12% быстрее;
— в JDK 18 переработали remembered set и сократили потребление памяти почти на 25%;
— в JDK 20 переход на tri-color marking высвободил около 1,5% кучи;
— в JDK 21 G1 научился перемещать humongous objects во время Full GC, чтобы бороться с фрагментацией;
— в JDK 24–25 доработали настройку эвристик и сценарии, которые могли неожиданно растягивать паузы.
Получилась полноценная биография G1: от устройства регионов и remembered set до оптимизаций, которые появились после лет эксплуатации в проде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1👨💻1
14–15 октября традиционно поучаствуем в самой большой Java-конференции со стендом: заходите познакомиться, проверить знания в квизах, побороться за призы и обсудить технологии с командой Axiom JDK.
Что в программе?
ИИ уже меняет повседневную работу разработчика: важно не только знать, как реализовать решение, но и точно поставить задачу, задать контекст и суметь оценить результат. Поэтому к разборам JVM, фреймворков, архитектуры и производительности добавятся доклады о том, как меняется сама профессия.
14 октября — Современные практики: JVM и JDK, производительность и архитектура, Spring и Kotlin, базы данных и инфраструктура, инструменты разработчика и агенты.
15 октября — «Разработка будущего»: Инженеры, менеджеры, философы и ученые — о технологиях, работе, организациях и перераспределении ответственности.
До встречи в октябре!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Spring вместе с транзитивными зависимостями может составлять до 90% современного приложения.
После окончания публичной поддержки версии 3.5 код продолжает жить, а новые уязвимости никуда не исчезают. Еще и ИИ в разы ускорил поиск слабых мест, и теперь нет более удобной мишени, чем старые версии без патчей.
20 октября будем разбираться, что на практике происходит после EOL, почему одного мониторинга CVE мало и как выстроить управляемую работу с уязвимостями, зависимостями и исправлениями.
Отдельно покажем, где в этой схеме помогает Axiom Spring и как поддерживать старые ветки без авральной major-миграции.
🎤 Спикеры:
• Дмитрий Карасовский — руководитель отдела по информационной безопасности Axiom JDK
• Алексей Захаров — директор по технологическому консалтингу Axiom JDK
• Максим Лебедев — Developer Advocate Axiom JDK
• Илья Сазонов — директор по продуктам направлений Axiom Spring и OpenIDE
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2⚡1
🛠 Spring перестраивает расписание обновлений
Раньше патчи разных Spring-проектов выходили по очереди, и весь цикл растягивался примерно на две недели. Теперь вместо него появится Patch Thursday: плановые обновления и CVE-фиксы будут выпускать вместе, в четверг после третьего понедельника месяца.
❓ Почему так?
Поток security-репортов резко вырос:
• Раньше команда получала 6-7 сообщений в месяц, с марта — почти 80;
• Spring сам начал прогонять проекты через AI-модели: только в апреле они выдали 370 отчётов.
Хоть и не каждый отчёт становится CVE, их все равно нужно проверять. В старом графике обрабатывать такой поток и выпускать исправления становилось всё сложнее.
🗓 Первый полноценный Patch Thursday запланирован на 22 октября.
Большой плюс для команд: обновления Spring-стека теперь проще собирать в одно плановое окно. Проверили, что приехало, прогнали совместимость и тесты, обновились.
Если сервисы остаются на Spring Framework 5.3 или Spring Boot 2.7, Axiom Spring позволяет получать обновления безопасности и критические исправления без срочной major-миграции.
🔷 Подробности
Раньше патчи разных Spring-проектов выходили по очереди, и весь цикл растягивался примерно на две недели. Теперь вместо него появится Patch Thursday: плановые обновления и CVE-фиксы будут выпускать вместе, в четверг после третьего понедельника месяца.
Поток security-репортов резко вырос:
• Раньше команда получала 6-7 сообщений в месяц, с марта — почти 80;
• Spring сам начал прогонять проекты через AI-модели: только в апреле они выдали 370 отчётов.
Хоть и не каждый отчёт становится CVE, их все равно нужно проверять. В старом графике обрабатывать такой поток и выпускать исправления становилось всё сложнее.
Большой плюс для команд: обновления Spring-стека теперь проще собирать в одно плановое окно. Проверили, что приехало, прогнали совместимость и тесты, обновились.
Если сервисы остаются на Spring Framework 5.3 или Spring Boot 2.7, Axiom Spring позволяет получать обновления безопасности и критические исправления без срочной major-миграции.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰1😁1🤔1🍾1👨💻1
1. Compact Object Headers теперь включены по умолчанию. На типичной 64-битной HotSpot-конфигурации заголовок объекта уменьшается с 12 до 8 байт.
2. G1 теперь GC по умолчанию вообще везде, в том числе в небольших контейнерах и однопроцессорных средах, где раньше JVM могла выбрать Serial GC.
С компактными заголовками выигрыш особенно заметен там, где в heap много мелких объектов: в одном из замеров SPECjbb2015 расход памяти снизился на 22%, а CPU — на 8%. С G1 нюанс другой: на небольших конфигурациях могут сократиться паузы, нагрузка на CPU и потребление памяти.
Поэтому переход на JDK 27 лучше проверять не одним общим бенчмарком. Снимите базовые метрики на текущей версии, а затем отдельно сравните новые дефолты: Compact Object Headers можно временно отключить, а GC — выбрать явно. Так будет понятно, что именно изменило профиль приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Но это не значит, что без пароля можно было войти в любой LDAP. Для эксплуатации требовалось совпадение ряда условий:
• уязвимая версия Spring LDAP;
• атакующий знал существующее имя пользователя;
• пустой пароль или null;
• LDAP-сервер разрешил unauthenticated bind;
• приложение приняло ответ и создало пользовательскую сессию.
Фикс уже выпустили:
• Spring LDAP 4.0.0–4.0.3 → 4.0.4;
• Spring LDAP 3.3.0–3.3.7 → 3.3.8.
В первую очередь — обновиться.
Затем проверить саму конфигурацию: нужен ли вообще unauthenticated bind и отклоняет ли приложение пустые пароли до обращения к LDAP.
Если нельзя исключить, что уязвимость уже эксплуатировали, тогда начинается уже не патчинг, а расследование: стоит проверить журналы аутентификации и действий пользователей, завершить подозрительные сессии и при необходимости временно ограничить LDAP-вход.
После обновления отдельно прогоните вход с пустым паролем — система должна ответить отказом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1
В JDK уже есть ML-KEM и ML-DSA, но их базовая Java-реализация рассчитана прежде всего на переносимость. В JDK 28 HotSpot начинает точечно подменять самые тяжёлые операции оптимизированным машинным кодом под конкретную архитектуру.
В опубликованных тестах ускорение местами доходит до 218% — то есть операция выполняется примерно в 3,18 раза быстрее Java-only версии. В этих алгоритмах много повторяющихся вычислений над полиномами, которые хорошо ложатся на векторные инструкции и аппаратное ускорение.
Для команд, которые уже примеряют постквантовую криптографию, это снижает её вычислительную цену: генерация ключей, инкапсуляция и работа с подписями меньше нагружают процессор.
Но магии нет: HotSpot использует такую оптимизацию только там, где её поддерживает платформа. Поэтому финальные цифры всё равно стоит замерять на своём железе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Мы внедрили Svace и платформу Svacer от ИСП РАН в процесс анализа кодовой базы Axiom JDK.
Задача была не просто добавить ещё один SAST. Кодовая база JDK огромная, а требования к безопасной разработке и сертификации растут. Поэтому нужен инструмент, который умеет глубоко разбирать межпроцедурные связи и нормально работает на таком масштабе.
Svace прогнал около 7 млн строк кода, а команда обнаружила и исправила примерно 1,2 тыс. дефектов.
При этом одним анализатором дело не ограничилось. Svace стал основным инструментом глубокого анализа, а другие SAST и open-source-линтеры дополняют его: разные движки находят разные классы проблем.
Отдельная история — разбор тысяч предупреждений. Для этого используем Svacer и ML-классификацию: сейчас один разработчик в среднем проверяет около 50 срабатываний в день.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2