Как читать сообщения, если никто из брокеров не предоставил удобный интерфейс
Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?
Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.
Так давайте же посмотрим, как мы можем открыть этот чёрный ящик на примере наиболее популярных брокеров сообщений.
Читать: https://habr.com/ru/companies/axenix/articles/886042/?utm_campaign=886042
@a_cup_of_java | Другие наши каналы
Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?
Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.
Так давайте же посмотрим, как мы можем открыть этот чёрный ящик на примере наиболее популярных брокеров сообщений.
Читать: https://habr.com/ru/companies/axenix/articles/886042/?utm_campaign=886042
@a_cup_of_java | Другие наши каналы
Project Leyden Ships Third Option for Faster Application Start with JEP 483 in Java 24
In Java 24, Project Leyden’s JEP 483, "Ahead-of-Time Class Loading & Linking", starts Java applications like Spring PetClinic up to 40% faster without code changes or new application constraints. It needs a training run to build a cache file that ships with the application. With GraalVM Native Image and CRaC, the startup is 95-99% faster but faces more constraints. Leyden plans more improvements.
By Karsten Silz
Read: https://www.infoq.com/news/2025/03/java-24-leyden-ships/
@a_cup_of_java | Другие наши каналы
In Java 24, Project Leyden’s JEP 483, "Ahead-of-Time Class Loading & Linking", starts Java applications like Spring PetClinic up to 40% faster without code changes or new application constraints. It needs a training run to build a cache file that ships with the application. With GraalVM Native Image and CRaC, the startup is 95-99% faster but faces more constraints. Leyden plans more improvements.
By Karsten Silz
Read: https://www.infoq.com/news/2025/03/java-24-leyden-ships/
@a_cup_of_java | Другие наши каналы
Автоматизация деплоя: из Bitbucket через Jenkins в MicroK8s — опыт финтех-разработчика
Всем привет! Я — Java-разработчик с пятилетним опытом в финтехе, и сегодня я расскажу, как настроить CI/CD для деплоя Spring Boot приложения из Bitbucket через Jenkins в MicroK8s. Это не просто теория — я поделюсь реальным кейсом, разберу ошибки, с которыми столкнулся, и дам рабочий код. Если вы хотите автоматизировать деплой и не наступать на грабли — поехали!
Представьте: у вас есть микросервис на Spring Boot, который нужно быстро и без ошибок доставить в продакшен. Ручной деплой отнимает время, а команда требует стабильности. Я решил эту задачу с помощью Bitbucket, Jenkins и MicroK8s, но путь оказался не таким гладким, как хотелось бы. Проблемы с аутентификацией, конфликты портов и настройка окружения заставили меня попотеть. Как я справился? Об этом — в статье.
CI/CD (Continuous Integration/Continuous Deployment) — это must-have для современных разработчиков. Автоматизация сборки, тестирования и деплоя приложений экономит время, снижает вероятность ошибок и ускоряет доставку кода до продакшена. В этой статье мы разберем, как настроить полноценный CI/CD-пайплайн для Spring Boot приложения, используя связку Bitbucket, Jenkins и MicroK8s.
Читать: https://habr.com/ru/articles/891844/?utm_campaign=891844
@a_cup_of_java | Другие наши каналы
Всем привет! Я — Java-разработчик с пятилетним опытом в финтехе, и сегодня я расскажу, как настроить CI/CD для деплоя Spring Boot приложения из Bitbucket через Jenkins в MicroK8s. Это не просто теория — я поделюсь реальным кейсом, разберу ошибки, с которыми столкнулся, и дам рабочий код. Если вы хотите автоматизировать деплой и не наступать на грабли — поехали!
Представьте: у вас есть микросервис на Spring Boot, который нужно быстро и без ошибок доставить в продакшен. Ручной деплой отнимает время, а команда требует стабильности. Я решил эту задачу с помощью Bitbucket, Jenkins и MicroK8s, но путь оказался не таким гладким, как хотелось бы. Проблемы с аутентификацией, конфликты портов и настройка окружения заставили меня попотеть. Как я справился? Об этом — в статье.
CI/CD (Continuous Integration/Continuous Deployment) — это must-have для современных разработчиков. Автоматизация сборки, тестирования и деплоя приложений экономит время, снижает вероятность ошибок и ускоряет доставку кода до продакшена. В этой статье мы разберем, как настроить полноценный CI/CD-пайплайн для Spring Boot приложения, используя связку Bitbucket, Jenkins и MicroK8s.
Читать: https://habr.com/ru/articles/891844/?utm_campaign=891844
@a_cup_of_java | Другие наши каналы
Как применять happens-before на практике и в чем основные преимущества этой концепции
Основные правила применения концепции happens-before
Читать: «Как применять happens-before на практике и в чем основные преимущества этой концепции»
@a_cup_of_java | Другие наши каналы
Основные правила применения концепции happens-before
Читать: «Как применять happens-before на практике и в чем основные преимущества этой концепции»
@a_cup_of_java | Другие наши каналы
❤3
Java 24! Спецвыпуск Java Digest
Всем привет! 👋 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин, Константин и Роман. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Сегодня вышла Java 24! Давайте посмотрим, что нового она принесла нам!
Скорее читать спецвыпуск!
Читать: https://habr.com/ru/companies/tbank/articles/891798/?utm_campaign=891798
@a_cup_of_java | Другие наши каналы
Всем привет! 👋 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин, Константин и Роман. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Сегодня вышла Java 24! Давайте посмотрим, что нового она принесла нам!
Скорее читать спецвыпуск!
Читать: https://habr.com/ru/companies/tbank/articles/891798/?utm_campaign=891798
@a_cup_of_java | Другие наши каналы
👍3
Новый релиз Java 24: что нового
Oracle представила Java 24, не являющуюся LTS-версией. Главные новинки: экспериментальные функции Generational Shenandoah и Compact Object Headers. Java 24 ускоряет запуск приложений и расширяет возможности API Stream. Подробности о новых функциях и ожиданиях от JDK 25 читайте далее.
Подробности: https://www.infoq.com/news/2025/03/java24-released/
#en
@a_cup_of_java | Другие наши каналы
Oracle представила Java 24, не являющуюся LTS-версией. Главные новинки: экспериментальные функции Generational Shenandoah и Compact Object Headers. Java 24 ускоряет запуск приложений и расширяет возможности API Stream. Подробности о новых функциях и ожиданиях от JDK 25 читайте далее.
Подробности: https://www.infoq.com/news/2025/03/java24-released/
#en
@a_cup_of_java | Другие наши каналы
👍4
Функциональное программирование в Java
Привет, Хабр!
В этой статье я опишу функциональное программирование и расскажу, как оно реализовано в Java. Помимо вопроса «что это?», я постараюсь ответить на вопросы «зачем?», «когда?» и «как?» это используется.
Читать: https://habr.com/ru/companies/reksoft/articles/892242/?utm_campaign=892242
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
В этой статье я опишу функциональное программирование и расскажу, как оно реализовано в Java. Помимо вопроса «что это?», я постараюсь ответить на вопросы «зачем?», «когда?» и «как?» это используется.
Читать: https://habr.com/ru/companies/reksoft/articles/892242/?utm_campaign=892242
@a_cup_of_java | Другие наши каналы
👍4
Forwarded from Типичный программист
Редакция Tproger запустила свой канал для авторов, где учат писать лучше. Если давно хотели попробовать себя в IT-журналистике — самое время начать.
Почему As Code — это не просто тренд, а новая реальность разработки
В статье Максим Морев расскажет, что такое подход As Code, как он развивался и почему он нужен компаниям.
Читать: «Почему As Code — это не просто тренд, а новая реальность разработки»
@a_cup_of_java | Другие наши каналы
В статье Максим Морев расскажет, что такое подход As Code, как он развивался и почему он нужен компаниям.
Читать: «Почему As Code — это не просто тренд, а новая реальность разработки»
@a_cup_of_java | Другие наши каналы
👍1
Шатаем ActiveMQ
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
❤2
Регистрация по взрослому: @AuthenticationalPrinciple, JWT, UserDetails
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Неблокирующий вызов внешнего сервиса в процессе
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
🫡1
Hexagonal Architecture: Почему старая добрая многослойка больше не работает?
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Эффективный подход к тестированию веб-контроллеров в Spring Boot приложениях
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
На страже производительности Spring Boot приложений: Профилирование и оптимизация
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы
В поисках идеального Database-клиента для IDE: Amplicode выбирает DBeaver
Один из частых вопросов, которые мы слышим от наших пользователей, связан с заменой встроенного инструмента для работы с БД, доступного ранее в IntelliJ IDEA Ultimate. В связи с тем, что DataGrip больше не доступен (а именно так называлась эта функциональность), многим разработчикам приходится искать альтернативу инструменту.
Нас эта проблема волнует не только как разработчиков Amplicode, но и как участников проекта OpenIDE. Мы считаем очень важным предоставить российским разработчикам максимально удобное и мощное решение.
Читать: https://habr.com/ru/companies/haulmont/articles/892744/?utm_campaign=892744
@a_cup_of_java | Другие наши каналы
Один из частых вопросов, которые мы слышим от наших пользователей, связан с заменой встроенного инструмента для работы с БД, доступного ранее в IntelliJ IDEA Ultimate. В связи с тем, что DataGrip больше не доступен (а именно так называлась эта функциональность), многим разработчикам приходится искать альтернативу инструменту.
Нас эта проблема волнует не только как разработчиков Amplicode, но и как участников проекта OpenIDE. Мы считаем очень важным предоставить российским разработчикам максимально удобное и мощное решение.
Читать: https://habr.com/ru/companies/haulmont/articles/892744/?utm_campaign=892744
@a_cup_of_java | Другие наши каналы
🤨3👍2
Генерация случайных чисел
Картинка Benzoix, Freepik
Зачем вообще нужны случайные числа? Дело в том, что случайные числа не представляют собой оторванную от жизни абстракцию, а широко применяются во множестве областей, начиная от научных исследований и заканчивая технологиями, окружающими нас.
Рассмотрим наиболее известные применения случайных чисел и способы их получения как программным способом, так и комбинированным (программно-физическим).
Читать: https://habr.com/ru/companies/ruvds/articles/891292/?utm_campaign=891292
@a_cup_of_java | Другие наши каналы
Картинка Benzoix, Freepik
Зачем вообще нужны случайные числа? Дело в том, что случайные числа не представляют собой оторванную от жизни абстракцию, а широко применяются во множестве областей, начиная от научных исследований и заканчивая технологиями, окружающими нас.
Рассмотрим наиболее известные применения случайных чисел и способы их получения как программным способом, так и комбинированным (программно-физическим).
Читать: https://habr.com/ru/companies/ruvds/articles/891292/?utm_campaign=891292
@a_cup_of_java | Другие наши каналы
JavaOne 2025: Новое из мира Java
Первый день JavaOne 2025 открылся в Калифорнии с выпуском JDK 24. На ключевой презентации обсуждалось развитие Java и роль Oracle в ее сохранении и инновациях. Участники узнали решения 11 проблем разработчиков, а также об анонсе нового образовательного ресурса Learn.java.
Подробности: https://www.infoq.com/news/2025/03/day-one-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
Первый день JavaOne 2025 открылся в Калифорнии с выпуском JDK 24. На ключевой презентации обсуждалось развитие Java и роль Oracle в ее сохранении и инновациях. Участники узнали решения 11 проблем разработчиков, а также об анонсе нового образовательного ресурса Learn.java.
Подробности: https://www.infoq.com/news/2025/03/day-one-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
Ученые из Гарварда оценили все open-source проекты в $8,8 трлн
Гарвард оценил ценность open-source в $8,8 трлн: 96% IT-продуктов используют свободный код, но создают его лишь 5% разработчиков
Читать: «Ученые из Гарварда оценили все open-source проекты в $8,8 трлн»
@a_cup_of_java | Другие наши каналы
Гарвард оценил ценность open-source в $8,8 трлн: 96% IT-продуктов используют свободный код, но создают его лишь 5% разработчиков
Читать: «Ученые из Гарварда оценили все open-source проекты в $8,8 трлн»
@a_cup_of_java | Другие наши каналы
Концерт для Java с ИИ — разработка готовых к продакшен LLM приложений (часть 2)
Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов.
В первой части рассказывалось о том, какие подходы автор доклада применил к стоящей перед ним проблеме. Также было показано начало работы над усовершенствованием интерфейса программы-помощника с использованием ИИ. Во второй части будет продолжен рассказ о том, как еще больше улучшить программу. Но сначала поговорим о безопасности.
Читать: https://habr.com/ru/companies/spring_aio/articles/893052/?utm_campaign=893052
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов.
В первой части рассказывалось о том, какие подходы автор доклада применил к стоящей перед ним проблеме. Также было показано начало работы над усовершенствованием интерфейса программы-помощника с использованием ИИ. Во второй части будет продолжен рассказ о том, как еще больше улучшить программу. Но сначала поговорим о безопасности.
Читать: https://habr.com/ru/companies/spring_aio/articles/893052/?utm_campaign=893052
@a_cup_of_java | Другие наши каналы
Что такое хэш-таблицы и как их использовать
Что такое хэш-таблицы. Показываем основные преимущества хэш-таблиц в программировании. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
Читать: «Что такое хэш-таблицы и как их использовать»
@a_cup_of_java | Другие наши каналы
Что такое хэш-таблицы. Показываем основные преимущества хэш-таблиц в программировании. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
Читать: «Что такое хэш-таблицы и как их использовать»
@a_cup_of_java | Другие наши каналы