Чашечка Java – Telegram
Чашечка Java
8.91K subscribers
3.84K photos
12 videos
56 files
6.25K links
Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Download Telegram
Как приручить iText8: превращаем HTML в PDF без седых волос

Представьте ситуацию: пятница, вечер, до релиза осталось два дня. Заказчик внезапно вспоминает, что «было бы неплохо генерировать договоры в PDF». Знакомо?

Я оказался в похожей ситуации год назад. Задача казалась тривиальной: взять HTML-шаблон счёта, подставить данные и получить красивый PDF. «Часа на два работы», — подумал я. Как ошибался...


Читать: https://habr.com/ru/articles/975930/?utm_campaign=975930

@a_cup_of_java | Другие наши каналы
Структура кода в папке Domain по DDD

В слое Domain 90% проектов с тактическим DDD забыли о самом главном. Сегодня мы вспомним то о чем забыли или узнаем то чего не знали.


Читать: https://habr.com/ru/articles/975936/?utm_campaign=975936

@a_cup_of_java | Другие наши каналы
Как сократить расходы на токены и повысить точность LLM

Когда количество доступных LLM инструментов (tool-ов) разрастается, традиционные подходы к tool calling становятся непрактичными — утилизация токенов улетает ещё до начала общения. К тому же, модели становится сложнее выбрать нужный набор tool-ов для решения проблемы.

В новом переводе от команды Spring АйО читаем о паттерне Tool Search Tool, предложенном Anthropic и реализованном в Spring AI с помощью ToolSearchToolCallAdvisor. Он позволяет LLM динамически находить нужные инструменты по мере необходимости, экономя до 64% токенов и повышая точность.


Читать: https://habr.com/ru/companies/spring_aio/articles/976178/?utm_campaign=976178

@a_cup_of_java | Другие наши каналы
1
Вебхук слева

Рассказываю про одну простую, но эффективную реализацию вебхуков, не требующую тотальной переделки вашей замечательной системы и/или сетевой инфраструктуры.

~300 строк кода.


Читать: https://habr.com/ru/articles/976296/?utm_campaign=976296

@a_cup_of_java | Другие наши каналы
15 полезных команд терминала macOS для новичков

Команды терминала macOS для новичков: поиск файлов, очистка диска, управление процессами, скрытые настройки системы. Синтаксис и примеры для каждой команды.

Читать: «15 полезных команд терминала macOS для новичков»

@a_cup_of_java | Другие наши каналы
Kafka для начинающих: работа с оффсетами на практике

Как работать с оффсетами в Kafka на практике, используя Spring Boot?
Разбираем проблемы и их решения на примере интернет-магазина.

Простым языком и с примерами кода о режимах коммитов, проблемах с транзакциями и надёжных паттернах.


Читать: https://habr.com/ru/articles/965218/?utm_campaign=965218

@a_cup_of_java | Другие наши каналы
Live Reload на JVM

В этой статье я хотел бы обобщить всё, что мы знаем про Hot/Live Reloading на JVM, и далее показать, как я пришел к реализации универсального Live Reloading решения для любых веб-приложений на JVM.

Вкратце, в этой статье мы:

🔹 Попробуем сформулировать, какие виды релоадинга бывают.
🔹 Подробно рассмотрим, какие реализации существуют на JVM.
🔹 И немножко обсудим детали реализации универсального решения, и что вообще к нему привело.


Читать: https://habr.com/ru/articles/974004/?utm_campaign=974004

@a_cup_of_java | Другие наши каналы
Java-итоги недели — Spring Tools 5, TornadoVM и обновления

По обзору InfoQ: вышли Spring Tools 5.0, milestone‑релизы Spring AI и Shell, TornadoVM 2.1, декабрьский релиз Payara, Hibernate ORM 7.2, Spock 2.4 и ряд патчей для JDK, Micronaut и Tomcat.

Подробности: https://www.infoq.com/news/2025/12/java-news-roundup-dec08-2025/

#en

