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

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

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

Другие каналы: @tproger_channels
Download Telegram
RAG: как объединить генеративные модели и бизнес-данные

В статье Маттео Росси показано, как на базе Spring Boot, Spring AI, MongoDB Atlas и OpenAI построить гибкий pipeline для точных контекстных ответов и прикладных решений в финансах, здравоохранении и поддержке клиентов.

Подробности: https://www.infoq.com/articles/rag-with-spring-mongo-open-ai/

#en

@a_cup_of_java | Другие наши каналы
1
Обзор Spring: RC для Boot, Security, GraphQL и других

По материалам InfoQ: вышли первые релиз-кандидаты множества модулей Spring — Boot 4.0, Security 7.0, GraphQL 2.0, Integration, Modulith, Batch, AMQP, Kafka, Pulsar и др. Коротко о фичах, апгрейдах зависимостей и важных исправлениях.

Подробности: https://www.infoq.com/news/2025/10/spring-news-roundup-oct20-2025/

#en

@a_cup_of_java | Другие наши каналы
1
JEP 401: Value классы и объекты

Команда проекта Valhalla выпустила early-access сборку JDK с полной реализацией JEP 401 — value-классы и объекты теперь можно попробовать в действии! В новом переводе от команды Spring АйО — примеры использования, объяснение концепции, сравнение производительности с обычными объектами и практические советы для разработчиков.


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

@a_cup_of_java | Другие наши каналы
🔥1
BDD: Как заставить тесты говорить на одном языке с бизнесом (и перестать платить за недопонимание)

Привет! Меня зовут Анатолий, я ведущий разработчик в ITFB Group, и сегодня я хочу рассказать о том, как можно превратить скучные тесты в главного специалиста по продукту.

Знакомо: ваши JUnit-тесты проходят, CI/CD зелёный, все довольны. Но тут приходит бизнес-аналитик и спрашивает: "А этот сценарий проверяет, что будет, если клиент с рейтингом 700 запросит 10 миллионов?"

Вы начинаете лихорадочно копаться в коде, пытаясь найти тот самый @Test... А что если бы ответ на этот вопрос лежал не в глубинах Java-кода, а в красивом, читаемом файле, который понятен всем — от тимлида до заказчика?


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

@a_cup_of_java | Другие наши каналы
Java: недельный обзор — CPU Oracle, Grails 7, Micronaut, Hazelcast, LangChain4j
По InfoQ: выпущен октябрьский Critical Patch Update, BellSoft обновил Liberica JDK; GA Grails 7.0, Micronaut 4.10, Hazelcast 5.6, LangChain4j 1.8 и бета Open Liberty. Читайте статью InfoQ.

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

#en

@a_cup_of_java | Другие наши каналы
Что еще могёт курсор

Началось все весьма прозаично, клиент позвонить к нам в техподдержку и спросил «а как бы мне поставить ваш софт но в другую схему БД». Собственно вопрос проще некуда — мы писали на спринге, а значит лезем в application.yml и ставим схему. Но, клиент не из тупых и уже это попробовал — не сработало.

Начинаем разбираться что сломалось и кто виноват. Первым делом ДевОпс повторяет кульбиты клиента и выдает простой вердикт: «В 151 миграции лажа». Я открываю и: «батюшки родный, да это же лосенок явное указание схемы!»


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

@a_cup_of_java | Другие наши каналы
От REST к gRPC и GraphQL: современный подход к API

В статье сравним REST, gRPC и GraphQL с точки зрения производительности, гибкости и архитектуры микросервисов. Покажем, как объединить GraphQL и gRPC для фронтенда и бэкенда, чтобы получить мощный API без лишнего трафика и задержек.


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

@a_cup_of_java | Другие наши каналы
Ошибки, которые инженеры совершают при код-ревью

Код-ревью стало ключевым этапом в разработке: генерация кода с помощью LLM упростилась, а вот проверка его качества по-прежнему требует инженерной экспертизы.

В новом переводе от команды Spring АйО эксперты сообщества подробно и на собственном опыте рассказали про нюансы код-ревью.


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

@a_cup_of_java | Другие наши каналы
Шаблоны и принципы деления кода на классы

За 9 лет разработки ПО  я периодически выступал в  роли ментора и сталкивался с проблемой, которую недавно озвучил начинающий программист после онлайн-курсов:

«Не понимаю, как делить код на классы».

Оказалось, на курсах учили языку, но не программированию. А ведь язык — лишь инструмент, и принципы проектирования кода универсальны для разных языков программирования.

