Чашечка Java
Ir al canal en Telegram
Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
Mostrar más8 458
Suscriptores
-224 horas
-167 días
-6030 días
Archivo de publicaciones
8 456
Microsoft выпустил бесплатный курс по Model Context Protocol с практикой на Python, C# и Java
Microsoft запустил бесплатный практический курс по протоколу Model Context Protocol (MCP) с примерами на Python, C#, Java и TypeScript для разработки LLM-приложений и серверов MCP.
Читать: «Microsoft выпустил бесплатный курс по Model Context Protocol с практикой на Python, C# и Java»
@a_cup_of_java | Другие наши каналы
8 456
Архитектура BFF (Backend for Frontend): зачем нужна прослойка
Что такое архитектура BFF. Показываем, зачем нужна прослойка Backend for Frontend. Рассматриваем преимущества и основные нюансы ✔ Tproger
Читать: «Архитектура BFF (Backend for Frontend): зачем нужна прослойка»
@a_cup_of_java | Другие наши каналы
8 456
Как я поучаствовал в разработке Camunda 8 или пример типичной ошибки в многопоточном коде
Зимой 2024 года мне довелось поучаствовать в разработке проекта на Camunda 8. Сразу оговорюсь: проект в итоге реализовали на другом движке. Тем не менее, команда успела сделать стенд, прогнать тесты и замерить производительность.
В этой статье я расскажу об одном эпизоде, когда мне пришлось исправить библиотеку spring-zeebe из Camunda 8, отвечающую за обвязку Job Worker на Spring.
Одной из моих задач было отладить процесс, используя локальные интеграционные тесты с Docker и библиотекой Testcontainers. Мы создали простой процесс, вызывающий наш Job Worker, подлежавший отладке. Сразу столкнулись с плавающей ошибкой: иногда тест проходил успешно, иногда — нет. Несколько тасков работали корректно, однако первый периодически игнорировался без видимых ошибок. Изначально подозревали проблему в собственном коде, проверяли конфигурацию Job Worker, благодаря чему узнали много нового о Camunda 8.
Читать: https://habr.com/ru/articles/983902/?utm_campaign=983902
@a_cup_of_java | Другие наши каналы
8 456
n8n: установка, настройка и интеграция с Python, Node.JS и PHP
Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.
Читать: «n8n: установка, настройка и интеграция с Python, Node.JS и PHP»
@a_cup_of_java | Другие наши каналы
8 456
DeepSeek в Intellij Idea через плагин Continue
Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен «работает — не трож». Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Читать: https://habr.com/ru/articles/983430/?utm_campaign=983430
@a_cup_of_java | Другие наши каналы
8 456
Микросервисная архитектура: от монолита к гибкой системе
«Монолит или микросервисы» — вопрос, который до сих пор вызывает споры в IT. СТО Сервисной цифровой платформы в Газпромбанке делится личным опытом перехода к микросервисной архитектуре, разбирает реальные кейсы и объясняет, почему однозначного ответа не существует.
Читать: «Микросервисная архитектура: от монолита к гибкой системе»
@a_cup_of_java | Другие наши каналы
8 456
Корпоративный RAG как MCP-сервис: подключаем кодовую базу к IDE
В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.
Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.
Мы столкнулись с этим в явном виде и сформулировали задачу так: дать разработчикам и системным аналитикам быстрый и актуальный поиск по всей кодовой базе компании с возможностью диалога через универсального агента.
В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.
Читать: https://habr.com/ru/articles/983424/?utm_campaign=983424
@a_cup_of_java | Другие наши каналы
8 456
Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов
Эпохи развития программирования в России и в мире. Какие стадии прошли разработчики и к чему пришли в настоящий момент. Прогнозы на будущее.
Читать: «Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов»
@a_cup_of_java | Другие наши каналы
8 456
Field vs Constructor Injection в Java: ошибка объектного дизайна или вопрос синтаксиса?
Знаю, знаю... Прочитав заголовок, хочется голосом волка из мультфильма «Жил был пёс» сказать — «Шо, опять?». Ведь битва этих подходов давно закончилась и разработчики Spring уже поставили точку.
Но недавняя публикация в одном довольно крупном Telegram‑канале заставила меня вернуться к этому вопросу. В качестве главных аргументов против field injection там приводились лишь сложность изоляции в тестах и неудобство создания экземпляров для unit‑тестов.
И хотя с этими пунктами не поспоришь, у многих разработчиков и не только начинающих, остаются вопросы: каковы реальные последствия для самого объекта? Можно ли считать его полноценным сразу после создания
new? И почему все современные рекомендации так настаивают на конструкторах?
Поиск ответов показал мне, что аргумент о тестах лишь верхушка айсберга. В глубине, куда я Вас сегодня приглашаю заглянуть, скрываются куда более фундаментальные вопросы принципов объектно‑ориентированного дизайна, гарантий Java Memory Model и уважения к жизненному циклу объекта.
Читать: https://habr.com/ru/articles/983344/?utm_campaign=983344
@a_cup_of_java | Другие наши каналы8 456
Комментарии в коде: зло или спасение ?
Когда нужны комментарии в коде, а когда без них лучше. Объясняем на примерах, как писать понятные и полезные комментарии
Читать: «Комментарии в коде: зло или спасение ?»
@a_cup_of_java | Другие наши каналы
8 456
Конечные автоматы (FSM) Просто о сложном
Что такое конечный автомат (FSM) и зачем он нужен программисту? Эта статья простыми словами объясняет концепцию FSM, его компоненты, преимущества и реализацию на JavaScript с примерами. Разберём логику состояний, событий и переходов без сложной теории.
Читать: «Конечные автоматы (FSM) Просто о сложном»
@a_cup_of_java | Другие наши каналы
8 456
Ограничь меня полностью! Или история одной ма-а-а-аленькой фичи
Бывало ли у вас так что задача на час максимум в результате занимает целый рабочий день или даже больше?
Почему так происходит? Нужно ли тестировать сторонние библиотеки? Есть ли польза от типичных задач для собеседований? Когда "костыль" вполне рабочее решение?
Частные ответы на все эти, казалось бы не связанные, вопросы попытаемся найти в непридуманной истории фичи, которая изначально казалась на 5 минут, а вышло...
Читать: https://habr.com/ru/articles/983196/?utm_campaign=983196
@a_cup_of_java | Другие наши каналы
8 456
7 курсов, с которых реально стартуют в IT в 2025
Хотите начать карьеру в IT с нуля? Рассказываем, какие курсы в 2025 реально помогают попасть в IT, даже без опыта и тех.образования.
Читать: «7 курсов, с которых реально стартуют в IT в 2025»
@a_cup_of_java | Другие наши каналы
8 456
Java Digest — Новогодний спецвыпуск
Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Читать: https://habr.com/ru/companies/tbank/articles/983164/?utm_campaign=983164
@a_cup_of_java | Другие наши каналы
8 456
Как встроить распознавание документов в Android: пошаговое руководство
Разбираемся, как быстро добавить возможность распознавания документов в Android. Пошаговое руководство по встраиванию Smart Document Engine.
Читать: «Как встроить распознавание документов в Android: пошаговое руководство»
@a_cup_of_java | Другие наши каналы
8 456
Инженерия создания микросервиса 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 | Другие наши каналы
8 456
Под капотом многопоточной синхронизации в 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 | Другие наши каналы
