17202
Самая актуальная информация из мира Java По всем вопросам- @haarrp @itchannels_telegram - 🔥лучшие ит-каналы @pythonl - 🐍 @ai_machinelearning_big_data- ml @ArtificialIntelligencedl - AI @datascienceiot - ds @pythonlbooks 📚 РКН: clck.ru/3FmwKr
Хватит склеивать строки через плюс: как в Java собирать сообщения читаемо
Когда в строку нужно подставить несколько значений, конкатенация быстро превращается в кашу из кавычек и пробелов, где легко потерять пробел или перепутать порядок.
String name = "Ada";
int score = 98;
// трудно читать, когда полей становится больше
String msg = "Player " + name + " scored " + score + " points";
// шаблон отдельно, значения отдельно
String msg2 = String.format("Player %s scored %d points", name, score);
// то же самое короче, Java 15+
String msg3 = "Player %s scored %d points".formatted(name, score);
// для локализации
String i18n = MessageFormat.format("Player {0} scored {1} points", name, score);
🍃 Не раскладывайте весь Spring-проект по папкам controller, service и repository.
В новом This Week in Spring Джош Лонг советует группировать код по функциональности, используя подход Spring Modulith. Например, orders, payments, users, внутри которых находятся относящиеся к ним слои.
Ещё в подборке:
• JobRunr 9: поиск упавшего шага и задач, вызывающих замедление, остановка выполнения без потери работы.
• Spring AI: разбор агентных паттернов и вызова инструментов от руководителя проекта Кристиана Цолова.
• Progen CLI: видео о генерации каркаса приложения.
• IntelliJ IDEA: обзор новых возможностей.
• A Bootiful Podcast: разговор с создателем Jenkins Косуке Кавагути.
https://spring.io/blog/2026/10/13/this-week-in-spring-october-13th-2026
#Java #SpringBoot
💡 Описывайте состояния через enum вместо строк
Статусы вроде "pending" и "finished" легко сломать опечаткой. Enum задаёт явный набор состояний и делает код понятнее.
✅ Именованные значения вместо «магических» строк.
✅ Правила допустимых переходов рядом с описанием состояний.
✅ В языках с проверкой полноты switch компилятор подскажет, если вы забыли обработать состояние.
Но enum сам по себе не запрещает неверные переходы. Правило «отменённый заказ нельзя отправить» нужно реализовать отдельно.
💡 Java: почему месяц `5` может оказаться июнем
В Calendar месяцы нумеруются с нуля: январь 0, май 4, июнь 5. Простая ловушка, которая легко превращается в баг.
Начиная с Java 8, для нового кода выбирайте java.time:
LocalDate date = LocalDate.of(2026, 5, 31);
LocalDate deadline = date.plusDays(7);
String text = deadline.format(
DateTimeFormatter.ISO_LOCAL_DATE
);
// 2026-06-07
5 означает май, а plusDays() возвращает новый объект, сохраняя исходную дату. Основные типы java.time неизменяемы и безопасны для совместного использования потоками.Instant или задавайте пояс явно.
Читать полностью…
💡 Предпочитайте делегирование наследованию
Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше кода.
Но есть цена.
✅ Подкласс получает весь API родителя.
✅ Он зависит от деталей реализации суперкласса.
✅ Изменение родительского класса может неожиданно сломать потомка.
И чем глубже иерархия, тем сложнее понять, откуда вообще взялось конкретное поведение.
Часто безопаснее композиция:
class OrderService {
private final PaymentService paymentService;
}
class OrderService extends PaymentService {
}
⚡️ Spring Boot 4 убрал статус WILL_EXPIRE_SOON: проверьте мониторинг сертификатов
В Spring Boot 3 SSL-компонент health endpoint переходил в особый статус WILL_EXPIRE_SOON, если сертификат скоро истекал. Для проб Kubernetes и балансировщиков это было неудобно: непонятно, считать сервис живым или нет.
В Spring Boot 4 этот статус убрали. Health остаётся UP, а цепочки сертификатов, срок которых скоро закончится, перечисляются в details.expiringChains. Порог предупреждения задаётся свойством management.health.ssl.certificate-validity-warning-threshold:
management:
health:
ssl:
certificate-validity-warning-threshold: 14d
endpoint:
health:
show-details: always
/actuator/health тогда выглядит так:
{
"status": "UP",
"details": {
"expiringChains": ["server-cert…"]
}
}
show-details, иначе деталей в ответе не будет.
Читать полностью…
⚡️Продвинутый Java-совет: используйте `ClassValue`
Если нужно кешировать метаданные отдельно для каждого класса, не обязательно создавать ConcurrentHashMap<Class<?>, Metadata>.
private static final ClassValue<Metadata> CACHE =
new ClassValue<>() {
@Override
protected Metadata computeValue(Class<?> type) {
return scan(type);
}
};
Metadata metadata = CACHE.get(MyClass.class);
ClassValue лениво вычисляет значение, безопасно работает при конкуренции потоков и хранит отдельный результат для каждого Class. Сбросить кеш можно через remove().
Spring Boot 4: как перенести старые настройки
При обновлении добавьте временную зависимость:
runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")
application.properties или application.yaml, убедитесь, что предупреждения исчезли, и удалите зависимость. Оставлять её в проекте постоянно не нужно.
runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")
application.properties или application.yaml, убедитесь, что предупреждения исчезли, и удалите зависимость. Оставлять её в проекте постоянно не нужно.
🚀 Anthropic представила Claude Opus 5.5
Новая флагманская модель стала сильнее Opus 5, при этом работает быстрее и дешевле.
Что изменилось:
- сильнее в агентном программировании, computer use и knowledge work
- лучше справляется с длинными задачами и большими кодовыми базами
- ответы стали короче и естественнее
- улучшена устойчивость к prompt injection
- Anthropic заявляет примерно на 40% более низкую стоимость на типичных задачах и более чем на 30% более быструю генерацию
Из примеров:
- один из ранних тестеров провёл миграцию 680 000 строк кода менее чем за день
- в тесте Anthropic модель переписала HAProxy с C на Rust за 9,5 часа
Цена API:
- $4 / 1M входных токенов
- $20 / 1M выходных токенов
- $0,20 / 1M токенов при чтении кеша
Бенчмарки:
- Terminal-Bench 4.0 — 66,4%
- FrontierCode v1.1 — 54,4%
- Humanity’s Last Exam — 67,7% с инструментами
Также Anthropic подтвердила, что Claude Sonnet 5.5 и Haiku 5.5 выйдут в ближайшие недели.
https://www.anthropic.com/claude-opus-5-5
🚀 JetBrains обновила roadmap Kotlin: главный фокус - Multiplatform, Wasm и удобство разработки
Что сейчас в приоритете:
- довести Kotlin/Wasm до Stable
- ускорить KAPT до уровня Java APT
- улучшить incremental compilation в K2
- сделать новый JVM reflection
- перевести wasm-wasi на WASI Preview 2 и добавить Component Model
- продвинуть Swift Export из Alpha в Beta
- улучшить Xcode integration и Kotlin/Native debugger
- добавить импорт Swift Package Manager пакетов
- развивать Kotlin LSP и поддержку VS Code
- выпустить единый Kotlin Toolchain
- добавить first-class поддержку JPA/Hibernate для Kotlin stdlib types
- стабилизировать kotlinx.serialization, kotlinx.collections.immutable и kotlinx-io
- выпустить Kotlin DataFrame 1.0
- добавить HTTP/3 и gRPC в Ktor
Из уже завершённого: Swift 6.3 support, multi-module compilation для Kotlin/Wasm, Navigation3 для Compose Multiplatform и 18-месячное окно security fixes для stdlib.
Главное направление видно очень чётко: Kotlin всё сильнее двигается в сторону полноценной кроссплатформенной экосистемы — JVM, iOS, WebAssembly и web.
Следующее обновление roadmap запланировано на февраль 2027.
https://kotlinlang.org/docs/roadmap.html
🚀 Spring Boot 4 получил отдельный starter для RestClient
Теперь imperative HTTP-клиент можно подключать через:spring-boot-starter-restclient
Для реактивного WebClient используется:spring-boot-starter-webclient
А настройки HTTP-клиентов собраны под единым префиксом:spring.http.clients.*
То есть конфигурация стала понятнее, а выбор между imperative и reactive подходом — более явным.
#SpringBoot4 #RestClient #Java
🚀 Spring Boot 4 получил полноценную поддержку Kotlin Serialization
Теперь для kotlinx.serialization есть отдельный starter:spring-boot-starter-kotlinx-serialization-json
Что он делает:
- автоматически создаёт Json bean
- регистрирует HTTP message converter
- позволяет настраивать сериализацию через spring.kotlinx.serialization.json.*
- работает с привычными @Serializable data class
Пример настройки:pretty-print: trueignore-unknown-keys: true
Для Kotlin-проектов на Spring Boot это убирает лишнюю ручную конфигурацию и делает kotlinx.serialization полноценной альтернативой Jackson.
#SpringBoot4 #Kotlin
☕ Java добралась до GPU Tensor Cores почти без потери производительности
В Project Babylon показали, как один и тот же Java Tensor API можно запускать на разных GPU через HAT — без переписывания логики под каждого производителя.
На NVIDIA A10:
- обычный matrix multiply: около 240 GFLOP/s
- через Tensor Cores: до 7,3 TFLOP/s
- производительность приблизилась к native CUDA/WMMA
На Apple M4 Max тот же Java-код запускается через OpenCL 1.2, а после настройки tile size и параметров запуска получил до 8× ускорения относительно наивной реализации.
Под капотом:
- Project Babylon даёт code reflection
- HAT преобразует Java-код под GPU backend
- Tensor API абстрагирует MMA-операции
- NVIDIA получает аппаратные Tensor Cores, а другие платформы — эквивалентное tiled-исполнение
Интересный шаг к тому, чтобы писать высокопроизводительные GPU-вычисления на Java и сохранять переносимость между разным железом.
https://social.ora.cl/6011BEbmLc
Команды ждут тебя на треке программирование роботов на МТС True Tech Champ 2026 — всероссийском чемпионате по программированию с двумя треками и призовым фондом 10 250 000 рублей.
Успей зарегистрироваться до 13 сентября.
В треке программирования роботов тебе предстоит запрограммировать робособаку для доставки груза через полосу препятствий сначала в онлайн-симуляторе, а затем на офлайн-полигоне в финале 22 октября. Рекомендуемые стеки: Go, Java, Python, C#, C++, JS.
Участие в командах 2-5 человек. Если у тебя нет своей команды, кураторы помогут объединиться с другими участниками на платформе.
Масштабный финал объединит борьбу за призовой фонд 10 250 000 рублей, выступления хедлайнеров, доклады спикеров и активности для всех гостей мероприятия.
Успей зарегистрироваться и пройти квалификацию до 13 сентября.
erid:2VSb5xPaMKx
💡 Java: переопределяешь `equals()` - переопредели и `hashCode()`
Два объекта с одинаковым email могут быть равны по equals(), но HashSet.contains() при этом вернёт false.
Причина: HashSet и HashMap сначала используют хеш, чтобы определить, где искать объект, а затем проверяют равенство. Если хеши различаются, до equals() дело может не дойти.
Правило: равные объекты обязаны иметь одинаковый `hashCode()`. При этом одинаковый хеш не гарантирует равенство - коллизии допустимы.
В примере на картинке равенство определяется по email, поэтому хеш тоже вычисляется по нему.
И ещё: не меняйте поля, участвующие в `equals()` и `hashCode()`, пока объект хранится в `HashSet` или используется как ключ `HashMap` - поиск может перестать его находить.
#Java #OOP
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: /channel/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/java_library
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: /channel/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
💡 100% покрытия тестами ≠ код без багов
Coverage показывает, какие строки выполнились во время тестов. Но не доказывает, что результат правильный.
Можно пройти каждую строку и пропустить ошибку в логике, граничный случай или сбой при неожиданном вводе.
✅ Проверяйте результат, а не только выполнение.
✅ Тестируйте рискованные сценарии и обработку ошибок.
✅ Используйте покрытие, чтобы искать пробелы в тестах.
Тест, который ловит реальный баг, ценнее красивой цифры в отчёте.
💡 Код работает на обычных данных? Проверьте, что происходит на границах.
Баги часто прячутся там, где данных нет, их слишком мало или значение выходит за допустимый диапазон.
✅ `null`: метод корректно обрабатывает отсутствие значения или неожиданно падает с NullPointerException?
✅ Пустая коллекция: что вернёт код, если обрабатывать нечего?
✅ Один элемент: работает ли логика без второго элемента и соседних значений?
✅ Границы: проверьте минимум, максимум и значения сразу за ними. Например, для диапазона 1–100: 0, 1, 100, 101.
Такие тесты ещё и документируют контракт: какие входные данные допустимы, что возвращается и когда ожидается исключение.
Проверяйте не только «всё прошло успешно», но и «что будет, если…».
🚀 Spring Boot 4: переименовали property для exception translation
Было:spring.dao.exceptiontranslation.enabled
Стало:spring.persistence.exceptiontranslation.enabled
Функциональность та же: Spring продолжает переводить persistence-исключения в DataAccessException для @Repository.
Чтобы не пропустить такие изменения при миграции на Boot 4, подключите Spring Boot Properties Migrator — он покажет устаревшие и переименованные настройки.
Мелочь, которая легко ломает конфиг после обновления.
🧠 Spring AI показал, как сделать RAG заметно умнее обычного vector search.
Проблема классического RAG: похожий документ ещё не значит полезный.
Новый пайплайн делает так:Question → Rewrite → MultiQuery → Vector Search → Jev Filter → Rerank → LLM
Jev проверяет каждый найденный chunk: есть ли там реальный ответ, противоречие или prompt injection.
В демо vector search нашёл 6 фрагментов, но до модели дошли только 2 действительно полезных.
Меньше мусора в контексте → точнее ответы и меньше шансов на prompt injection.
Код и разбор:
https://spring.io/blog/2026/10/02/spring-ai-modular-rag-typesafe-jev/
💡 Java: не создавайте тяжёлые объекты раньше времени
Если объект дорогой в создании, но нужен только в редких сценариях, eager initialization может зря тратить время и память.
Вместо этого используйте lazy initialization:
private HeavyAnalyzer analyzer;
private HeavyAnalyzer analyzer() {
if (analyzer == null) {
analyzer = new HeavyAnalyzer();
}
return analyzer;
}
Kotlin 2.5.0-Beta1 вышел
JetBrains выпустила первую бета-версию Kotlin 2.5.0.
Главное:
- Language: стабильная name-based destructuring в only-syntax режиме, плюс экспериментальные companion extensions и blocks.
- Standard Library: новые экспериментальные функции для упрощения типичных конструкций с if.
- Kotlin/JS: добавлена поддержка target ES2020.
- Compiler: более предсказуемое поведение inline-функций при компиляции .klib.
Пока это Beta, но релиз уже показывает, в какую сторону движется Kotlin 2.5: меньше синтаксического шума, современнее JS-таргеты и более стабильное поведение компилятора.
https://kotl.in/2-5-0-beta1
⚡️⚡️Joker 2026: что происходит с профессией разработчика
Индустрия разработки проходит через серьезный переломный момент. Меняются не только инструменты и фреймворки, но и привычный подход к работе.
Поэтому в этом сезоне меняется и Joker: первый день традиционно посвящен Java — Core Java, рантайму и работе на уровне железа. А во второй день будем обсуждать, как прямо сейчас меняется сама инженерная практика.
В программе — Context Engineering, команды из людей и ИИ-агентов, Self-Evolving Agents, новые подходы к архитектуре и работе с моделями, а также вопросы ответственности и роли эксперта.
Собрали главные темы второго дня в карточках.
🌟С промокодом: javatg1 персональные билеты дешевле
Полное расписание и билеты — на сайте.
Как дать ИИ-агенту доступ к корпоративным данным и ничего не сломать
6 октября в 17:00 мск в Архитектурном клубе Яндекс 360 разберут, как устроены агенты, которые работают с внутренними документами, поиском и сервисами компании.
На встрече Архитектурного клуба Даниил Смирнов, руководитель службы бэкенд-разработки Антиспама Яндекс 360, покажет весь контур системы: оркестратор, инструменты, память, EVAL и наблюдаемость.
Помимо обзора архитектуры на встрече разберут:
- как агент наследует права доступа исходных систем;
- как изолировать данные пользователей и организаций;
- как не допустить утечек через поисковый индекс и кеш;
- как контролировать автономные действия;
- как оценивать поиск, выбор инструментов и итоговые ответы по отдельности.
📅 6 октября, 17:00 мск
💻 Онлайн, бесплатно
→ [Зарегистрироваться]
Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском
Kafka обучение без воды: каждый модуль состоит из понятной теории, схем, команд, которые можно запустить у себя, типичных ошибок и вопросов для самопроверки. Курс подходит, чтобы выучить Kafka с нуля, подготовиться к собеседованию на backend, data engineer или DevOps-позицию и спроектировать надёжную систему на Kafka в продакшене.
https://github.com/justxor/KAFKAFREECOURSR
💡 Java: Checked vs Unchecked Exceptions, коротко и по делу
В Java исключения делятся на две основные категории:
- Checked - например, IOException. Компилятор заставит либо обработать исключение через try/catch, либо указать throws.
- Unchecked — наследники RuntimeException. Обязательной обработки на этапе компиляции нет.
Пример:IOException → checked NullPointerException → unchecked IllegalArgumentException → unchecked
Практическое правило: checked exceptions имеет смысл использовать для ситуаций, из которых вызывающий код действительно может восстановиться.
#Java #ErrorHandling
🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку
Можно годами смотреть курсы, читать документацию и всё равно топтаться на месте.
А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом.
Я собрал папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: /channel/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: /channel/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подпишись и сохрани, здесь регулярно появляются новые подборки, инструменты и материалы, которые реально помогают расти быстрее.
Java: рефакторинг legacy-кода начинай с теста
Даже странное поведение старого метода может быть важно для вызывающего кода. Прежде чем «сделать красиво», зафиксируй, как он работает сейчас.
* Добавь тест на текущее поведение. Проверь обычный сценарий и важные граничные случаи.
* Меняй по одному шагу: переименуй переменную, выдели метод, упрости условие.
* После каждого изменения запускай тесты. Если что-то сломалось, причину проще найти в небольшом изменении.
* Исправления багов отделяй от рефакторинга. Изменение поведения лучше делать отдельным шагом с отдельным тестом.
Переписывание целого класса без покрытия усложняет проверку: код выглядит лучше, но сохранил ли он прежнее поведение?
🍃 Spring Boot 4: проверьте зависимости Flyway и Liquibase
После обновления одной зависимости flyway-core или liquibase-core недостаточно для автоконфигурации миграций. В Spring Boot 4 поддержку технологий вынесли в отдельные модули.
Используйте соответствующий стартер:
* Flyway → spring-boot-starter-flyway
* Liquibase → spring-boot-starter-liquibase
Для тестов, включая test slices:
* spring-boot-starter-flyway-test
* spring-boot-starter-liquibase-test
Все перечисленные зависимости относятся к группе org.springframework.boot. Тестовые стартеры добавляются с областью test в Maven или через testImplementation в Gradle.
Руководство по миграции: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide#module-dependencies
#SpringBoot #Java #Flyway
🚀 Apache Kafka - это распределённая платформа для передачи и хранения потоков событий в реальном времени.
Проще: сервисы не общаются напрямую друг с другом, а отправляют события в Kafka, а другие сервисы читают их когда нужно.
В 2026 Kafka используют для:
• связи микросервисов
• логов и событий
• real-time аналитики
• CDC из баз данных
•• обработки больших потоков данных
построения event-driven архитектуры
Главная причина популярности: высокая пропускная способность, масштабирование и возможность надёжно хранить события и перечитывать их позже.
https://www.youtube.com/shorts/Z-t8CCs7ty4