Параллельные стримы и CompletableFuture: ошибки и решения
Кратко о ловушках параллелизации в Java (вложенные parallel, flatMap, потеря контекста в ForkJoinPool, OOM с CompletableFuture) и практических решениях: точечная параллелизация, разделение executors, семафоры, thenApply vs thenApplyAsync. Кейс Hugo Marques (JDK24).
Подробности: https://www.infoq.com/presentations/java-grpc-workload/
#en
@a_cup_of_java | Другие наши каналы
Кратко о ловушках параллелизации в Java (вложенные parallel, flatMap, потеря контекста в ForkJoinPool, OOM с CompletableFuture) и практических решениях: точечная параллелизация, разделение executors, семафоры, thenApply vs thenApplyAsync. Кейс Hugo Marques (JDK24).
Подробности: https://www.infoq.com/presentations/java-grpc-workload/
#en
@a_cup_of_java | Другие наши каналы
Как затащить AI в Java/Kotlin проект
Мир Enterprise-разработки на Java/Kotlin и мир нейронных сетей кажутся параллельными вселенными. С одной стороны - статическая типизация, многопоточность, Spring-контейнеры, а с другой - Python-скрипты, тензорные операции и эксперименты в Jupyter Notebook. Между ними - пропасть, через которую многие команды не решаются перешагнуть.
Однако необходимость строить этот мост возникает всё чаще. Заказчик хочет «искусственный интеллект» в новом фиче, аналитики мечтают о реализации чат-бота с преферансом и барышнями, а менеджеры слышали, что конкуренты уже всё автоматизировали. Как же совместить надежность и структуру JVM-проекта с гибкостью и мощью AI? В этой статье постараемся разобраться какие инструменты для этого есть на данный момент и как с ними работать.
Читать: https://habr.com/ru/articles/984544/?utm_campaign=984544
@a_cup_of_java | Другие наши каналы
Мир Enterprise-разработки на Java/Kotlin и мир нейронных сетей кажутся параллельными вселенными. С одной стороны - статическая типизация, многопоточность, Spring-контейнеры, а с другой - Python-скрипты, тензорные операции и эксперименты в Jupyter Notebook. Между ними - пропасть, через которую многие команды не решаются перешагнуть.
Однако необходимость строить этот мост возникает всё чаще. Заказчик хочет «искусственный интеллект» в новом фиче, аналитики мечтают о реализации чат-бота с преферансом и барышнями, а менеджеры слышали, что конкуренты уже всё автоматизировали. Как же совместить надежность и структуру JVM-проекта с гибкостью и мощью AI? В этой статье постараемся разобраться какие инструменты для этого есть на данный момент и как с ними работать.
Читать: https://habr.com/ru/articles/984544/?utm_campaign=984544
@a_cup_of_java | Другие наши каналы
❤1
От Redis к Kafka Streams: как мы проверяем сетевую доступность 200к устройств
В инфраструктуре банка мы ежедневно работаем с ~200 000 физических устройств: это IP-камеры, сетевые видеорегистраторы и другая периферия. Каждое из них должно быть проверено на доступность — не реже чем раз в 10 минут.
Требования к системе:
- не создавать бессмысленную нагрузку на инфраструктуру;
- решение должно быть горизонтально масштабируемым;
- система должна выдерживать падение pod, rebalance, сетевые сбои.
Читать: https://habr.com/ru/companies/sberbank/articles/974926/?utm_campaign=974926
@a_cup_of_java | Другие наши каналы
В инфраструктуре банка мы ежедневно работаем с ~200 000 физических устройств: это IP-камеры, сетевые видеорегистраторы и другая периферия. Каждое из них должно быть проверено на доступность — не реже чем раз в 10 минут.
Требования к системе:
- не создавать бессмысленную нагрузку на инфраструктуру;
- решение должно быть горизонтально масштабируемым;
- система должна выдерживать падение pod, rebalance, сетевые сбои.
Читать: https://habr.com/ru/companies/sberbank/articles/974926/?utm_campaign=974926
@a_cup_of_java | Другие наши каналы
Миграция проекта с Node.js на Java-стек с помощью ИИ
Один из наших проектов нужно было перенести на Kotlin, чтобы включить его в общую экосистему клиента и упростить поддержку. Мы должны были курировать процесс и следить за итоговой реализацией, в которой заказчик решил использовать ИИ.
В этой статье рассказываем о реальных возможностях нейронки для миграции бэкенда и про то, с чем лучше к ней не обращаться — чтобы не тратить ни время, ни нервы.
Читать: https://habr.com/ru/companies/dalee_group/articles/984702/?utm_campaign=984702
@a_cup_of_java | Другие наши каналы
Один из наших проектов нужно было перенести на Kotlin, чтобы включить его в общую экосистему клиента и упростить поддержку. Мы должны были курировать процесс и следить за итоговой реализацией, в которой заказчик решил использовать ИИ.
В этой статье рассказываем о реальных возможностях нейронки для миграции бэкенда и про то, с чем лучше к ней не обращаться — чтобы не тратить ни время, ни нервы.
Читать: https://habr.com/ru/companies/dalee_group/articles/984702/?utm_campaign=984702
@a_cup_of_java | Другие наши каналы
😐1
Kafka для начинающих: работа с Kafka транзакциями на практике — когда они нужны, а когда когда только вредят?
Как работать с Kafka транзакциями из Spring Boot? Когда они нужны, а когда бесполезны или даже вредны?
Простым языком и с примерами кода о Kafka транзакциях.
Читать: https://habr.com/ru/articles/981188/?utm_campaign=981188
@a_cup_of_java | Другие наши каналы
Как работать с Kafka транзакциями из Spring Boot? Когда они нужны, а когда бесполезны или даже вредны?
Простым языком и с примерами кода о Kafka транзакциях.
Читать: https://habr.com/ru/articles/981188/?utm_campaign=981188
@a_cup_of_java | Другие наши каналы
👍1
И снова про алгоритмы и структуры данных…
За годы разработки приходит понимание, что происходит в тех или иных сервисах, когда они тормозят, лагают, выдают «неожидаемое» поведение. В данной статье хочу рассмотреть проблему неправильного использования алгоритмов и архитектурных решений с бытовой, общечеловеческой стороны.
Читать: https://habr.com/ru/articles/984792/?utm_campaign=984792
@a_cup_of_java | Другие наши каналы
За годы разработки приходит понимание, что происходит в тех или иных сервисах, когда они тормозят, лагают, выдают «неожидаемое» поведение. В данной статье хочу рассмотреть проблему неправильного использования алгоритмов и архитектурных решений с бытовой, общечеловеческой стороны.
Читать: https://habr.com/ru/articles/984792/?utm_campaign=984792
@a_cup_of_java | Другие наши каналы
Реализация гексагональной архитектуры на Java
В данной статье рассматривается архитектура проекта, позволяющая модульным образом интегрировать инфраструктурные фреймворки, такие как Spring, Quarkus и Micronaut, без необходимости модификации ядра предметной области (domain) или внешних API.
Читать: https://habr.com/ru/articles/985156/?utm_campaign=985156
@a_cup_of_java | Другие наши каналы
В данной статье рассматривается архитектура проекта, позволяющая модульным образом интегрировать инфраструктурные фреймворки, такие как Spring, Quarkus и Micronaut, без необходимости модификации ядра предметной области (domain) или внешних API.
Читать: https://habr.com/ru/articles/985156/?utm_campaign=985156
@a_cup_of_java | Другие наши каналы
Project Panama: как Java научилась говорить на C! (Часть 1)
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
❤1👌1
Project Panama: как Java научилась говорить на C! (Часть 1)
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI.
В новом переводе от команды Spring АйО познакомимся с основами FFM API, посмотрим на запуск Hello World на C, роль jextract, и на то, как управлять памятью вне кучи JVM.
Читать: https://habr.com/ru/companies/spring_aio/articles/985144/?utm_campaign=985144
@a_cup_of_java | Другие наши каналы
🐳2
Осознанная стоимость абстракций: Autoboxing в современной Java
Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices.
Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии.
В этих условиях привычные абстракции требуют переоценки.
Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки.
Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap.
Погрузиться
Читать: https://habr.com/ru/articles/985620/?utm_campaign=985620
@a_cup_of_java | Другие наши каналы
Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices.
Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии.
В этих условиях привычные абстракции требуют переоценки.
Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки.
Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap.
Погрузиться
Читать: https://habr.com/ru/articles/985620/?utm_campaign=985620
@a_cup_of_java | Другие наши каналы
🔥1
Как снизить хвостовые задержки в Java с помощью ZGC
Хвостовые задержки в Java часто упираются не в «среднее время ответа», а в редкие, но болезненные выбросы на p999. В статье сравним G1 и ZGC на прикладном бенчмарке микросервиса (Quarkus + Postgres) и на синтетической нагрузке с высокой скоростью аллокаций: где ZGC действительно срезает хвосты почти без пауз — и в каких условиях, упираясь в CPU, он начинает «тормозить» через приостановки аллокаций.
Читать разбор
Читать: https://habr.com/ru/companies/otus/articles/986604/?utm_campaign=986604
@a_cup_of_java | Другие наши каналы
Хвостовые задержки в Java часто упираются не в «среднее время ответа», а в редкие, но болезненные выбросы на p999. В статье сравним G1 и ZGC на прикладном бенчмарке микросервиса (Quarkus + Postgres) и на синтетической нагрузке с высокой скоростью аллокаций: где ZGC действительно срезает хвосты почти без пауз — и в каких условиях, упираясь в CPU, он начинает «тормозить» через приостановки аллокаций.
Читать разбор
Читать: https://habr.com/ru/companies/otus/articles/986604/?utm_campaign=986604
@a_cup_of_java | Другие наши каналы
🔥1
Внедряем Testcontainers за два дня или как перестать бояться рефакторинга и начать доверять своим тестам
Надоело, когда после сотни зеленых unit-тестов приложение падает на тестовом стенде? Когда рефакторинг превращается в кошмар из-за необходимости переписывать полсотни тестовых классов? Мне тоже надоело и я нашел решение. В статье покажу, как за два-три рабочих дня внедрить Testcontainers и начать писать тесты, которые действительно работают. В докладе вы найдете production-ready решение с PostgreSQL, Kafka и WireMock, которое выявит реальные проблемы еще до деплоя, честное тестирование реального поведения приложения.
Читать: https://habr.com/ru/articles/986870/?utm_campaign=986870
@a_cup_of_java | Другие наши каналы
Надоело, когда после сотни зеленых unit-тестов приложение падает на тестовом стенде? Когда рефакторинг превращается в кошмар из-за необходимости переписывать полсотни тестовых классов? Мне тоже надоело и я нашел решение. В статье покажу, как за два-три рабочих дня внедрить Testcontainers и начать писать тесты, которые действительно работают. В докладе вы найдете production-ready решение с PostgreSQL, Kafka и WireMock, которое выявит реальные проблемы еще до деплоя, честное тестирование реального поведения приложения.
Читать: https://habr.com/ru/articles/986870/?utm_campaign=986870
@a_cup_of_java | Другие наши каналы
❤2🔥1
JVM ещё жива, но уже бесполезна: как Netflix научился убивать её по GC
Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма.
Подробности - в новом переводе от команды Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/987116/?utm_campaign=987116
@a_cup_of_java | Другие наши каналы
Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма.
Подробности - в новом переводе от команды Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/987116/?utm_campaign=987116
@a_cup_of_java | Другие наши каналы
🔥1
Soft-, Weak-, Final- и PhantomReference в Java
В статье представлены сведения о классах пакета java.lang.ref - SoftReference, WeakReference, PhantomReference и др. Описываются приёмы их применения.
Читать: https://habr.com/ru/articles/987362/?utm_campaign=987362
@a_cup_of_java | Другие наши каналы
В статье представлены сведения о классах пакета java.lang.ref - SoftReference, WeakReference, PhantomReference и др. Описываются приёмы их применения.
Читать: https://habr.com/ru/articles/987362/?utm_campaign=987362
@a_cup_of_java | Другие наши каналы
Observability-as-Code в Spring Boot: Контракты и тесты для метрик, логов и трейсов
Observability-as-Code - это подход, при котором базовые элементы наблюдаемости (метрики, логи, трассировки) описываются и проверяются так же строго, как и код самого приложения. Эта информация хранится в VCS и к ней выдвигаются такие же требования, как “остальному коду”. Инженеры явно описывают "контракт" наблюдаемости (какие метрики и логи должна выдавать система, с какими свойствами), снабжают этот контракт автоматическими тестами и включают проверки в процесс CI/CD.
В данной публикации мы подробно разберем, почему такой подход эффективен, и как его реализовать в Spring Boot с использованием Micrometer, OpenTelemetry и инструментов вроде ArchUnit.
Читать: https://habr.com/ru/companies/spring_aio/articles/987358/?utm_campaign=987358
@a_cup_of_java | Другие наши каналы
Observability-as-Code - это подход, при котором базовые элементы наблюдаемости (метрики, логи, трассировки) описываются и проверяются так же строго, как и код самого приложения. Эта информация хранится в VCS и к ней выдвигаются такие же требования, как “остальному коду”. Инженеры явно описывают "контракт" наблюдаемости (какие метрики и логи должна выдавать система, с какими свойствами), снабжают этот контракт автоматическими тестами и включают проверки в процесс CI/CD.
В данной публикации мы подробно разберем, почему такой подход эффективен, и как его реализовать в Spring Boot с использованием Micrometer, OpenTelemetry и инструментов вроде ArchUnit.
Читать: https://habr.com/ru/companies/spring_aio/articles/987358/?utm_campaign=987358
@a_cup_of_java | Другие наши каналы
❤1
Почему Kotlin ломает JPA
Используешь Kotlin с Jakarta Persistence и думаешь, что всё работает? Возможно, до первой неожиданной ошибки. data class, val, final-классы и даже значения по умолчанию — всё это может тайно мешать корректной работе JPA. Вместе с Торбеном Янссеном в новом переводе от команды Spring АйО разберем скрытые ловушки и показывают, как настроить проект правильно, чтобы не наступить на мину.
Читать: https://habr.com/ru/companies/spring_aio/articles/987890/?utm_campaign=987890
@a_cup_of_java | Другие наши каналы
Используешь Kotlin с Jakarta Persistence и думаешь, что всё работает? Возможно, до первой неожиданной ошибки. data class, val, final-классы и даже значения по умолчанию — всё это может тайно мешать корректной работе JPA. Вместе с Торбеном Янссеном в новом переводе от команды Spring АйО разберем скрытые ловушки и показывают, как настроить проект правильно, чтобы не наступить на мину.
Читать: https://habr.com/ru/companies/spring_aio/articles/987890/?utm_campaign=987890
@a_cup_of_java | Другие наши каналы
Как мы перевели сервисы Java с виртуальных машин в Kubernetes
Статья: «Как мы перевели сервисы Java с виртуальных машин в Kubernetes»
В этой статье я разберу наш путь от VM к Kubernetes: какие задачи решали, как настраивали пайплайны, с какими сложностями столкнулись и какие плюсы в итоге получили.
Читать: https://habr.com/ru/companies/alfastrah/articles/988306/?utm_campaign=988306
@a_cup_of_java | Другие наши каналы
Статья: «Как мы перевели сервисы Java с виртуальных машин в Kubernetes»
В этой статье я разберу наш путь от VM к Kubernetes: какие задачи решали, как настраивали пайплайны, с какими сложностями столкнулись и какие плюсы в итоге получили.
Читать: https://habr.com/ru/companies/alfastrah/articles/988306/?utm_campaign=988306
@a_cup_of_java | Другие наши каналы
11 топовых библиотек и фреймворков для Java в 2025 году
Топ библиотек и фреймворков Java 2025: Spring Boot, Hibernate, JUnit, Micronaut, Quarkus. Практические советы от Senior и Lead разработчиков.
Читать: «11 топовых библиотек и фреймворков для Java в 2025 году»
@a_cup_of_java | Другие наши каналы
Топ библиотек и фреймворков Java 2025: Spring Boot, Hibernate, JUnit, Micronaut, Quarkus. Практические советы от Senior и Lead разработчиков.
Читать: «11 топовых библиотек и фреймворков для Java в 2025 году»
@a_cup_of_java | Другие наши каналы
Как изменить код работающего Java-приложения? Пишем свой HotSwap
Практический разбор создания Java-агента для модификации байт-кода на лету. Как использовать Attach API, Instrumentation и Byte Buddy, чтобы изменить поведение работающего приложения. Подробно о реализации и ошибках.
Читать: «Как изменить код работающего Java-приложения? Пишем свой HotSwap»
@a_cup_of_java | Другие наши каналы
Практический разбор создания Java-агента для модификации байт-кода на лету. Как использовать Attach API, Instrumentation и Byte Buddy, чтобы изменить поведение работающего приложения. Подробно о реализации и ошибках.
Читать: «Как изменить код работающего Java-приложения? Пишем свой HotSwap»
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО
Инженер создал Stacktower — интерактивную версию культового XKCD-комикса, показывающую, как одна зависимость может «обрушить» все приложение
Читать: «Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО»
@a_cup_of_java | Другие наши каналы
Инженер создал Stacktower — интерактивную версию культового XKCD-комикса, показывающую, как одна зависимость может «обрушить» все приложение
Читать: «Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО»
@a_cup_of_java | Другие наши каналы
❤3