Документируем API как профессионалы OpenAPI и Spring в действии
В мире микросервисной архитектуры качественная документация API — это не роскошь, а необходимость. Она ускоряет интеграцию, снижает количество ошибок и упрощает жизнь как разработчикам, так и потребителям вашего сервиса. Исторически документация часто отставала от кода, но с появлением стандарта OpenAPI (ex‑Swagger) и его глубокой интеграции с экосистемой Spring этот процесс можно полностью автоматизировать.
В этой статье мы подробно рассмотрим, как профессионально подойти к документированию API, используя связку OpenAPI и Spring Boot. Чтобы материал был максимально практическим, мы создадим простой PersonService и на его примере покажем, как из кода генерируется всегда актуальная и интерактивная документация.
Подробнее о подходе
Читать: https://habr.com/ru/companies/otus/articles/965178/?utm_campaign=965178
@a_cup_of_java | Другие наши каналы
В мире микросервисной архитектуры качественная документация API — это не роскошь, а необходимость. Она ускоряет интеграцию, снижает количество ошибок и упрощает жизнь как разработчикам, так и потребителям вашего сервиса. Исторически документация часто отставала от кода, но с появлением стандарта OpenAPI (ex‑Swagger) и его глубокой интеграции с экосистемой Spring этот процесс можно полностью автоматизировать.
В этой статье мы подробно рассмотрим, как профессионально подойти к документированию API, используя связку OpenAPI и Spring Boot. Чтобы материал был максимально практическим, мы создадим простой PersonService и на его примере покажем, как из кода генерируется всегда актуальная и интерактивная документация.
Подробнее о подходе
Читать: https://habr.com/ru/companies/otus/articles/965178/?utm_campaign=965178
@a_cup_of_java | Другие наши каналы
Встречаем Spring AI Agents и Spring AI Bench
Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench. В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.
Читать: https://habr.com/ru/companies/spring_aio/articles/965294/?utm_campaign=965294
@a_cup_of_java | Другие наши каналы
Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench. В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.
Читать: https://habr.com/ru/companies/spring_aio/articles/965294/?utm_campaign=965294
@a_cup_of_java | Другие наши каналы
OpenTelemetry — не то, чем кажется…
Привет! Меня зовут - Евгений, работаю в финтехе и проектирую системы, которые обрабатывают миллионы запросов, интегрируются с десятками внешних сервисов и живут в Kubernetes. А еще я преподаю Java/Spring Boot и рассказываю студентам, как не наступать на чужие грабли, а создавать свои и прыгать на них.
Больше 10 лет в разработке — и за эти годы в череде проектов я видел одну и ту же боль: отсутствие системного подхода к наблюдаемости. Логи, метрики и трейсы появляются «по остаточному принципу»: что-то добавили при отладке, что-то прилетело из чужой либы, что-то настроили на проде. Итог — инженеры часами разбирают простые инциденты, а продуктовые команды теряют скорость.
В статье поделюсь нашим опытом: как мы строим наблюдаемость в системах, почему OpenTelemetry — это больше чем стандарт и какими принципами мы руководствуемся.
Ну давай посмотрим что у тебя там...
Читать: https://habr.com/ru/companies/tbank/articles/965256/?utm_campaign=965256
@a_cup_of_java | Другие наши каналы
Привет! Меня зовут - Евгений, работаю в финтехе и проектирую системы, которые обрабатывают миллионы запросов, интегрируются с десятками внешних сервисов и живут в Kubernetes. А еще я преподаю Java/Spring Boot и рассказываю студентам, как не наступать на чужие грабли, а создавать свои и прыгать на них.
Больше 10 лет в разработке — и за эти годы в череде проектов я видел одну и ту же боль: отсутствие системного подхода к наблюдаемости. Логи, метрики и трейсы появляются «по остаточному принципу»: что-то добавили при отладке, что-то прилетело из чужой либы, что-то настроили на проде. Итог — инженеры часами разбирают простые инциденты, а продуктовые команды теряют скорость.
В статье поделюсь нашим опытом: как мы строим наблюдаемость в системах, почему OpenTelemetry — это больше чем стандарт и какими принципами мы руководствуемся.
Ну давай посмотрим что у тебя там...
Читать: https://habr.com/ru/companies/tbank/articles/965256/?utm_campaign=965256
@a_cup_of_java | Другие наши каналы
Подключаем LLMку в свой Java/Kotlin проект через Docker
Всем привет, сегодня я расскажу как подключить LLMку через докер в ваш проект под разные задачи, необязательно это будет написание кода или тестов, возможно, вы захотите решать просто бытовые задачи или развлечься с ИИ.
Мы будем использовать Java/Kotlin + Docker + Ollama.
Читать: https://habr.com/ru/articles/965426/?utm_campaign=965426
@a_cup_of_java | Другие наши каналы
Всем привет, сегодня я расскажу как подключить LLMку через докер в ваш проект под разные задачи, необязательно это будет написание кода или тестов, возможно, вы захотите решать просто бытовые задачи или развлечься с ИИ.
Мы будем использовать Java/Kotlin + Docker + Ollama.
Читать: https://habr.com/ru/articles/965426/?utm_campaign=965426
@a_cup_of_java | Другие наши каналы
❤4
Kafka для начинающих: гарантии доставки на практике и настройка идемпотентности
Почему exactly-once — это миф? Как защититься от дубликатов в распределённых системах?
Продолжаем работу с Kafka на практике и рассматриваем более интересные темы.
Простым языком и с примерами кода о непростых концепциях и паттернах.
Читать: https://habr.com/ru/articles/961048/?utm_campaign=961048
@a_cup_of_java | Другие наши каналы
Почему exactly-once — это миф? Как защититься от дубликатов в распределённых системах?
Продолжаем работу с Kafka на практике и рассматриваем более интересные темы.
Простым языком и с примерами кода о непростых концепциях и паттернах.
Читать: https://habr.com/ru/articles/961048/?utm_campaign=961048
@a_cup_of_java | Другие наши каналы
Искусственный интеллект в роли архитектора кода: возможности и ограничения
Автор: Денис Аветисян
Первое масштабное исследование показывает, как нейросети справляются с задачей рефакторинга программного кода.
Читать: https://habr.com/ru/articles/965664/?utm_campaign=965664
@a_cup_of_java | Другие наши каналы
Автор: Денис Аветисян
Первое масштабное исследование показывает, как нейросети справляются с задачей рефакторинга программного кода.
Читать: https://habr.com/ru/articles/965664/?utm_campaign=965664
@a_cup_of_java | Другие наши каналы
Математик или программист? Какие знания нужны ML‑специалисту
Интервью про ML: бустинг против нейросетей, работа с LLM, валидация и культура кода в команде
Читать: «Математик или программист? Какие знания нужны ML‑специалисту»
@a_cup_of_java | Другие наши каналы
Интервью про ML: бустинг против нейросетей, работа с LLM, валидация и культура кода в команде
Читать: «Математик или программист? Какие знания нужны ML‑специалисту»
@a_cup_of_java | Другие наши каналы
❤🔥1
Как дефолтная пагинация в Spring сломала проект и как это починить
Всем привет, сегодня я хотел бы поделиться с вами историей про Spring пагинацию, почему она ужасна, как она вызвала кучу проблем и как ее починить.
Читать: https://habr.com/ru/articles/965794/?utm_campaign=965794
@a_cup_of_java | Другие наши каналы
Всем привет, сегодня я хотел бы поделиться с вами историей про Spring пагинацию, почему она ужасна, как она вызвала кучу проблем и как ее починить.
Читать: https://habr.com/ru/articles/965794/?utm_campaign=965794
@a_cup_of_java | Другие наши каналы
Почему простые фичи — самые сложные: история о пет-проекте, Дженге и маржинальной торговле
Привет, Хабр! Меня зовут Иван, и сегодня я хочу поделиться историей о своём пет‑проекте A‑Zero. Истории про провалы традиционно интереснее историй об успехах, и моя как раз такая (почти). Довольно бодро начинавшийся проект чуть было не свёл меня с ума из‑за одной единственной фичи, «просочившейся» в MVP, и сейчас я расскажу, как я из этого выкарабкался и чему научился по дороге.
Читать: https://habr.com/ru/articles/965896/?utm_campaign=965896
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Меня зовут Иван, и сегодня я хочу поделиться историей о своём пет‑проекте A‑Zero. Истории про провалы традиционно интереснее историй об успехах, и моя как раз такая (почти). Довольно бодро начинавшийся проект чуть было не свёл меня с ума из‑за одной единственной фичи, «просочившейся» в MVP, и сейчас я расскажу, как я из этого выкарабкался и чему научился по дороге.
Читать: https://habr.com/ru/articles/965896/?utm_campaign=965896
@a_cup_of_java | Другие наши каналы
HotSpot на iOS: OpenJDK запускается на iPhone
InfoQ сообщает, что OpenJDK Mobile под руководством Johan Vos собрал HotSpot/Zero для iOS. План — сочетать Zero с AOT (Project Leyden) и OpenJFX, чтобы обойти запрет Apple на JIT и сделать Java пригодной для мобильных приложений.
Подробности: https://www.infoq.com/news/2025/11/java-on-ios/
#en
@a_cup_of_java | Другие наши каналы
InfoQ сообщает, что OpenJDK Mobile под руководством Johan Vos собрал HotSpot/Zero для iOS. План — сочетать Zero с AOT (Project Leyden) и OpenJFX, чтобы обойти запрет Apple на JIT и сделать Java пригодной для мобильных приложений.
Подробности: https://www.infoq.com/news/2025/11/java-on-ios/
#en
@a_cup_of_java | Другие наши каналы
Странности в исключениях JVM с точки зрения декомпилятора
Некоторое время назад я немного поэкспериментировала, пытаясь научиться декомпилировать файлы классов Java более эффективно, чем позволяют традиционные инструменты, предназначенные для этого — например, Vineflower. В конце концов, я написала статью, в которой изложила мой подход к декомпиляции потока управления. Мои находки позволили значительно ускорить работу получившегося у меня прототипа.
На тот момент я полагала, что этот метод не составит труда расширить и на декомпиляцию потока управления, возникающего при обработке исключений — то есть, что ему будут поддаваться блоки
Читать: https://habr.com/ru/articles/965922/?utm_campaign=965922
@a_cup_of_java | Другие наши каналы
Некоторое время назад я немного поэкспериментировала, пытаясь научиться декомпилировать файлы классов Java более эффективно, чем позволяют традиционные инструменты, предназначенные для этого — например, Vineflower. В конце концов, я написала статью, в которой изложила мой подход к декомпиляции потока управления. Мои находки позволили значительно ускорить работу получившегося у меня прототипа.
На тот момент я полагала, что этот метод не составит труда расширить и на декомпиляцию потока управления, возникающего при обработке исключений — то есть, что ему будут поддаваться блоки
try…catch. В ретроспективе признаю: следовало ожидать, что это будет не так просто. Оказывается, здесь возникает множество пограничных случаев, варьирующихся от странного поведения javac до последствий, отражающихся на самой структуре JVM и формате файлов классов. Всё это – серьёзные осложнения. В данном посте я разберу все эти детали, расскажу, почему простые решения не работают, и на каком подходе я в итоге остановилась.Читать: https://habr.com/ru/articles/965922/?utm_campaign=965922
@a_cup_of_java | Другие наши каналы
Разбор задачи «Regular Expression Matching»
В этой статье я разберу решение задачи сопоставления строки шаблону с регулярным выражением, которая предлагается сайтом LeetCode под номером 10.
Читать: https://habr.com/ru/articles/966134/?utm_campaign=966134
@a_cup_of_java | Другие наши каналы
В этой статье я разберу решение задачи сопоставления строки шаблону с регулярным выражением, которая предлагается сайтом LeetCode под номером 10.
Читать: https://habr.com/ru/articles/966134/?utm_campaign=966134
@a_cup_of_java | Другие наши каналы
❤1
Spring-boot-starter для паттерна Transaction outbox Kafka
В микросервисной архитектуре мы постоянно сталкиваемся с задачей: сохранить изменения в базе и гарантированно отправить событие в Kafka. На первый взгляд звучит просто — сделал транзакцию, отправил сообщение, закоммитил. Но в реальности между базой данных и брокером сообщений никакой общей транзакции нет.
В этой статье я покажу, как я вынес всю логику Transaction Outbox в отдельный Spring Boot Starter, который можно подключить одной зависимостью. Он создаёт таблицу Outbox, конфигурирует шедулер, отвечает за отправку в Kafka и очистку, позволяя микросервисам сосредоточиться только на бизнес-логике.
Читать: https://habr.com/ru/articles/966802/?utm_campaign=966802
@a_cup_of_java | Другие наши каналы
В микросервисной архитектуре мы постоянно сталкиваемся с задачей: сохранить изменения в базе и гарантированно отправить событие в Kafka. На первый взгляд звучит просто — сделал транзакцию, отправил сообщение, закоммитил. Но в реальности между базой данных и брокером сообщений никакой общей транзакции нет.
В этой статье я покажу, как я вынес всю логику Transaction Outbox в отдельный Spring Boot Starter, который можно подключить одной зависимостью. Он создаёт таблицу Outbox, конфигурирует шедулер, отвечает за отправку в Kafka и очистку, позволяя микросервисам сосредоточиться только на бизнес-логике.
Читать: https://habr.com/ru/articles/966802/?utm_campaign=966802
@a_cup_of_java | Другие наши каналы
✍1
Графический редактор PaintCAD Mobile — переделка под большие экраны телефонов
Жил-был в 2000-2005(-2010) годах такой пет-проект - графический пиксель-арт редактор для J2ME мобильных телефонов - PaintCAD (смесь паинта и системы, управляемой с телефонной клавиатуры, ползающей курсором по рисунку, рисующей и применяющей эффекты, обрабатывающей изображения, создающей GIF-анимации, растровые PCF-шрифты и т.д.).
И что было дальше?
Читать: https://habr.com/ru/articles/966836/?utm_campaign=966836
@a_cup_of_java | Другие наши каналы
Жил-был в 2000-2005(-2010) годах такой пет-проект - графический пиксель-арт редактор для J2ME мобильных телефонов - PaintCAD (смесь паинта и системы, управляемой с телефонной клавиатуры, ползающей курсором по рисунку, рисующей и применяющей эффекты, обрабатывающей изображения, создающей GIF-анимации, растровые PCF-шрифты и т.д.).
И что было дальше?
Читать: https://habr.com/ru/articles/966836/?utm_campaign=966836
@a_cup_of_java | Другие наши каналы
👍1
Скважины, потоки и GC: как Java помогает качать нефть и сохранять ИТ-ресурсы и кадры
Многие промышленные системы ТЭК десятилетиями держались на Java. И это помогло им избежать полного ребилда. Если коротко: нефтегазовые компании в России не стали переписывать свои системы с нуля — они просто остались на Java. Только теперь — на отечественной.
Читать: https://habr.com/ru/companies/axiomjdk/articles/966704/?utm_campaign=966704
@a_cup_of_java | Другие наши каналы
Многие промышленные системы ТЭК десятилетиями держались на Java. И это помогло им избежать полного ребилда. Если коротко: нефтегазовые компании в России не стали переписывать свои системы с нуля — они просто остались на Java. Только теперь — на отечественной.
Читать: https://habr.com/ru/companies/axiomjdk/articles/966704/?utm_campaign=966704
@a_cup_of_java | Другие наши каналы
👎2
Почему каждой команде нужен AI-рецензент в 2025
В статье Java67 рассказывается о CodeRabbit — AI-рецензенте, который автоматически находит баги, уязвимости и крайние случаи, экономит время на ревью и предотвращает инциденты. AI дополнит людей, а не заменит их. Обзор: Темы блога JavaRevisited
В статье собраны теги и архивы блога JavaRevisited — Java, Spring, алгоритмы, DevOps, ML, базы данных, интервью-вопросы и онлайн-курсы. Полезная навигация для подготовки к собеседованиям и самообучения. Навигация блога: архив и подписка
На странице перечислены архив по годам и месяцам, ссылки Privacy Policy и Terms & Conditions, блок "Popular Posts" и форма подписки по e-mail. Указан копирайт Soma Sharma 2021–2025. Полезно для поиска прошлых записей.
Подробности: http://www.java67.com/2025/11/stop-shipping-bugs-why-every-team-needs.html
#en
@a_cup_of_java | Другие наши каналы
В статье Java67 рассказывается о CodeRabbit — AI-рецензенте, который автоматически находит баги, уязвимости и крайние случаи, экономит время на ревью и предотвращает инциденты. AI дополнит людей, а не заменит их. Обзор: Темы блога JavaRevisited
В статье собраны теги и архивы блога JavaRevisited — Java, Spring, алгоритмы, DevOps, ML, базы данных, интервью-вопросы и онлайн-курсы. Полезная навигация для подготовки к собеседованиям и самообучения. Навигация блога: архив и подписка
На странице перечислены архив по годам и месяцам, ссылки Privacy Policy и Terms & Conditions, блок "Popular Posts" и форма подписки по e-mail. Указан копирайт Soma Sharma 2021–2025. Полезно для поиска прошлых записей.
Подробности: http://www.java67.com/2025/11/stop-shipping-bugs-why-every-team-needs.html
#en
@a_cup_of_java | Другие наши каналы
❤1
Forwarded from Типичный программист
С кем знакомятся типичные программисты: 2D-тян или живая девушка?
Согласно недавним исследованиям Vantage Point Counseling Services, треть американцев хотя бы раз состояла в романтических отношениях с ИИ. Появилось даже приложение Loverse для виртуальных знакомств, где вместо реальных людей роль партнёров выполняют чат-боты с искусственным интеллектом.
Мы решили провести своё исследование и выяснить где и с кем сегодня знакомятся пользователи стран СНГ. Пожалуйста, пройдите наш небольшой опрос. Это поможет нашему исследованию.
Пройти опрос.
Согласно недавним исследованиям Vantage Point Counseling Services, треть американцев хотя бы раз состояла в романтических отношениях с ИИ. Появилось даже приложение Loverse для виртуальных знакомств, где вместо реальных людей роль партнёров выполняют чат-боты с искусственным интеллектом.
Мы решили провести своё исследование и выяснить где и с кем сегодня знакомятся пользователи стран СНГ. Пожалуйста, пройдите наш небольшой опрос. Это поможет нашему исследованию.
Пройти опрос.
😍1
Как не сойти с ума с Grafana Unified Alerting: настраиваем алерт и разбираем все грабли
В какой-то момент простого дашборда уже не хватает. Хочется, чтобы метрики не просто “где-то красиво лежали”, а сами приходили и били в лицо, когда что-то пошло не так.
Разберёмся с Grafana Unified Alerting, expressions, темплейтами уведомлений и типичными ошибками, которые легко словить, если вы впервые лезете в алерты.
Читать: https://habr.com/ru/articles/966902/?utm_campaign=966902
@a_cup_of_java | Другие наши каналы
В какой-то момент простого дашборда уже не хватает. Хочется, чтобы метрики не просто “где-то красиво лежали”, а сами приходили и били в лицо, когда что-то пошло не так.
Разберёмся с Grafana Unified Alerting, expressions, темплейтами уведомлений и типичными ошибками, которые легко словить, если вы впервые лезете в алерты.
Читать: https://habr.com/ru/articles/966902/?utm_campaign=966902
@a_cup_of_java | Другие наши каналы
Многопоточность без боли: моя шпаргалка для собесов в Java
Всем привет!)
Я работаю Senior Java Developer в одном из банков, и за последние годы мне пришлось пройти не одно собеседование, услышать десятки каверзных вопросов и потратить уйму времени на подготовку. И вот что я понял: многопоточность — это одна из самых сложных и любимых тем на Java-собеседованиях, независимо от уровня кандидата.
Поэтому в этой статье я хочу помочь вам уверенно подготовиться к секции по concurrency: разберём ключевые термины, посмотрим, как это работает на практике, и дам несколько советов, которые реально помогают на собесах. Поехали!
Читать: https://habr.com/ru/articles/966892/?utm_campaign=966892
@a_cup_of_java | Другие наши каналы
Всем привет!)
Я работаю Senior Java Developer в одном из банков, и за последние годы мне пришлось пройти не одно собеседование, услышать десятки каверзных вопросов и потратить уйму времени на подготовку. И вот что я понял: многопоточность — это одна из самых сложных и любимых тем на Java-собеседованиях, независимо от уровня кандидата.
Поэтому в этой статье я хочу помочь вам уверенно подготовиться к секции по concurrency: разберём ключевые термины, посмотрим, как это работает на практике, и дам несколько советов, которые реально помогают на собесах. Поехали!
Читать: https://habr.com/ru/articles/966892/?utm_campaign=966892
@a_cup_of_java | Другие наши каналы
Реактивное программирование в Java: от теории к практике
"Когда пару лет назад я впервые столкнулась с реактивным программированием, - рассказывает моя коллега Екатерина, - казалось, что это что-то слишком сложное и академическое. Но чем больше работаешь с современными высоконагруженными системами, тем яснее становится, что без реактивного подхода сложно обеспечить высокую отзывчивость и масштабируемость".
Читать: https://habr.com/ru/articles/966502/?utm_campaign=966502
@a_cup_of_java | Другие наши каналы
"Когда пару лет назад я впервые столкнулась с реактивным программированием, - рассказывает моя коллега Екатерина, - казалось, что это что-то слишком сложное и академическое. Но чем больше работаешь с современными высоконагруженными системами, тем яснее становится, что без реактивного подхода сложно обеспечить высокую отзывчивость и масштабируемость".
Читать: https://habr.com/ru/articles/966502/?utm_campaign=966502
@a_cup_of_java | Другие наши каналы
Выпущена версия Jmix 2.7
Мы рады сообщить о выпуске Jmix 2.7! Эта версия представляет обновленный дизайнер ролей в Jmix Studio, новые UI-компоненты и включает ряд других улучшений фреймворка. Полный список изменений вы можете посмотреть в разделе "Что нового" документации Jmix.
Ниже приведен краткий обзор основных новых функций Jmix 2.7.
Читать: https://habr.com/ru/companies/haulmont/articles/966526/?utm_campaign=966526
@a_cup_of_java | Другие наши каналы
Мы рады сообщить о выпуске Jmix 2.7! Эта версия представляет обновленный дизайнер ролей в Jmix Studio, новые UI-компоненты и включает ряд других улучшений фреймворка. Полный список изменений вы можете посмотреть в разделе "Что нового" документации Jmix.
Ниже приведен краткий обзор основных новых функций Jmix 2.7.
Читать: https://habr.com/ru/companies/haulmont/articles/966526/?utm_campaign=966526
@a_cup_of_java | Другие наши каналы