Я показал студенту несколько готовых шаблонов классов, чтобы он мог сразу применить, и хотел дать методичку по теории, но под рукой не оказалось ни заметок, ни статей, ни книг. Поиск в интернете и запросы к ИИ выдавали только материалы по ООП и принципам SOLID, которые мало касались нужной темы. Выходило так, что вся нужная для такой методички информация, лежит у меня в голове.

Так и родилась идея написать эту статью.


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

@a_cup_of_java | Другие наши каналы
Final должен быть значением по умолчанию для Java-классов

А что, если вам сказали бы, что класс без final — это ошибка проектирования? Что возможность наследования должна быть исключением, а не правилом? В новом переводе от команды Spring АйО автор предлагает радикальную идею: все классы должны быть final по умолчанию.

⚠️ Статья была написана ещё до появления Kotlin`а. Цель перевода данной статьи – поднять запылившийся на полке вопрос в дизайне API: "Нужно ли оставлять API открытым по-умолчанию для внешнего расширения?"


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

@a_cup_of_java | Другие наши каналы
Компактный runtime-DI для Java: JSR-330, Class-File API и миграция за 2 дня

Когда начинал разработку системы многомерного анализа данных временных рядов Dimension-UI, для внедрения зависимостей в исходном коде решил использовать Dagger 2. Практический опыт показал, что для приложений с большим количеством динамически создаваемых объектов инверсия зависимостей, реализованная в Dagger 2, не подходит.

Да, создание графа зависимостей в compile-time — это, во-первых, очень быстро, и, во-вторых, удобно: получаешь сообщения об ошибках конфигурации уже при компиляции.

Но накладные расходы на сопровождение всего этого хозяйства – прямо скажем, это боль.

Чтобы реализовать scope-зависимости, приходится писать и поддерживать много инфраструктурного кода внутри объектов, куда мы внедряем зависимости. В Dagger 2 такая реализация, во-первых, «загрязняет» код, а во-вторых, серьезно осложняет тестирование. Изолировать методы удобным способом не получается: в тестах нужно писать очень много кода, чтобы прокинуть необходимый контекст и корректно мокировать внешние зависимости. Я туда просто не полез — покрывал unit- и UI-тестами только базовую функциональность, где были Singleton-зависимости.

Даже с одними Singleton’ами приходится поднимать отдельную тестовую инфраструктуру для запуска приложения в тестовом режиме. Это не просто неудобно — это очень затратно по времени. Если сравнить усилия, которые надо потратить на реализацию тестирования подобного функционала в Spring и Dagger… Сравнение будет не в пользу Dagger. В целом я начал думать о переходе на runtime-генерацию графа зависимостей.


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

@a_cup_of_java | Другие наши каналы
Почему ваш AI-ассистент пишет «вырвиглазный» код, и как это исправить грубой силой

Технически это называется «неконсистентный». А по-человечески — боль. Делюсь рабочим, хоть и неидеальным, способом её лечения.


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

@a_cup_of_java | Другие наши каналы
Насколько Java быстрая?

Некоторые считают Java раздутым монстром, а Rust — чемпионом производительности. Но что, если взглянуть на современную Java с Vector API и многопоточностью?

В новом переводе от команды Spring АйО посмотрим на запуск масштабной симуляции частиц и сравним результаты. Правда ли, что бывалая Java всё ещё умеет удивлять?

Сравнение performance-а языков всегда было холиварной темой. Рекомендуем расценивать статью как приглашение к конструктивной дискуссиии, а не как призыв к конкретному действию.


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

@a_cup_of_java | Другие наши каналы
Новое в Java: JDK 26, Spring RC, Quarkus и др. OpenJDK выдвинул ряд JEP для JDK 26 (Structured Concurrency, Vector API, AOT с Any GC, защита final, примитивы в паттернах). Вышли RC Spring 7 и Spring Data, а также обновления Quarkus, Gradle, JReleaser, Seed4J и Jakarta EE 12.

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

#en

@a_cup_of_java | Другие наши каналы
Как подружить Hamcrest с POJO

При разработке автотестов нередко приходится сталкиваться проверками POJO, которые могут вернуться в ответах от API или быть сущностями в базе данных. Если вы также используете библиотеку Hamcrest, то наверняка сталкивались с проблемой, как лучше и оптимально использовать мэтчеры с POJO? Посмотрим, что предлагает Hamcrest из коробки, и познакомимся с тремя библиотеками, которые используют разные подходы.


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

@a_cup_of_java | Другие наши каналы
Хобби айтишников — Андрей Фёдоров о паркуре, DnD и жизни в Люксембурге

Java-разработчик Андрей Фёдоров рассказывает, как паркур вылечил спину, D&D подарил друзей разных возрастов, а кулинария стала творческим экспериментом. Почему хобби — ключ к балансу в IT, как переезд вдохновил на новые увлечения и почему в маленьком королевстве так легко социализироваться через спорт и настолки.

Читать: «Хобби айтишников — Андрей Фёдоров о паркуре, DnD и жизни в Люксембурге»

@a_cup_of_java | Другие наши каналы
💊1
Voices: быстрый локальный TTS для Java 17+

InfoQ: open-source проект Henry Coles (v0.0.8) позволяет генерировать речь локально без внешних API. Использует ONNX Runtime, поддерживает словари и OpenVoice, CPU/GPU-ускорение и примеры для Maven/Gradle. Подробнее на GitHub/InfoQ. Тренды в инфраструктуре и AI

Короткий обзор: 'ae' нацелилась на Terraform; Cloudflare объявила платформу с нулевыми egress‑сборами; Netflix рассказывает о повышении отказоустойчивости БД с WAL; AI‑агенты становятся движками исполнения; RAG на Spring Boot с MongoDB Atlas и OpenAI; стратегия обработки ошибок.

Подробности: https://www.infoq.com/news/2025/11/voices-text-to-speech/

#en

@a_cup_of_java | Другие наши каналы
Apache Camel и его место в экосистеме интеграционных решений

Сегодня поговорим не просто об инструменте, а о фундаменте, на котором строятся современные интеграционные платформы. Речь пойдет об Apache Camel – открытом интеграционном фреймворке, который лежит в основе таких решений, как Red Hat Fuse, Talend и нашей собственной платформы от «Диасофт» – Digital Q.Integration.

Важно подчеркнуть: мы не используем экспериментальные или нишевые стеки. Наша платформа построена на проверенной, зрелой и широко распространенной связке: Apache Camel и Spring Boot. Это дает стабильность, совместимость с корпоративной инфраструктурой и возможность глубоко интегрироваться с экосистемой Spring – от безопасности до мониторинга и распределенной трассировки.


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

@a_cup_of_java | Другие наши каналы
Создать мобильное приложение с zero опыта: рассказываю, как создавал свой первый проект на Java

Помню, как будто это было вчера. На уроке раздается голос учителя: «Чтобы перейти в 11-ый, каждому из вас нужно реализовать свой проект. Творчество приветствуется!». Кажется, вот оно: знак сделать то, о чем уже давно подумывал, — создать собственное приложение! Защищаю идею перед учителем, получаю одобрение. Впереди целый учебный год, казалось бы, у меня гора времени. Вот только я никогда в жизни не разрабатывал мобильные приложения…

Меня зовут Ваня, я Python-разработчик, а в свободное время пишу для блога MWS. Сегодня решил поделиться историей-воспоминанием, как в школьные времена приступил к разработке своего первого в жизни мобильного приложения, а потом дорабатывал его уже в университете. Тут не будет истории успеха в духе «я монетизировал приложение и разбогател» и каких-то уникальных лайфхаков. Зато покажу на своем примере, что для создания приложения в качестве эксперимента не нужно знать все языки программирования и обладать суперскилами в разработке. Главное — не бояться пробовать. А еще те, кто только в начале своего пути, смогут научиться на моих ошибках и учесть детали, которые в свое время не учел я. Приступим!


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

@a_cup_of_java | Другие наши каналы
3❤‍🔥1😁1
Java Digest #30

Всем привет! 👋👋👋👋👋

Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

Октябрь выдался интересным: JDK 26 приносит поддержку HTTP/3, Vector API снова в инкубации, а Swing внезапно обзаводится своим DatePicker — да, 2025-й, а Swing жив! Разработчики обсуждают Leyden и GPU-ускорение для Java-ИИ, а Oracle чинит 15 уязвимостей. В статьях свежие оптимизации ZGC, разбор виртуальных потоков, Jackson 3, Kafka Queues и немного философии про «хороший вкус» в разработке. А под конец релизы, от JUnit 6 до Spring 6.2.12. Заваривайте кофе, обновляйтесь до JDK 25 и читайте. Поехали 🚀


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

@a_cup_of_java | Другие наши каналы
MapStruct: как безобидный метод портит весь маппинг

При работе с MapStruct возникает соблазн добавлять небольшие вспомогательные методы прямо в ваш mapper и вызывать их через expression. Однако если такой метод оперирует довольно общими типами (например, String -> String), MapStruct может обнаружить его и применить к другим полям того же типа — даже если вы этого не планировали.


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

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