Очарованные Hibernate: проблемы, которые ведут разработчика странствовать по production
Hibernate часто работает как надо ровно до того момента, пока не приходит настоящая нагрузка. И тогда выясняется, что безобидные на вид решения отключают batching, ломают пагинацию, умножают число запросов и даже незаметно открывают дополнительные транзакции — ровно там, где вы рассчитывали на один аккуратный запрос в рамках одного unit of work.
В этой статье мы постарались собрать добрую дюжину самых неочевидных и при этом действительно продакшн-критичных ошибок работы с Hibernate: как они проявляются в логах и метриках, почему возникают на уровне механики ORM, и какие предохранители помогут поймать их до релиза. Будет практично, предметно и с несколькими моментами, после которых захочется пересмотреть пару любимых паттернов в вашем проекте.
поехали ...
Читать: https://habr.com/ru/articles/981386/?utm_campaign=981386
@a_cup_of_java | Другие наши каналы
Hibernate часто работает как надо ровно до того момента, пока не приходит настоящая нагрузка. И тогда выясняется, что безобидные на вид решения отключают batching, ломают пагинацию, умножают число запросов и даже незаметно открывают дополнительные транзакции — ровно там, где вы рассчитывали на один аккуратный запрос в рамках одного unit of work.
В этой статье мы постарались собрать добрую дюжину самых неочевидных и при этом действительно продакшн-критичных ошибок работы с Hibernate: как они проявляются в логах и метриках, почему возникают на уровне механики ORM, и какие предохранители помогут поймать их до релиза. Будет практично, предметно и с несколькими моментами, после которых захочется пересмотреть пару любимых паттернов в вашем проекте.
поехали ...
Читать: https://habr.com/ru/articles/981386/?utm_campaign=981386
@a_cup_of_java | Другие наши каналы
Java-дайджест: Spring Vault, LangChain4j и Gradle 9.3 RC
Краткий обзор по материалу InfoQ: Spring Vault вводит VaultClient/ReactiveVaultClient; LangChain4j 1.10 добавляет мониторинг агентов и обнаружение моделей; Seed4J 2.2 поддерживает Spring Boot 4; патчи для Micronaut, Quarkus, Infinispan.
Подробности: https://www.infoq.com/news/2025/12/java-news-roundup-dec22-2025/
#en
@a_cup_of_java | Другие наши каналы
Краткий обзор по материалу InfoQ: Spring Vault вводит VaultClient/ReactiveVaultClient; LangChain4j 1.10 добавляет мониторинг агентов и обнаружение моделей; Seed4J 2.2 поддерживает Spring Boot 4; патчи для Micronaut, Quarkus, Infinispan.
Подробности: https://www.infoq.com/news/2025/12/java-news-roundup-dec22-2025/
#en
@a_cup_of_java | Другие наши каналы
SRE‑агент на базе ИИ — диагностика за секунды
Bruno Borges (Microsoft) описывает переход от ручного тюнинга SLO к автономным SRE‑агентам на LLM/MCP: OpenTelemetry, USE, jPDM, анализ дампов, интеграция с PagerDuty/Kubernetes и автоматическое устранение инцидентов для снижения MTTR.
Подробности: https://www.infoq.com/presentations/sre-java-agent/
#en
@a_cup_of_java | Другие наши каналы
Bruno Borges (Microsoft) описывает переход от ручного тюнинга SLO к автономным SRE‑агентам на LLM/MCP: OpenTelemetry, USE, jPDM, анализ дампов, интеграция с PagerDuty/Kubernetes и автоматическое устранение инцидентов для снижения MTTR.
Подробности: https://www.infoq.com/presentations/sre-java-agent/
#en
@a_cup_of_java | Другие наши каналы
Плагины с человеческим лицом: истории комьюнити OpenIDE
Мы в OpenIDE хорошо понимаем, что среда разработки — это не просто набор инструментов и функций. Это пространство, в котором разработчик проводит значительную часть своего времени: думает, экспериментирует, ошибается и создаёт новое. Именно поэтому для нас особенно важны открытость, доступность и ощущение живого диалога внутри экосистемы.
IDE - это не только кодовый редактор, вспомогательные инструменты и графические интерфейсы. IDE - это комьюнити. Люди, которые расширяют возможности платформы, находят нестандартные решения, закрывают реальные боли и делятся своим опытом с другими. Именно они превращают среду разработки из продукта в экосистему — живую и дышащую.
И когда до Нового года остаётся совсем немного времени, а сил на сложные технические материалы почти не остаётся, мы решили немного сменить ритм. Вместо глубоких разборов — лёгкое, тёплое и предпраздничное чтение. Так появилась идея серии интервью с участниками нашего комьюнити — людьми, которые создают плагины для OpenIDE.
Мы поговорили с разработчиками, которые вкладывают своё время, знания и идеи в то, чтобы OpenIDE становилась лучше, удобнее и сильнее. У каждого из них — своя история, мотивация и собственный взгляд на то, каким должен быть современный инструмент для разработки.
Это истории не столько про технологии, сколько про идеи, мотивацию и путь от «а что если» до готового инструмента, которым пользуются другие. Формат, который позволяет выдохнуть, вдохновиться и спокойно войти в новый год.
Мы хотим сделать этих людей видимыми. Показать, что за каждым плагином стоит не абстрактная функция, а конкретный человек или команда, которым действительно не всё равно. И, возможно, вдохновить других стать частью этого сообщества - потому что OpenIDE развивается именно так: вместе с людьми и благодаря людям.
Читать: https://habr.com/ru/companies/haulmont/articles/981830/?utm_campaign=981830
@a_cup_of_java | Другие наши каналы
Мы в OpenIDE хорошо понимаем, что среда разработки — это не просто набор инструментов и функций. Это пространство, в котором разработчик проводит значительную часть своего времени: думает, экспериментирует, ошибается и создаёт новое. Именно поэтому для нас особенно важны открытость, доступность и ощущение живого диалога внутри экосистемы.
IDE - это не только кодовый редактор, вспомогательные инструменты и графические интерфейсы. IDE - это комьюнити. Люди, которые расширяют возможности платформы, находят нестандартные решения, закрывают реальные боли и делятся своим опытом с другими. Именно они превращают среду разработки из продукта в экосистему — живую и дышащую.
И когда до Нового года остаётся совсем немного времени, а сил на сложные технические материалы почти не остаётся, мы решили немного сменить ритм. Вместо глубоких разборов — лёгкое, тёплое и предпраздничное чтение. Так появилась идея серии интервью с участниками нашего комьюнити — людьми, которые создают плагины для OpenIDE.
Мы поговорили с разработчиками, которые вкладывают своё время, знания и идеи в то, чтобы OpenIDE становилась лучше, удобнее и сильнее. У каждого из них — своя история, мотивация и собственный взгляд на то, каким должен быть современный инструмент для разработки.
Это истории не столько про технологии, сколько про идеи, мотивацию и путь от «а что если» до готового инструмента, которым пользуются другие. Формат, который позволяет выдохнуть, вдохновиться и спокойно войти в новый год.
Мы хотим сделать этих людей видимыми. Показать, что за каждым плагином стоит не абстрактная функция, а конкретный человек или команда, которым действительно не всё равно. И, возможно, вдохновить других стать частью этого сообщества - потому что OpenIDE развивается именно так: вместе с людьми и благодаря людям.
Читать: https://habr.com/ru/companies/haulmont/articles/981830/?utm_campaign=981830
@a_cup_of_java | Другие наши каналы
Пузырь 2021–2022 годов лопнул: эксперты составили прогноз рынка на 2026 год
После пузыря 2021–2022 ИТ-рынок стабилизируется: в 2026 ждут низкий найм, меньше джунов и рост спроса на сильных инженеров
Читать: «Пузырь 2021–2022 годов лопнул: эксперты составили прогноз рынка на 2026 год»
@a_cup_of_java | Другие наши каналы
После пузыря 2021–2022 ИТ-рынок стабилизируется: в 2026 ждут низкий найм, меньше джунов и рост спроса на сильных инженеров
Читать: «Пузырь 2021–2022 годов лопнул: эксперты составили прогноз рынка на 2026 год»
@a_cup_of_java | Другие наши каналы
💊8
ИИ работает, PR не успевают: риск для SDLC
На QCon AI NY Michael Webster рассказал, что ИИ даёт 3–5× рост скорости разработки на месяц, но затем накапливается технический долг и ревью усложняются. Варианты борьбы: Test Impact Analysis для CI/CD и агент Chunk для валидации кода.
Подробности: https://www.infoq.com/news/2025/12/ai-in-sdlc-webster/
#en
@a_cup_of_java | Другие наши каналы
На QCon AI NY Michael Webster рассказал, что ИИ даёт 3–5× рост скорости разработки на месяц, но затем накапливается технический долг и ревью усложняются. Варианты борьбы: Test Impact Analysis для CI/CD и агент Chunk для валидации кода.
Подробности: https://www.infoq.com/news/2025/12/ai-in-sdlc-webster/
#en
@a_cup_of_java | Другие наши каналы
От Чёрного моря до Невы: история одного комьюнити-тура
Привет, Хабр!
2025 год выдался богатым на конференции и митапы, которые мы успели посетить, а некоторые даже организовать. В этой статье мы совершим небольшой тур по городам и событиям этого года, важным для нашей команды.
Buckle up, folks!
Читать: https://habr.com/ru/companies/axiomjdk/articles/982122/?utm_campaign=982122
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
2025 год выдался богатым на конференции и митапы, которые мы успели посетить, а некоторые даже организовать. В этой статье мы совершим небольшой тур по городам и событиям этого года, важным для нашей команды.
Buckle up, folks!
Читать: https://habr.com/ru/companies/axiomjdk/articles/982122/?utm_campaign=982122
@a_cup_of_java | Другие наши каналы
❤1👾1
StingrayTV Alice: путь от идеи до беты
Привет, это снова Егор. И я сегодня расскажу историю о том, как я решил накодить что-то для своего триколоровского ресивера, и что из этого вышло...
Читать: https://habr.com/ru/articles/982166/?utm_campaign=982166
@a_cup_of_java | Другие наши каналы
Привет, это снова Егор. И я сегодня расскажу историю о том, как я решил накодить что-то для своего триколоровского ресивера, и что из этого вышло...
Читать: https://habr.com/ru/articles/982166/?utm_campaign=982166
@a_cup_of_java | Другие наши каналы
Ускоряем индексацию нодлистов Фидонета при помощи Java Streams и Spring Data JDBC: перебираем нодлисты прямиком с СУБД
Привет, это снова Егор. И да - это снова статья про Фидонет. Так уж сложилось, что именно эта тематика оказался слишком уж популярным на моём Хабре, и неразрывно связана со мной, хотя я всячески пытался "сбежать" от данной тематики.
Однако я решил совместить приятное с полезным - рассказать про недавние мои поправки в NodehistJ, которые значительно ускорит индексацию диффов нодлистов сети Фидонет, а также значительно снизит потребление ОЗУ, за счёт одного из лучших вещей, которая есть в Spring Data JDBC - live streaming данных с СУБД без использования неэффективной пагинации. Данная технология позволяет быстро перебирать нодлисты за считанные минуты, и ускорить индексацию даже на слабых серверах, за счёт прямого перебора данных из СУБД, в live-режиме, без использования неэффективной пагинации, но с использованием самых обычного Java Streams.
Читать: https://habr.com/ru/articles/982188/?utm_campaign=982188
@a_cup_of_java | Другие наши каналы
Привет, это снова Егор. И да - это снова статья про Фидонет. Так уж сложилось, что именно эта тематика оказался слишком уж популярным на моём Хабре, и неразрывно связана со мной, хотя я всячески пытался "сбежать" от данной тематики.
Однако я решил совместить приятное с полезным - рассказать про недавние мои поправки в NodehistJ, которые значительно ускорит индексацию диффов нодлистов сети Фидонет, а также значительно снизит потребление ОЗУ, за счёт одного из лучших вещей, которая есть в Spring Data JDBC - live streaming данных с СУБД без использования неэффективной пагинации. Данная технология позволяет быстро перебирать нодлисты за считанные минуты, и ускорить индексацию даже на слабых серверах, за счёт прямого перебора данных из СУБД, в live-режиме, без использования неэффективной пагинации, но с использованием самых обычного Java Streams.
Читать: https://habr.com/ru/articles/982188/?utm_campaign=982188
@a_cup_of_java | Другие наши каналы
Easy Maven — Dependencies Search. Или воскрешаем Maven Dependency Helper плагин
Всем привет! Недавно я опубликовал статью, в которой сказал что она будет последней по Easy Maven т.к. все что можно я уже делегировал Maven - импорт проекта и запуск тасков. Но недавнее обилие багов в IDEA 2025.3 связанных как с зависанием так и повышенным потреблением памяти, окунуло меня в баг трекер IDEA, где я нашел много похожих проблем, которые также затрагивают и мавен индексы. Помню как меня самого это раздражало, когда IDEA чуть ли не при каждом открытии, начинает сканировать локальный репозиторий. Про это даже писали в комментариях - где ответ был один - отключить это. Плюс недавно один из постов в тг канале (спасибо за это @javadev), еще больше убедил меня в том, что так дальше жить нельзя и я решил поправить проблему поиска зависимостей так как я ее вижу - не изобретать велосипед, а делегировать поиск туда, где это уже реализовано. Ведь как известно: самый лучший код - тот который ты не написал. Посмотрим что из этого вышло.
Читать: https://habr.com/ru/articles/981132/?utm_campaign=981132
@a_cup_of_java | Другие наши каналы
Всем привет! Недавно я опубликовал статью, в которой сказал что она будет последней по Easy Maven т.к. все что можно я уже делегировал Maven - импорт проекта и запуск тасков. Но недавнее обилие багов в IDEA 2025.3 связанных как с зависанием так и повышенным потреблением памяти, окунуло меня в баг трекер IDEA, где я нашел много похожих проблем, которые также затрагивают и мавен индексы. Помню как меня самого это раздражало, когда IDEA чуть ли не при каждом открытии, начинает сканировать локальный репозиторий. Про это даже писали в комментариях - где ответ был один - отключить это. Плюс недавно один из постов в тг канале (спасибо за это @javadev), еще больше убедил меня в том, что так дальше жить нельзя и я решил поправить проблему поиска зависимостей так как я ее вижу - не изобретать велосипед, а делегировать поиск туда, где это уже реализовано. Ведь как известно: самый лучший код - тот который ты не написал. Посмотрим что из этого вышло.
Читать: https://habr.com/ru/articles/981132/?utm_campaign=981132
@a_cup_of_java | Другие наши каналы
Под капотом многопоточной синхронизации в Java: как потоки договариваются через Mark Word
Когда вы пишете synchronized(obj), под капотом происходит целая цепочка событий, которую можно отследить до Mark Word — восьмибайтового служебного поля в каждом Java-объекте. В современных реализациях JVM (таких как HotSpot, OpenJ9, GraalVM) используется динамическая, адаптивная система, которая выбирает наиболее эффективную стратегию блокировки в зависимости от реального поведения потоков.
Читать: https://habr.com/ru/articles/982600/?utm_campaign=982600
@a_cup_of_java | Другие наши каналы
Когда вы пишете synchronized(obj), под капотом происходит целая цепочка событий, которую можно отследить до Mark Word — восьмибайтового служебного поля в каждом Java-объекте. В современных реализациях JVM (таких как HotSpot, OpenJ9, GraalVM) используется динамическая, адаптивная система, которая выбирает наиболее эффективную стратегию блокировки в зависимости от реального поведения потоков.
Читать: https://habr.com/ru/articles/982600/?utm_campaign=982600
@a_cup_of_java | Другие наши каналы
✍1
Инженерия создания микросервиса spring-web-flux
Создать Spring-сервис просто: существует масса статей и отличная документация. Однако среди всего этого многообразия материалов зачастую сложно разобраться, какой именно набор технологий лучше выбрать и каким образом эти технологии должным образом интегрировать друг с другом. После перехода на новые версии библиотек многое начинает функционировать иначе, появляются совершенно другие подходы. В данной статье я хочу продемонстрировать один из возможных способов разработки микросервиса в 2026 году, а также рассмотреть несколько инструментов автоматической генерации кода: OpenApiGenerator, JooqCodegen, GigaChat, Liquibase — и объяснить, как они работают вместе в рамках единого проекта.
Точкой отсчета для построения микросервиса сделаем описание REST API. Допустим, в нашем фантастическом мире аналитик заранее подготовил спецификацию API с помощью формата OpenAPI, хотя подобное встречается и в реальной практике.
Читать: https://habr.com/ru/articles/982774/?utm_campaign=982774
@a_cup_of_java | Другие наши каналы
Создать Spring-сервис просто: существует масса статей и отличная документация. Однако среди всего этого многообразия материалов зачастую сложно разобраться, какой именно набор технологий лучше выбрать и каким образом эти технологии должным образом интегрировать друг с другом. После перехода на новые версии библиотек многое начинает функционировать иначе, появляются совершенно другие подходы. В данной статье я хочу продемонстрировать один из возможных способов разработки микросервиса в 2026 году, а также рассмотреть несколько инструментов автоматической генерации кода: OpenApiGenerator, JooqCodegen, GigaChat, Liquibase — и объяснить, как они работают вместе в рамках единого проекта.
Точкой отсчета для построения микросервиса сделаем описание REST API. Допустим, в нашем фантастическом мире аналитик заранее подготовил спецификацию API с помощью формата OpenAPI, хотя подобное встречается и в реальной практике.
Читать: https://habr.com/ru/articles/982774/?utm_campaign=982774
@a_cup_of_java | Другие наши каналы
Java-дайджест: Spring Shell 4.0 и обновления инструментов
По материалам InfoQ: Spring Shell 4.0 GA, JReleaser 1.22.0 с улучшенной поддержкой подписывания, TornadoInsight теперь совместим с TornadoVM 2.0, Apache Camel 4.14.3 и свежие ранние сборки JDK.
Подробности: https://www.infoq.com/news/2026/01/java-news-roundup-dec29-2025/
#en
@a_cup_of_java | Другие наши каналы
По материалам InfoQ: Spring Shell 4.0 GA, JReleaser 1.22.0 с улучшенной поддержкой подписывания, TornadoInsight теперь совместим с TornadoVM 2.0, Apache Camel 4.14.3 и свежие ранние сборки JDK.
Подробности: https://www.infoq.com/news/2026/01/java-news-roundup-dec29-2025/
#en
@a_cup_of_java | Другие наши каналы
JEP 525: таймауты и улучшенные Joiner в структурной конкуренции Java
В статье InfoQ: в preview 6 JEP 525 ввёл onTimeout для Joiner, scope.join() может вернуть частичные результаты как List<t, а также мелкие API‑уточнения. Это облегчает обработку таймаутов и частичных результатов.
Подробности: https://www.infoq.com/news/2026/01/timeout-joiner-refinements/
#en @a_cup_of_java | Другие наши каналы
В статье InfoQ: в preview 6 JEP 525 ввёл onTimeout для Joiner, scope.join() может вернуть частичные результаты как List<t, а также мелкие API‑уточнения. Это облегчает обработку таймаутов и частичных результатов.
Подробности: https://www.infoq.com/news/2026/01/timeout-joiner-refinements/
#en @a_cup_of_java | Другие наши каналы
InfoQ
JEP 525 Brings Timeout Handling and Joiner Refinements to Java’s Structured Concurrency
JEP 525, a highlight in the upcoming JDK 26, refines structured concurrency for clearer, safer task management. This iteration introduces a timeout callback for custom joiners, enhancing flexibility and error handling. With streamlined APIs and focus on practical…
Java Digest — Новогодний спецвыпуск
Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Читать: https://habr.com/ru/companies/tbank/articles/983164/?utm_campaign=983164
@a_cup_of_java | Другие наши каналы
Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Читать: https://habr.com/ru/companies/tbank/articles/983164/?utm_campaign=983164
@a_cup_of_java | Другие наши каналы
👍2
Ограничь меня полностью! Или история одной ма-а-а-аленькой фичи
Бывало ли у вас так что задача на час максимум в результате занимает целый рабочий день или даже больше?
Почему так происходит? Нужно ли тестировать сторонние библиотеки? Есть ли польза от типичных задач для собеседований? Когда "костыль" вполне рабочее решение?
Частные ответы на все эти, казалось бы не связанные, вопросы попытаемся найти в непридуманной истории фичи, которая изначально казалась на 5 минут, а вышло...
Читать: https://habr.com/ru/articles/983196/?utm_campaign=983196
@a_cup_of_java | Другие наши каналы
Бывало ли у вас так что задача на час максимум в результате занимает целый рабочий день или даже больше?
Почему так происходит? Нужно ли тестировать сторонние библиотеки? Есть ли польза от типичных задач для собеседований? Когда "костыль" вполне рабочее решение?
Частные ответы на все эти, казалось бы не связанные, вопросы попытаемся найти в непридуманной истории фичи, которая изначально казалась на 5 минут, а вышло...
Читать: https://habr.com/ru/articles/983196/?utm_campaign=983196
@a_cup_of_java | Другие наши каналы
Field vs Constructor Injection в Java: ошибка объектного дизайна или вопрос синтаксиса?
Знаю, знаю... Прочитав заголовок, хочется голосом волка из мультфильма "Жил был пёс" сказать - "Шо, опять?" . Ведь битва этих подходов давно закончилась и разработчики Spring уже поставили точку.
Но недавняя публикация в одном довольно крупном Telegram-канале заставила меня вернуться к этому вопросу. В качестве главных аргументов против field injection там приводились лишь сложность изоляции в тестах и неудобство создания экземпляров для unit-тестов.
И хотя с этими пунктами не поспоришь, у многих разработчиков и не только начинающих, остаются вопросы: каковы реальные последствия для самого объекта? Можно ли считать его полноценным сразу после создания
Поиск ответов показал мне, что аргумент о тестах лишь верхушка айсберга. В глубине, куда я Вас сегодня приглашаю заглянуть, скрываются куда более фундаментальные вопросы принципов объектно-ориентированного дизайна, гарантий Java Memory Model и уважения к жизненному циклу объекта.
Читать: https://habr.com/ru/articles/983340/?utm_campaign=983340
@a_cup_of_java | Другие наши каналы
Знаю, знаю... Прочитав заголовок, хочется голосом волка из мультфильма "Жил был пёс" сказать - "Шо, опять?" . Ведь битва этих подходов давно закончилась и разработчики Spring уже поставили точку.
Но недавняя публикация в одном довольно крупном Telegram-канале заставила меня вернуться к этому вопросу. В качестве главных аргументов против field injection там приводились лишь сложность изоляции в тестах и неудобство создания экземпляров для unit-тестов.
И хотя с этими пунктами не поспоришь, у многих разработчиков и не только начинающих, остаются вопросы: каковы реальные последствия для самого объекта? Можно ли считать его полноценным сразу после создания
new? И почему все современные рекомендации так настаивают на конструкторах?Поиск ответов показал мне, что аргумент о тестах лишь верхушка айсберга. В глубине, куда я Вас сегодня приглашаю заглянуть, скрываются куда более фундаментальные вопросы принципов объектно-ориентированного дизайна, гарантий Java Memory Model и уважения к жизненному циклу объекта.
Читать: https://habr.com/ru/articles/983340/?utm_campaign=983340
@a_cup_of_java | Другие наши каналы
⚡1
Field vs Constructor Injection в Java: ошибка объектного дизайна или вопрос синтаксиса?
Знаю, знаю... Прочитав заголовок, хочется голосом волка из мультфильма "Жил был пёс" сказать - "Шо, опять?" . Ведь битва этих подходов давно закончилась и разработчики Spring уже поставили точку.
Но недавняя публикация в одном довольно крупном Telegram-канале заставила меня вернуться к этому вопросу. В качестве главных аргументов против field injection там приводились лишь сложность изоляции в тестах и неудобство создания экземпляров для unit-тестов.
И хотя с этими пунктами не поспоришь, у многих разработчиков и не только начинающих, остаются вопросы: каковы реальные последствия для самого объекта? Можно ли считать его полноценным сразу после создания
Поиск ответов показал мне, что аргумент о тестах лишь верхушка айсберга. В глубине, куда я Вас сегодня приглашаю заглянуть, скрываются куда более фундаментальные вопросы принципов объектно-ориентированного дизайна, гарантий Java Memory Model и уважения к жизненному циклу объекта.
Читать: https://habr.com/ru/articles/983344/?utm_campaign=983344
@a_cup_of_java | Другие наши каналы
Знаю, знаю... Прочитав заголовок, хочется голосом волка из мультфильма "Жил был пёс" сказать - "Шо, опять?" . Ведь битва этих подходов давно закончилась и разработчики Spring уже поставили точку.
Но недавняя публикация в одном довольно крупном Telegram-канале заставила меня вернуться к этому вопросу. В качестве главных аргументов против field injection там приводились лишь сложность изоляции в тестах и неудобство создания экземпляров для unit-тестов.
И хотя с этими пунктами не поспоришь, у многих разработчиков и не только начинающих, остаются вопросы: каковы реальные последствия для самого объекта? Можно ли считать его полноценным сразу после создания
new? И почему все современные рекомендации так настаивают на конструкторах?Поиск ответов показал мне, что аргумент о тестах лишь верхушка айсберга. В глубине, куда я Вас сегодня приглашаю заглянуть, скрываются куда более фундаментальные вопросы принципов объектно-ориентированного дизайна, гарантий Java Memory Model и уважения к жизненному циклу объекта.
Читать: https://habr.com/ru/articles/983344/?utm_campaign=983344
@a_cup_of_java | Другие наши каналы
Корпоративный RAG как MCP-сервис: подключаем кодовую базу к IDE
В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.
Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.
Мы столкнулись с этим в явном виде и сформулировали задачу так: дать разработчикам и системным аналитикам быстрый и актуальный поиск по всей кодовой базе компании с возможностью диалога через универсального агента.
В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.
Читать: https://habr.com/ru/articles/983424/?utm_campaign=983424
@a_cup_of_java | Другие наши каналы
В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.
Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.
Мы столкнулись с этим в явном виде и сформулировали задачу так: дать разработчикам и системным аналитикам быстрый и актуальный поиск по всей кодовой базе компании с возможностью диалога через универсального агента.
В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.
Читать: https://habr.com/ru/articles/983424/?utm_campaign=983424
@a_cup_of_java | Другие наши каналы
InfoQ Trends Reports 2025 — что важно разработчикам
InfoQ собрал серию отчетов по архитектуре, культуре, AI/ML, облакам и Java. Главные идеи: эволюция технологий, AI как соавтор в доставке ПО, роль человеческого суждения, рост платформенной инженерии и практические тренды на 1–5 лет.
Подробности: https://www.infoq.com/minibooks/2025-infoq-trends-reports-emag/
#en
@a_cup_of_java | Другие наши каналы
InfoQ собрал серию отчетов по архитектуре, культуре, AI/ML, облакам и Java. Главные идеи: эволюция технологий, AI как соавтор в доставке ПО, роль человеческого суждения, рост платформенной инженерии и практические тренды на 1–5 лет.
Подробности: https://www.infoq.com/minibooks/2025-infoq-trends-reports-emag/
#en
@a_cup_of_java | Другие наши каналы
DeepSeek в Intellij Idea через плагин Continue
Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен "работает - не трож". Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Читать: https://habr.com/ru/articles/983430/?utm_campaign=983430
@a_cup_of_java | Другие наши каналы
Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен "работает - не трож". Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Читать: https://habr.com/ru/articles/983430/?utm_campaign=983430
@a_cup_of_java | Другие наши каналы