Spring AI: новый уровень интеграции ИИ в Java-приложения. В статье рассказывается, как с помощью Spring AI использовать большие языковые модели, создавать интеллектуальных агентов и обеспечивать безопасность данных. Полезно для разработчиков, работающих с AI и Spring.
Подробности: https://www.infoq.com/presentations/spring-ai-framework/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/presentations/spring-ai-framework/
#en
@a_cup_of_java | Другие наши каналы
💊1
Новое в мире Java: вышел второй релиз кандидат JDK 25 с 18 новыми функциями и долгосрочной поддержкой. Обновились Eclipse JNoSQL, Quarkus c патчами безопасности, Apache TomEE и Apache Camel с улучшениями совместимости и производительности.
Подробности: https://www.infoq.com/news/2025/08/java-news-roundup-aug18-2025/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/08/java-news-roundup-aug18-2025/
#en
@a_cup_of_java | Другие наши каналы
ArchUnit против хаоса
Привет! Я Масгутов Руслан, архитектор в Т-Банке. Одна из моих задач — вести архитектурный надзор по техническим решениям. Проверка структуры проектов при ревью довольно быстро становится скучной рутиной, и появляется желание автоматизировать эту деятельность, чтобы освободить время для более интересных задач.
Расскажу, как мы используем ArchUnit для автоматизации архитектурного контроля. Покажу, как мы обернули правила в Gradle-плагин, встроили их в CI/CD, боремся с архитектурными отклонениями до того, как они попадают в pull request, и расскажу о возможности сбора архитектурных метрик.
Читать: https://habr.com/ru/companies/tbank/articles/940766/?utm_campaign=940766
@a_cup_of_java | Другие наши каналы
Привет! Я Масгутов Руслан, архитектор в Т-Банке. Одна из моих задач — вести архитектурный надзор по техническим решениям. Проверка структуры проектов при ревью довольно быстро становится скучной рутиной, и появляется желание автоматизировать эту деятельность, чтобы освободить время для более интересных задач.
Расскажу, как мы используем ArchUnit для автоматизации архитектурного контроля. Покажу, как мы обернули правила в Gradle-плагин, встроили их в CI/CD, боремся с архитектурными отклонениями до того, как они попадают в pull request, и расскажу о возможности сбора архитектурных метрик.
Читать: https://habr.com/ru/companies/tbank/articles/940766/?utm_campaign=940766
@a_cup_of_java | Другие наши каналы
Stream Gatherers: кастомные промежуточные операции для Stream API
Привет, Хабр!
Когда Java 8 впервые подарила нам Stream API, мы все обрадовались ленивому функциональному стилю работы с коллекциями. Но хочется иногда большего. Вот, например, задача – пропустить из потока только по одному элементу каждого размера строки. Или разбить бесконечный стрим на окна фиксированного размера и обработать первые несколько таких окон. Казалось бы, чем проще:
Читать: https://habr.com/ru/companies/otus/articles/940320/?utm_campaign=940320
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
Когда Java 8 впервые подарила нам Stream API, мы все обрадовались ленивому функциональному стилю работы с коллекциями. Но хочется иногда большего. Вот, например, задача – пропустить из потока только по одному элементу каждого размера строки. Или разбить бесконечный стрим на окна фиксированного размера и обработать первые несколько таких окон. Казалось бы, чем проще:
.filter, .map, .distinct… Но именно этих операций не хватало. До Java 24 набор промежуточных операций в Stream был фиксированным – map, filter, flatMap, distinct, sorted и т.д. – и расширить его было нельзя. Приходилось придумывать сложные ухищрения (например, оборачивать объекты в record с особым equals или собирать через collect, а потом резать список), чтобы решить элементарные задачи. В итоге код становился громоздким и неинтуитивным.Читать: https://habr.com/ru/companies/otus/articles/940320/?utm_campaign=940320
@a_cup_of_java | Другие наши каналы
Хватит терять время! Ускоряем сборку с помощью Spring Test Profiler
Интеграционные тесты на Spring Boot могут тормозить разработку. Причина часто кроется в неэффективной работе с кэшем контекста Spring.
Spring Test Profiler — это инструмент, который поможет выявить узкие места и оптимизировать конфигурацию тестов. В новом переводе от команды Spring АйО мы рассмотрим, какие тесты вызывают повторную загрузку контекста, где конфигурации расходятся и как можно унифицировать окружение для значительного ускорения тестов.
Читать: https://habr.com/ru/companies/spring_aio/articles/940930/?utm_campaign=940930
@a_cup_of_java | Другие наши каналы
Интеграционные тесты на Spring Boot могут тормозить разработку. Причина часто кроется в неэффективной работе с кэшем контекста Spring.
Spring Test Profiler — это инструмент, который поможет выявить узкие места и оптимизировать конфигурацию тестов. В новом переводе от команды Spring АйО мы рассмотрим, какие тесты вызывают повторную загрузку контекста, где конфигурации расходятся и как можно унифицировать окружение для значительного ускорения тестов.
Читать: https://habr.com/ru/companies/spring_aio/articles/940930/?utm_campaign=940930
@a_cup_of_java | Другие наши каналы
Почти ультимативный обзор Criteria API с продвинутыми возможностями Hibernate
Вам нужно создать сложный запрос к реляционной БД с изменяющимися параметрами?
В этой статье рассмотрим основные возможности Criteria API. Также рассмотрим более продвинутые вещи, например создание CTE и оконных функций, которые есть у Hibernate Criteria API. В статье много примеров, которые смогут помочь при написании запросов Criteria API на практике.
Читать: https://habr.com/ru/articles/941130/?utm_campaign=941130
@a_cup_of_java | Другие наши каналы
Вам нужно создать сложный запрос к реляционной БД с изменяющимися параметрами?
В этой статье рассмотрим основные возможности Criteria API. Также рассмотрим более продвинутые вещи, например создание CTE и оконных функций, которые есть у Hibernate Criteria API. В статье много примеров, которые смогут помочь при написании запросов Criteria API на практике.
Читать: https://habr.com/ru/articles/941130/?utm_campaign=941130
@a_cup_of_java | Другие наши каналы
❤2👎1
AsyncAPI — Swagger для асинхронного API
Привет, Хабр! Меня зовут Александр Митин. Я Java разработчик в компании ИТ-холдинг Т1 с 15 летним опытом, из которых последние 5 лет работаю в финтехе. Мой любимый стек — Java Spring. Я хочу рассказать такое AsyncAPI, как работать со спецификациями, какие есть инструменты и поделюсь нашим опытом перехода на подход API First в наших системах.
Читать: https://habr.com/ru/companies/oleg-bunin/articles/940374/?utm_campaign=940374
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Меня зовут Александр Митин. Я Java разработчик в компании ИТ-холдинг Т1 с 15 летним опытом, из которых последние 5 лет работаю в финтехе. Мой любимый стек — Java Spring. Я хочу рассказать такое AsyncAPI, как работать со спецификациями, какие есть инструменты и поделюсь нашим опытом перехода на подход API First в наших системах.
Читать: https://habr.com/ru/companies/oleg-bunin/articles/940374/?utm_campaign=940374
@a_cup_of_java | Другие наши каналы
Spring Boot 4 и Spring Framework 7: Ключевые фичи и изменения
Уже в ноябре 2025 выходит Spring Boot 4 — масштабный релиз, построенный на фундаменте Spring Framework 7.0.0 и Jakarta EE 11. Это не просто очередное обновление, а важный этап в развитии всей Java-платформы: новые возможности для REST и безопасности, улучшенная работа с Kotlin и GraalVM, мощная поддержка облаков и нативных образов, а также инструменты для создания отказоустойчивых приложений.
🧠 Эта статья — больше, чем просто перевод: в ней собрано большое кол-во комментариев от экспертов Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/941310/?utm_campaign=941310
@a_cup_of_java | Другие наши каналы
Уже в ноябре 2025 выходит Spring Boot 4 — масштабный релиз, построенный на фундаменте Spring Framework 7.0.0 и Jakarta EE 11. Это не просто очередное обновление, а важный этап в развитии всей Java-платформы: новые возможности для REST и безопасности, улучшенная работа с Kotlin и GraalVM, мощная поддержка облаков и нативных образов, а также инструменты для создания отказоустойчивых приложений.
🧠 Эта статья — больше, чем просто перевод: в ней собрано большое кол-во комментариев от экспертов Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/941310/?utm_campaign=941310
@a_cup_of_java | Другие наши каналы
❤6
Жмых-жмых и в продакшен: как быстро написать админку
Всем привет, меня зовут Дмитрий Кремнев и я Java-разработчик в команде Jmix. Недавно на конференции смотрел доклад, в котором спикер рассказывал, как его команда справлялась с проблемой быстрого написания админок для внутренних сервисов. Сначала они реализовали дорогое самописное решение для своей команды, затем появилась идея масштабировать его и для остальных команд. Искали готовые альтернативы на рынке, которые удовлетворят все их бизнес-требования, но в итоге остановились на гибридном кастомном решении, основанном на low-code платформе. Проблемы, которые они решали мне показались очень знакомыми, ведь мы в команде тоже с ними сталкивались. В этой статье я хочу показать, как с помощью Jmix решаются типовые задачи при создании админок. Постараюсь быть конкретным, показать плюсы и ограничения.
Сделать красиво
Читать: https://habr.com/ru/companies/haulmont/articles/941668/?utm_campaign=941668
@a_cup_of_java | Другие наши каналы
Всем привет, меня зовут Дмитрий Кремнев и я Java-разработчик в команде Jmix. Недавно на конференции смотрел доклад, в котором спикер рассказывал, как его команда справлялась с проблемой быстрого написания админок для внутренних сервисов. Сначала они реализовали дорогое самописное решение для своей команды, затем появилась идея масштабировать его и для остальных команд. Искали готовые альтернативы на рынке, которые удовлетворят все их бизнес-требования, но в итоге остановились на гибридном кастомном решении, основанном на low-code платформе. Проблемы, которые они решали мне показались очень знакомыми, ведь мы в команде тоже с ними сталкивались. В этой статье я хочу показать, как с помощью Jmix решаются типовые задачи при создании админок. Постараюсь быть конкретным, показать плюсы и ограничения.
Сделать красиво
Читать: https://habr.com/ru/companies/haulmont/articles/941668/?utm_campaign=941668
@a_cup_of_java | Другие наши каналы
👍3
Единый дистрибутив, JSpecify, Java 25 и новый Spring Debugger: это и многое другое в IntelliJ IDEA 2025.2
IntelliJ IDEA 2025.2 — это релиз, который уже вызывает горячие обсуждения в комьюнити. JetBrains сделали первые шаги в сторону единого дистрибутива, добавили поддержку свежих технологий вроде JSpecify и Java 25, а ещё представили инструмент, который может изменить подход к отладке Spring-приложений.
Читать: https://habr.com/ru/companies/haulmont/articles/941612/?utm_campaign=941612
@a_cup_of_java | Другие наши каналы
IntelliJ IDEA 2025.2 — это релиз, который уже вызывает горячие обсуждения в комьюнити. JetBrains сделали первые шаги в сторону единого дистрибутива, добавили поддержку свежих технологий вроде JSpecify и Java 25, а ещё представили инструмент, который может изменить подход к отладке Spring-приложений.
Читать: https://habr.com/ru/companies/haulmont/articles/941612/?utm_campaign=941612
@a_cup_of_java | Другие наши каналы
Поддержка Spring 7, Reactive Debugger, работа с БД и HTTP прямо в IDE: это и много другое в Amplicode 2025.2
Amplicode 2025.2 — это релиз, в котором мы закрыли десятки мелких раздражающих моментов, и усилили поддержку ключевых технологий — от Spring и Spring Data JDBC до Docker, Kubernetes и Terraform. А также сделали интеграцию с базами и HTTP-сервисами ещё более бесшовной.
Читать: https://habr.com/ru/companies/haulmont/articles/941604/?utm_campaign=941604
@a_cup_of_java | Другие наши каналы
Amplicode 2025.2 — это релиз, в котором мы закрыли десятки мелких раздражающих моментов, и усилили поддержку ключевых технологий — от Spring и Spring Data JDBC до Docker, Kubernetes и Terraform. А также сделали интеграцию с базами и HTTP-сервисами ещё более бесшовной.
Читать: https://habr.com/ru/companies/haulmont/articles/941604/?utm_campaign=941604
@a_cup_of_java | Другие наши каналы
RAG и векторные БД: НЕ Сизифов LLM на Java и Spring Ai
Привет! Меня зовут Бромбин Андрей, и сегодня я разберу на практике, что такое RAG-системы и как они помогают улучшать поиск. Покажу, как использовать Spring AI, векторные базы данных и LLM. Ты получишь теорию и пример реализации на Java и Spring Boot – от идеи до работающего сервиса. Без сложных формул – только чёткие объяснения и код.
Обновить резюме
Читать: https://habr.com/ru/companies/ruvds/articles/924100/?utm_campaign=924100
@a_cup_of_java | Другие наши каналы
Привет! Меня зовут Бромбин Андрей, и сегодня я разберу на практике, что такое RAG-системы и как они помогают улучшать поиск. Покажу, как использовать Spring AI, векторные базы данных и LLM. Ты получишь теорию и пример реализации на Java и Spring Boot – от идеи до работающего сервиса. Без сложных формул – только чёткие объяснения и код.
Обновить резюме
Читать: https://habr.com/ru/companies/ruvds/articles/924100/?utm_campaign=924100
@a_cup_of_java | Другие наши каналы
❤1
xAI представила grok-code-fast-1 — свою первую ИИ-модель для кодинга и агентных задач
xAI выпустила grok-code-fast-1 — первую модель для кодинга и агентных задач. Она поддерживает TypeScript, Python, Java, Rust, C++ и Go, интегрирована в IDE и CLI, работает быстро (до 160 ток/с) и стоит дешевле конкурентов
Читать: «xAI представила grok-code-fast-1 — свою первую ИИ-модель для кодинга и агентных задач»
@a_cup_of_java | Другие наши каналы
xAI выпустила grok-code-fast-1 — первую модель для кодинга и агентных задач. Она поддерживает TypeScript, Python, Java, Rust, C++ и Go, интегрирована в IDE и CLI, работает быстро (до 160 ток/с) и стоит дешевле конкурентов
Читать: «xAI представила grok-code-fast-1 — свою первую ИИ-модель для кодинга и агентных задач»
@a_cup_of_java | Другие наши каналы
Технологии единого входа (SSO) для корпоративных ресурсов
«С ростом числа внутренних сервисов и платформ в компаниях всё актуальнее становится задача унификации доступа сотрудников к корпоративным ресурсам. HR-системы, CRM, документооборот — каждый из этих инструментов требует авторизации. В итоге у сотрудников накапливается десятки учётных записей, а у администраторов — необходимость управлять ими. Чтобы сократить избыточные точки входа и упростить контроль доступа, компании всё чаще внедряют механизм единого входа — SSO (Single Sign-On)», — рассказывает моя коллега Екатерина.
Читать: https://habr.com/ru/articles/942076/?utm_campaign=942076
@a_cup_of_java | Другие наши каналы
«С ростом числа внутренних сервисов и платформ в компаниях всё актуальнее становится задача унификации доступа сотрудников к корпоративным ресурсам. HR-системы, CRM, документооборот — каждый из этих инструментов требует авторизации. В итоге у сотрудников накапливается десятки учётных записей, а у администраторов — необходимость управлять ими. Чтобы сократить избыточные точки входа и упростить контроль доступа, компании всё чаще внедряют механизм единого входа — SSO (Single Sign-On)», — рассказывает моя коллега Екатерина.
Читать: https://habr.com/ru/articles/942076/?utm_campaign=942076
@a_cup_of_java | Другие наши каналы
❤1
Просто будь ленивым
В новом переводе от команды Spring АйО рассматривается JEP 502, который вносит в Java 25 StableValue. StableValue позволяют легко и эффективно реализовывать ленивые конструкции — от кэшей до логгеров. Новое API позволяет компилятору JIT заранее сворачивать вычисления, повышая производительность. Искали
Читать: https://habr.com/ru/companies/spring_aio/articles/942118/?utm_campaign=942118
@a_cup_of_java | Другие наши каналы
В новом переводе от команды Spring АйО рассматривается JEP 502, который вносит в Java 25 StableValue. StableValue позволяют легко и эффективно реализовывать ленивые конструкции — от кэшей до логгеров. Новое API позволяет компилятору JIT заранее сворачивать вычисления, повышая производительность. Искали
Lazy, но нашли золото: StableValue вычисляется один раз и может быть подготовлен ещё до запуска.Читать: https://habr.com/ru/companies/spring_aio/articles/942118/?utm_campaign=942118
@a_cup_of_java | Другие наши каналы
❤1
GRPC в деле: проблемы реального сервиса
Привет, Хабр! Я Владислав Кислый, разработчик отказоустойчивых нагруженных сервисов в Т-Банке. Расскажу страшную сказку о том, как в одной компании взялись разрабатывать сервис.
В качестве протокола взаимодействия выбрали gRPC. Что из этого вышло, с какими сетевыми проблемами пришлось столкнуться и как мы их решили — читайте в статье. Описанные проблемы можно потрогать руками с помощью тестового проекта, докера и темной магии Toxiproxy, который будет портить нам жизнь.
Читать: https://habr.com/ru/companies/tbank/articles/942014/?utm_campaign=942014
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Я Владислав Кислый, разработчик отказоустойчивых нагруженных сервисов в Т-Банке. Расскажу страшную сказку о том, как в одной компании взялись разрабатывать сервис.
В качестве протокола взаимодействия выбрали gRPC. Что из этого вышло, с какими сетевыми проблемами пришлось столкнуться и как мы их решили — читайте в статье. Описанные проблемы можно потрогать руками с помощью тестового проекта, докера и темной магии Toxiproxy, который будет портить нам жизнь.
Читать: https://habr.com/ru/companies/tbank/articles/942014/?utm_campaign=942014
@a_cup_of_java | Другие наши каналы
Просто о сложном: Нейросети, Графы
Просто о сложном: нейросети
Введение
В этой статье я хочу простыми словами объяснить практическое применение нейронных сетей для решения конкретных задач. Важно отметить, что мы не будем подробно разбирать, как устроены нейросети изнутри – об этом уже написано множество материалов. Вместо этого сосредоточимся на том, как применить нейросеть к конкретной задаче, как подобрать под неё данные и параметры. Мы не будем использовать готовые библиотеки машинного обучения – весь функционал реализован самостоятельно, чтобы наглядно разобраться, как можно написать нейросеть под свою задачу. Первое, с чего начнём: нейросеть имеет смысл применять только там, где действительно существуют закономерности в данных. Простой пример – домашний питомец, услышав будильник утром, с большой вероятностью понимает, что скоро получит свежую еду. Это примитивная закономерность (звук будильника → завтрак). Но бывают и очень сложные закономерности, которые не лежат на поверхности. То, что мы называем интуицией, по сути является распознаванием подобных скрытых закономерностей нашим мозгом. Итак, если в вашей задаче нет никаких паттернов или повторяющихся зависимостей, нейросеть не поможет – она просто будет гадать наугад. Если же вы предполагаете наличие закономерностей, можно попытаться их выявить с помощью обучения сети. Правда, будьте готовы к ситуации: если результат плохой, непонятно, то ли закономерностей нет, то ли вы неправильно обучили модель. В этой статье на конкретном примере мы рассмотрим весь путь: от зарождения идеи до реализации и обучения нейросети, а также разберём сложности, с которыми можно столкнуться. Примером послужит задача прогнозирования исхода спортивного события – будем пытаться угадать, выиграет ли первая команда первую четверть баскетбольного матча по ходу игры, используя нейросеть. Это своего рода модель для ставок на спорт, но сразу подчеркну: цель исключительно научная, а не научиться обыгрывать букмекеров (позже станет ясно почему).
Постановка задачи: нейросеть для ставок на спорт
Читать: https://habr.com/ru/articles/942228/?utm_campaign=942228
@a_cup_of_java | Другие наши каналы
Просто о сложном: нейросети
Введение
В этой статье я хочу простыми словами объяснить практическое применение нейронных сетей для решения конкретных задач. Важно отметить, что мы не будем подробно разбирать, как устроены нейросети изнутри – об этом уже написано множество материалов. Вместо этого сосредоточимся на том, как применить нейросеть к конкретной задаче, как подобрать под неё данные и параметры. Мы не будем использовать готовые библиотеки машинного обучения – весь функционал реализован самостоятельно, чтобы наглядно разобраться, как можно написать нейросеть под свою задачу. Первое, с чего начнём: нейросеть имеет смысл применять только там, где действительно существуют закономерности в данных. Простой пример – домашний питомец, услышав будильник утром, с большой вероятностью понимает, что скоро получит свежую еду. Это примитивная закономерность (звук будильника → завтрак). Но бывают и очень сложные закономерности, которые не лежат на поверхности. То, что мы называем интуицией, по сути является распознаванием подобных скрытых закономерностей нашим мозгом. Итак, если в вашей задаче нет никаких паттернов или повторяющихся зависимостей, нейросеть не поможет – она просто будет гадать наугад. Если же вы предполагаете наличие закономерностей, можно попытаться их выявить с помощью обучения сети. Правда, будьте готовы к ситуации: если результат плохой, непонятно, то ли закономерностей нет, то ли вы неправильно обучили модель. В этой статье на конкретном примере мы рассмотрим весь путь: от зарождения идеи до реализации и обучения нейросети, а также разберём сложности, с которыми можно столкнуться. Примером послужит задача прогнозирования исхода спортивного события – будем пытаться угадать, выиграет ли первая команда первую четверть баскетбольного матча по ходу игры, используя нейросеть. Это своего рода модель для ставок на спорт, но сразу подчеркну: цель исключительно научная, а не научиться обыгрывать букмекеров (позже станет ясно почему).
Постановка задачи: нейросеть для ставок на спорт
Читать: https://habr.com/ru/articles/942228/?utm_campaign=942228
@a_cup_of_java | Другие наши каналы
vm5277, пример компиляции для AVR
Пишем один код - собираем на разные 8 бит МК!
https://vm5277.ru- это универсальное решение для embedded-разработки, которое позволяет сократить время создания прошивки для 8 бит микроконтроллеров в разы.
Как это работает:
Пишешь код на Java подобном языке (чистое ООП, без головной боли с указателями и не читабельным кодом)
Компилятор автоматически генерирует оптимизированный ассемблерный код под выбранную платформу
Код работает поверх легковесной RTOS, написанной на ассемблере для максимальной производительности
Ассемблер-сборщик финализирует проект в бинарный файл прошивки
Читать: https://habr.com/ru/articles/942258/?utm_campaign=942258
@a_cup_of_java | Другие наши каналы
Пишем один код - собираем на разные 8 бит МК!
https://vm5277.ru- это универсальное решение для embedded-разработки, которое позволяет сократить время создания прошивки для 8 бит микроконтроллеров в разы.
Как это работает:
Пишешь код на Java подобном языке (чистое ООП, без головной боли с указателями и не читабельным кодом)
Компилятор автоматически генерирует оптимизированный ассемблерный код под выбранную платформу
Код работает поверх легковесной RTOS, написанной на ассемблере для максимальной производительности
Ассемблер-сборщик финализирует проект в бинарный файл прошивки
Читать: https://habr.com/ru/articles/942258/?utm_campaign=942258
@a_cup_of_java | Другие наши каналы
Статистика футбольных матчей
Недавно рассказывал о многомерном анализе данных временных рядов с помощью Dimension-UI, упоминая простой и удобный интерфейс для доступа к данным, гибкость, интерактивность и другие преимущества. Пришло время проверить, как это работает на практике. В качестве полигона для анализа мы используем статистику футбольных матчей: посмотрим данные по голам, детализированные по командам, статистику по счёту, а также сравним результативность в домашних и гостевых матчах.
Читать: https://habr.com/ru/articles/942352/?utm_campaign=942352
@a_cup_of_java | Другие наши каналы
Недавно рассказывал о многомерном анализе данных временных рядов с помощью Dimension-UI, упоминая простой и удобный интерфейс для доступа к данным, гибкость, интерактивность и другие преимущества. Пришло время проверить, как это работает на практике. В качестве полигона для анализа мы используем статистику футбольных матчей: посмотрим данные по голам, детализированные по командам, статистику по счёту, а также сравним результативность в домашних и гостевых матчах.
Читать: https://habr.com/ru/articles/942352/?utm_campaign=942352
@a_cup_of_java | Другие наши каналы
Обратная совместимость в Java-мире
От приложения мы хотим стабильности и предсказуемости. Мы хотим, чтобы приложение было одинаковым. Эта предсказуемость и обратная совместимость являются эдакой священной коровой, которая движет Java вперёд, возможно, движет назад и, возможно, по некоторым сведениям, из-за этого Java и умрёт.
Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.
Читать: https://habr.com/ru/companies/axiomjdk/articles/941808/?utm_campaign=941808
@a_cup_of_java | Другие наши каналы
От приложения мы хотим стабильности и предсказуемости. Мы хотим, чтобы приложение было одинаковым. Эта предсказуемость и обратная совместимость являются эдакой священной коровой, которая движет Java вперёд, возможно, движет назад и, возможно, по некоторым сведениям, из-за этого Java и умрёт.
Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.
Читать: https://habr.com/ru/companies/axiomjdk/articles/941808/?utm_campaign=941808
@a_cup_of_java | Другие наши каналы
Контрактные тесты CDC на Pact
Привет, Хабр!
Сегодня рассмотрим контрактные тесты потребитель-управляемого формата на Pact.
Consumer-Driven Contracts фиксируют минимальный набор ожиданий клиента к API сервиса. Контракт рождается из автотеста на стороне потребителя. Потом провайдер прогоняет этот контракт против своей реализации и публикует результат в Broker. Выигрыш понятный: проверяем не всё API, а только то, что использует потребитель, и фиксируем совместимость версий до выката. Это основная идея Pact и базовая модель его работы.
Сам по себе CDC закрывает разрыв между быстрыми юнитами и медленными e2e. Контракт не заменяет e2e, но даёт дешёвую гарантию «не сломаем потребителя» на каждом изменении провайдера. CDC эффективнее всего на сетях сервисов с явными границами и стабильными интеграциями.
Читать: https://habr.com/ru/companies/otus/articles/941366/?utm_campaign=941366
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
Сегодня рассмотрим контрактные тесты потребитель-управляемого формата на Pact.
Consumer-Driven Contracts фиксируют минимальный набор ожиданий клиента к API сервиса. Контракт рождается из автотеста на стороне потребителя. Потом провайдер прогоняет этот контракт против своей реализации и публикует результат в Broker. Выигрыш понятный: проверяем не всё API, а только то, что использует потребитель, и фиксируем совместимость версий до выката. Это основная идея Pact и базовая модель его работы.
Сам по себе CDC закрывает разрыв между быстрыми юнитами и медленными e2e. Контракт не заменяет e2e, но даёт дешёвую гарантию «не сломаем потребителя» на каждом изменении провайдера. CDC эффективнее всего на сетях сервисов с явными границами и стабильными интеграциями.
Читать: https://habr.com/ru/companies/otus/articles/941366/?utm_campaign=941366
@a_cup_of_java | Другие наши каналы