@a_cup_of_java | Другие наши каналы
Как устроен Amplicode MCP: от кувалды к скальпелю

Эта статья дополняет предыдущую. Там мы зафиксировали проблемы. Здесь разберем, что именно мы сделали со стороны Amplicode, чтобы агент начал работать как опытный software engineer: опираясь на структуру проекта, детерминированные генераторы и понятные высокоуровневые операции.

Если коротко, в первой статье было несколько основных болей:

– LLM часто обучены на слегка устаревшем мире, и это вылезает в мелочах (и не только).
– Галлюцинации и нехватка контекста идут рука об руку: «кажется, в этой библиотеке должен быть такой метод» и пошло-поехало.
– Переизбыток контекста тоже зло: агент прочитал половину репозитория, потратил деньги, запутался, а потом еще и забыл начало чата.
– Типичный агентный workflow: «сгенерил простыню кода, оно не компилится, давай чинить, ой теперь сломалось другое».

И на этом фоне появляется логичный вопрос: а можно сделать так, чтобы агент работал не с сырыми файлами, а с моделью проекта и сущностями фреймворка? Чтобы он не гадал, где DTO, как принято именовать контроллеры и какие миграции у вас используются?

Собственно, Amplicode MCP про это.


Читать: https://habr.com/ru/companies/haulmont/articles/976872/?utm_campaign=976872

@a_cup_of_java | Другие наши каналы
Обнаружение взаимоблокировок на JVM с помощью Fray

Команда Spring АйО подготовила перевод про Fray — инструмент для обнаружения и воспроизведения ошибок многопоточности в Java-программах. Основанный на научных исследованиях и написанный на Kotlin, Fray использует технику теневой блокировки для выявления взаимоблокировок и других проблем синхронизации. Он уже доказал свою эффективность на таких проектах, как Kafka, Flink и Lucene.


Читать: https://habr.com/ru/companies/spring_aio/articles/976924/?utm_campaign=976924

@a_cup_of_java | Другие наши каналы
Value Object: как победить примитивную одержимость без DDD

Кажется, что оборачивать BigDecimal и String в отдельные классы — это overengineering и преждевременный DDD. Но именно из-за этих «лишних» типов в прод не пролезают посылки в ПВЗ, проценты внезапно превращаются из 0.8 в 80, а деньги теряют валюту и смысл. В статье на реальном примере логистики разбираем, как один небольшой record Weight и несколько аккуратных Value Object’ов наводят порядок в бизнес-логике: инварианты перестают жить в комментариях, проверки перестают дублироваться, а код начинает читаться как текст предметной области. Без внедрения полного DDD, без религиозного фанатизма — только практические шаги.
Как избавиться от одержимости примитивами

Читать: https://habr.com/ru/companies/cdek_blog/articles/975426/?utm_campaign=975426

@a_cup_of_java | Другие наши каналы
1
Новый инструмент AWS: Transform Custom
InfoQ: AWS представила AWS Transform Custom — AI‑агент для массовой модернизации и рефакторинга кода: обновления Java/Node/Python, миграции рантаймов, архитектурные правки. Обещают до 5× ускорения и интеграцию в пайплайны; вызвал дискуссию о точности.

Подробности: https://www.infoq.com/news/2025/12/aws-transform-technical-debt/

#en

@a_cup_of_java | Другие наши каналы
Как мы построили рекламную платформу с нуля

Каждая успешная рекламная кампания начинается с технологий, которые остаются за кадром. Но именно от них зависит, увидит ли целевой пользователь нужное объявление, сможет ли рекламодатель быстро настроить кампанию и получить точный отчет, и не сгорит ли его бюджет из-за мошенников или технических сбоев. Когда мы начинали проект AdWebs, нам нужно было создать платформу, которая справится с тремя ключевыми вызовами: высокая нагрузка, безопасность данных и безупречный пользовательский опыт. Вот как мы это сделали.


Читать: https://habr.com/ru/articles/977384/?utm_campaign=977384

@a_cup_of_java | Другие наши каналы