🛠 Structured Concurrency в Java: наконец-то находит опору
API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930812/
API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод
open()
, политики Joiner'ов, улучшенная отмена задач, дедлайны, передача контекста через ScopedValues
и строгая защита от ошибок использования. Всё это делает параллельное программирование в Java более безопасным, читаемым и управляемым.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930812/
🔥23👍11❤9
Forwarded from Amplicode
Media is too big
VIEW IN TELEGRAM
Роман Елизаров, Илья Кучмин и Александр Шустанов:
––––– Таймкоды –––––
00:00:00 – Хайлайты
00:00:41 – Вступление. О чём сегодня поговорим?
00:05:10 – Демо. Основные возможности Connekt и мощная интеграция со Spring Boot.
00:44:43 – Демо. Connekt и работа с защищенными эндпоинтами (авторизация, аутентификация, Spring Security)
00:59:51 – Демо. Работаем с внешним API используя Connekt. Формируем цепочки вызовов
01:17:55 – Заключение. А что еще умеет Connekt?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤12👍10
🧠 JEP 519: Компактные заголовки объектов — теперь официально!
Java 25 анонсирует ещё одну немаловажную фичу: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.
Что это такое?
У каждого объекта в Java есть заголовок — служебные данные, которые JVM использует для синхронизации, GC и т.д. Обычно заголовок занимает 96 бит (12 байт) на 64-битных платформах.
С JEP 450 в Java 24 появится экспериментальная опция сжать заголовки до 64 бит (8 байт). JEP 519 делает это стабильной, проверенной фичей, которую можно безопасно включать прямо в проде.
Зачем?
– Минус 22% памяти в SPECjbb2015
– Минус 8% CPU в среднем
– Минус 15% сборок мусора в G1 и Parallel GC
– +10% скорость парсинга JSON
Для распределённых систем, высоконагруженных сервисов и микросервисов — это простой способ сэкономить ресурсы без переписывания кода.
Как включить?
В Java 25 больше не понадобится флаг
Теперь достаточно:
Пруфы?
– Протестировано в проде на сотнях сервисов Amazon.
– Прогнано по полному тест-сьюту JDK в Oracle.
– Отдельные компании уже бэкпортят фичу на JDK 21 и 17.
Что важно знать?
– По умолчанию выключено.
– Не влияет на функциональность приложения.
– Может потребовать внимания в будущем, если другие фичи потребуют больше битов в заголовке (но для этого есть решения в рамках проектов Valhalla и Lilliput).
Обсудим в комментариях? 👇
Java 25 анонсирует ещё одну немаловажную фичу: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.
Что это такое?
У каждого объекта в Java есть заголовок — служебные данные, которые JVM использует для синхронизации, GC и т.д. Обычно заголовок занимает 96 бит (12 байт) на 64-битных платформах.
С JEP 450 в Java 24 появится экспериментальная опция сжать заголовки до 64 бит (8 байт). JEP 519 делает это стабильной, проверенной фичей, которую можно безопасно включать прямо в проде.
Зачем?
– Минус 22% памяти в SPECjbb2015
– Минус 8% CPU в среднем
– Минус 15% сборок мусора в G1 и Parallel GC
– +10% скорость парсинга JSON
Для распределённых систем, высоконагруженных сервисов и микросервисов — это простой способ сэкономить ресурсы без переписывания кода.
Как включить?
В Java 25 больше не понадобится флаг
-XX:+UnlockExperimentalVMOptions
Теперь достаточно:
java -XX:+UseCompactObjectHeaders ...
Пруфы?
– Протестировано в проде на сотнях сервисов Amazon.
– Прогнано по полному тест-сьюту JDK в Oracle.
– Отдельные компании уже бэкпортят фичу на JDK 21 и 17.
Что важно знать?
– По умолчанию выключено.
– Не влияет на функциональность приложения.
– Может потребовать внимания в будущем, если другие фичи потребуют больше битов в заголовке (но для этого есть решения в рамках проектов Valhalla и Lilliput).
Обсудим в комментариях? 👇
👍37🔥17❤11
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁47🔥11👍6
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– IntelliJ IDEA переходит на единый дистрибутив, Rich Errors в Kotlin | Spring АйО Подкаст №27
– Kotlin празднует день рождения!
– Spring Data JDBC и R2DBC 4.0 получат поддержку составных идентификаторов
– Spring АйО — это живое сообщество. Предложи новость!
– Structured Concurrency в Java: наконец-то находит опору
– JEP 519: Компактные заголовки объектов — теперь официально!
– OpenIDE: Один инструмент для многих языков. Демо (31 июля в 17:00 МСК)
– Amplicode: Connekt. Новый HTTP-клиент для IntelliJ IDEA — теперь Open Source
– JPoint: Константин Алексеев — Миграция с IBM WebSphere+Oracle JDK+Oracle DB на Libercat+Axiom JDK+PostgreSQL
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥6❤5
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥8❤5
Forwarded from OpenIDE
Друзья,
мы считаем важным, чтобы вокруг технологических инициатив сохранялась атмосфера уважения и конструктивного диалога.
Поэтому мы обратили внимание на недавнюю публикацию об инициативах компании JetBrains, которая не отражает официальную позицию OpenIDE.
Несмотря на текущие ограничения, мы высоко ценим инженерный вклад компании в развитие инструментов разработки, признаём значимость проектов JetBrains для профессионального сообщества и относимся к ним с уважением.
OpenIDE — это независимая инициатива, основанная на открытых исходных кодах. Её цель — предоставить российским разработчикам удобные и доступные инструменты, учитывая текущие реалии.
Материалы по инициативе (перевод)
Ваша команда OpenIDE
мы считаем важным, чтобы вокруг технологических инициатив сохранялась атмосфера уважения и конструктивного диалога.
Поэтому мы обратили внимание на недавнюю публикацию об инициативах компании JetBrains, которая не отражает официальную позицию OpenIDE.
Несмотря на текущие ограничения, мы высоко ценим инженерный вклад компании в развитие инструментов разработки, признаём значимость проектов JetBrains для профессионального сообщества и относимся к ним с уважением.
OpenIDE — это независимая инициатива, основанная на открытых исходных кодах. Её цель — предоставить российским разработчикам удобные и доступные инструменты, учитывая текущие реалии.
Материалы по инициативе (перевод)
Ваша команда OpenIDE
Хабр
IntelliJ IDEA переходит на единый дистрибутив
Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных...
❤29👍13🔥4👎2
🚀 Введение в Jimmer ORM
Совсем недавно статью про ORM-фреймворк Jimmer Михаила Поливахи, эксперта сообщества Spring АйО, опубликовал Baeldung.
Перед вами переработанная и дополненная версия, подготовленная специально для сообщества Spring АйО. В ней Михаил раскрывает ключевые особенности Jimmer: отсутствие JPA-наследия, декларативные DTO и гибкий DSL и потенциальную интеграцию со Spring.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/932096/
Совсем недавно статью про ORM-фреймворк Jimmer Михаила Поливахи, эксперта сообщества Spring АйО, опубликовал Baeldung.
Перед вами переработанная и дополненная версия, подготовленная специально для сообщества Spring АйО. В ней Михаил раскрывает ключевые особенности Jimmer: отсутствие JPA-наследия, декларативные DTO и гибкий DSL и потенциальную интеграцию со Spring.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/932096/
🔥19❤6👍6🤔4
📊 Java в 2025 году: взгляд на результаты опроса Stack Overflow
Эксперт Spring АйО Рустам Курамшин разобрал свежий отчёт Stack Overflow за 2025 год о результатах ежегодного опроса разработчиков за 2025 год, и это отличный повод взглянуть на экосистему Java через призму статистики и интересов сообщества.
Что происходит с Java и где мы сегодня?
🥈 Java — в топе, но не в лидерах
Java остаётся устойчиво популярной, но теряет позиции в рейтинге языков, которыми реально пользуются. В 2025 году она набрала 29.4% среди всех респондентов — это седьмое место. Для сравнения:
🛑 JavaScript — 66%
🛑 Python — 57.9%
🛑 TypeScript — 43.6%
Что интересно: C# проигрывает Java (27.8%), хотя отрыв минимальный. Kotlin находится далеко внизу с 10.8%.
👩💻 А как насчёт любви к Java?
В рейтинге «admired & desired» Java получила:
🛑 15.8% хотят продолжать работать с ней
🛑 41.8% тех, кто с ней работал, хотят продолжать
Это не худшие цифры, но явно не звёздные. Rust, например, вызывает желание продолжать у 72.4% разработчиков.
👩💻 Что по инструментам разработки?
Java-разработчики традиционно предпочитают инструменты JetBrains, и это подтверждается:
🛑 IntelliJ IDEA — на 4 месте по популярности (27.1%) и на втором по желанию использовать (17.5%)
🛑 VS Code по-прежнему вне конкуренции (используется 75.9%, желают 48.9%), но для серьёзной Java-разработки — не первый выбор
🛑 Gradle и Maven уверенно держатся в середине таблицы среди сборщиков и DevOps-инструментов, уступая npm, Docker и Terraform.
👩💻 Java на бэкенде
Среди web-фреймворков Spring Boot — единственный представитель Java в топе, с 14.7% популярности. Это чуть меньше, чем у FastAPI (14.8%), и сильно меньше Node.js (48.7%) и React (44.7%).
Однако в категории "admired" Spring Boot выглядит лучше — 53.7% разработчиков, использовавших его, хотят продолжать. Это говорит о стабильности интереса к Spring Framework.
👩💻 Базы данных: знакомые лица
Всё, что любят Java-разработчики, — на месте:
🛑 PostgreSQL — №1 по популярности и симпатиям
🛑 MySQL, MongoDB, Redis — всё ещё в активной эксплуатации
🛑 Даже H2 на удивление стабильно набирает 5%
⚙️ Выводы
Java остаётся мощной и зрелой экосистемой, но интерес разработчиков всё больше смещается в сторону Python и TypeScript — особенно в новых проектах и AI-направлениях.
Если мы хотим, чтобы Java оставалась актуальной, нужно:
🛑 Делать ставку на современный стек
🛑 Привлекать новых разработчиков через понятные и интересные точки входа вроде Spring Framework
📎 Полный отчёт: https://survey.stackoverflow.co/2025/technology/
Эксперт Spring АйО Рустам Курамшин разобрал свежий отчёт Stack Overflow за 2025 год о результатах ежегодного опроса разработчиков за 2025 год, и это отличный повод взглянуть на экосистему Java через призму статистики и интересов сообщества.
Что происходит с Java и где мы сегодня?
🥈 Java — в топе, но не в лидерах
Java остаётся устойчиво популярной, но теряет позиции в рейтинге языков, которыми реально пользуются. В 2025 году она набрала 29.4% среди всех респондентов — это седьмое место. Для сравнения:
Что интересно: C# проигрывает Java (27.8%), хотя отрыв минимальный. Kotlin находится далеко внизу с 10.8%.
В рейтинге «admired & desired» Java получила:
Это не худшие цифры, но явно не звёздные. Rust, например, вызывает желание продолжать у 72.4% разработчиков.
Java-разработчики традиционно предпочитают инструменты JetBrains, и это подтверждается:
Среди web-фреймворков Spring Boot — единственный представитель Java в топе, с 14.7% популярности. Это чуть меньше, чем у FastAPI (14.8%), и сильно меньше Node.js (48.7%) и React (44.7%).
Однако в категории "admired" Spring Boot выглядит лучше — 53.7% разработчиков, использовавших его, хотят продолжать. Это говорит о стабильности интереса к Spring Framework.
Всё, что любят Java-разработчики, — на месте:
⚙️ Выводы
Java остаётся мощной и зрелой экосистемой, но интерес разработчиков всё больше смещается в сторону Python и TypeScript — особенно в новых проектах и AI-направлениях.
Если мы хотим, чтобы Java оставалась актуальной, нужно:
📎 Полный отчёт: https://survey.stackoverflow.co/2025/technology/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍22🔥12⚡2🤔2
Напомним, что в программе мероприятия:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5🔥5👎1
Мероприятие откроют CEO и CTO OpenIDE — Фёдор и Илья Сазоновы — уже через пару минут. Они начнут с рассказа о том:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤4😁3⚡1👎1
Продолжат мероприятие Александр Шустанов, Михаил Поливаха и Павел Кислов с докладом "Техническая демонстрация: один инструмент для многих языков"!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤8🔥5😁2
Роман Елизаров и Павел Кислов проведут третий доклад "Не просто IDE: тренды в инструментах разработки и люди, которые их создают"!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤8🔥6😁1👌1
🎯 JEP 520: Метод-трейсинг и тайминг в JFR — замер времени конкретных методов без кода и агентов
В Java 25 JFR (Java Flight Recorder) позволит точно отслеживать выполнение конкретных методов — без изменения исходников, без логирования и без сторонних Java-агентов.
🧠 Зачем это нужно?
Допустим, приложение долго стартует или внезапно теряет соединения с БД. Раньше приходилось:
– Логировать вручную
– Добавлять JFR-события в код
– Подключать агент через
– Пытаться угадать с sampling-профайлером
– Использовать Spring AOP и
Теперь всё можно сделать проще: точно, из коробки и с минимальной настройкой.
⚙️ Что добавили?
Два новых события в JFR:
🛑
🛑
И самое главное: всё настраивается фильтрами, без изменений в коде!
🛠 Пример использования
Допустим, вы хотите посмотреть, как часто и как долго вызывается HashMap::resize.
🛑 Запуск:
🛑 Анализ:
🛑 Пример вывода:
Как ещё можно использовать?
🛑 Замерить все <clinit> и понять, что тормозит:
🛑 Отслеживать методы с аннотацией @Get из JAX-RS:
🛑 Сравнивать, сколько раз и с каким временем выполнялся метод:
Какой результат?
После запуска вы получаете .jfr-файл, который можно:
– Просмотреть через
– Подгрузить в JDK Mission Control
– Анализировать удалённо через JMX/RemoteRecordingStream
В чём польза?
🛑 Быстро находим горячие методы
🛑 Точно отслеживаем, что вызывает
🛑 Проверяем гипотезу, стал ли метод быстрее после оптимизации
🛑 Отлаживаем проблемы без доступа к коду сторонних библиотек
Вывод
Можно будет не модифицировать код, городить прокси или запускать
В Java 25 JFR (Java Flight Recorder) позволит точно отслеживать выполнение конкретных методов — без изменения исходников, без логирования и без сторонних Java-агентов.
🧠 Зачем это нужно?
Допустим, приложение долго стартует или внезапно теряет соединения с БД. Раньше приходилось:
– Логировать вручную
– Добавлять JFR-события в код
– Подключать агент через
-javaagent
– Пытаться угадать с sampling-профайлером
– Использовать Spring AOP и
@Around
-аспектыТеперь всё можно сделать проще: точно, из коробки и с минимальной настройкой.
⚙️ Что добавили?
Два новых события в JFR:
jdk.MethodTiming
— считает вызовы, замеряет среднее, мин/макс время выполненияjdk.MethodTrace
— пишет стек вызова и длительность каждого вызоваИ самое главное: всё настраивается фильтрами, без изменений в коде!
🛠 Пример использования
Допустим, вы хотите посмотреть, как часто и как долго вызывается HashMap::resize.
java -XX:StartFlightRecording=method-trace=java.util.HashMap::resize,filename=resize.jfr ...
jfr print --events jdk.MethodTrace resize.jfr
jdk.MethodTrace {
startTime = 00:39:26.379
duration = 0.00113 ms
method = java.util.HashMap.resize()
eventThread = "main"
stackTrace = [
java.util.HashMap.putVal(...)
java.util.HashMap.put(...)
...
java2d.J2Ddemo.main(String[]) line: 674
]
}
Как ещё можно использовать?
-XX:StartFlightRecording:method-timing=::<clinit>,filename=init.jfr
jcmd <pid> JFR.start method-timing=@jakarta.ws.rs.GET
<setting name="filter">
com.example.Foo::doSomething;
com.example.Bar::handle
</setting>
Какой результат?
После запуска вы получаете .jfr-файл, который можно:
– Просмотреть через
jfr print
или jfr view
– Подгрузить в JDK Mission Control
– Анализировать удалённо через JMX/RemoteRecordingStream
В чём польза?
FileDescriptor::close
Вывод
Можно будет не модифицировать код, городить прокси или запускать
-javaagent
. Достаточно задать нужный фильтр, чтобы точно знать, где и когда выполняется нужный метод.Please open Telegram to view this post
VIEW IN TELEGRAM
👍36🔥25❤6
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁26🔥13❤8👎2🤯2🤔1