Чашечка 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
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 | Другие наши каналы
DockerHub удаляет старые JDK теги — ваши пайплайны могут быть под угрозой

Если вы используете openjdk:<tag образы в CI/CD и пулите их с Docker Hub, Вам следует оперативно перепроверить свои пайплайны: мейнтейнеры DockerHub удалили ряд устаревших тегов без громких анонсов. Некоторые сборки уже не работают — пострадали сотни пользователей.
В данной новости, эксперт сообщества Spring АйО Михаил Поливаха рассказывает, что произошло, почему это проблема, и какие есть альтернативы.


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

@a_cup_of_java | Другие наши каналы
Как Uber упростил обработку запросов в Apache Pinot

По материалам InfoQ: Neutrino заменили лёгким прокси Cellar и включили Multi‑Stage Engine Lite Mode. Это упрощает слои, вводит лимиты на leaf-стадиях, повышает предсказуемость, изоляцию и наблюдаемость для внутренних аналитических запросов.

Подробности: https://www.infoq.com/news/2025/11/uber-pinot-query-redesign/

#en

@a_cup_of_java | Другие наши каналы
Grails 7.0: релиз под эгидой Apache
По данным InfoQ, Apache Grails 7.0 вышел с поддержкой JDK 17+, совместимостью со Spring Boot 3.5 и Jakarta EE 10, улучшениями для Micronaut и GORM, возможностью отключать Micronaut автоконфигурацию; GORM для Neo4j временно удалён.

Подробности: https://www.infoq.com/news/2025/11/grails-7-released/

#en

@a_cup_of_java | Другие наши каналы
1
Релиз Explyt Spring: SQL, Docker-Compose, Debugger

Всем привет! На связи команда Explyt Spring. Недавно у нас вышел очередной релиз, который включает несколько важный обновлений: поддержа SQL, очередные улучшения для Spring Debugger, поддержка Spring пропертей для Docker-compose файлов и многое другое. Если вам интересны подробности то добро пожаловать под кат!


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

@a_cup_of_java | Другие наши каналы
Как решать LeetCode? Легко! Нужно просто…

Просто знать 15 важных паттернов, которые помогут облегчить тернистый путь в решении алгоритмических задач. Про эти паттерны мы и расскажем в этой статье.

На сегодняшний день алгоритмические задачи встречаются не только в FAANG. Многие компании и на отечественном рынке всё чаще вводят дополнительный алгоритмический этап на собеседовании – и знание алгоритмов становится отличным «плюсиком» не только при трудоустройстве, но и в решении повседневных задач. Взглянем подробнее на эти паттерны.
Подробнее о паттернах

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

@a_cup_of_java | Другие наши каналы
2
Работа с JDK Flight Recorder (JFR) из командной строки: инструмент для профилирования без графического интерфейса

Экосистема Java богата качественными инструментами для разработчиков, и средства профилирования и диагностики - не исключение.

Существуют коммерческие профилировщики, есть встроенные инструменты профилирования в ведущих IDE. А если вам важна свобода (или цена является важным фактором), open source сообщество также готово предложить достойные альтернативы.

JFR (JDK Flight Recorder) один из ключевых инструментов для диагностики работы Java приложений, который можно эффективно использовать из командной строки. Приёмам работы с этим инструментом я хочу посвятить данную статью.


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

@a_cup_of_java | Другие наши каналы
Отдаём в Open Source CRM для работы с сообщениями в Telegram

Наша поддержка с давних пор испытывала неудобство при отслеживании обращений пользователей в группе комьюнити в Телеграм. Когда сразу много пользователей одновременно пишут на разные темы в одном месте, легко упустить какое то из сообщений. Оно просто уплывает в ленте, пока мы разбираемся с другими обращениями.

Мы написали небольшую CRM. В ней все обращения пользователей должны раскладываться по своим тредам, ничего не теряется и удобно хранится служебная информация.

Код проекта CRM мы выкладываем в открытый доступ на GitHub, как Open Source.


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

@a_cup_of_java | Другие наши каналы
Мой домашний Kubernetes, или DevOps-«песочница» на домашнем ПК

Наряду с развитием искусственного интеллекта, облачные вычисления названы основополагающей технологией будущего. Наверное, многие слышали, как важны и ценны знания Docker и Kubernetes в современном мире ИТ. Но как подступиться к этим технологиям, если ранее с ними вы не сталкивались?

Я всегда считал, что серьезные вещи начинаются с малого, но это малое должно быть самой сутью интересующего феномена. Предлагаю разобраться, как работает полнофункциональное веб-приложение, реализующее современный стек технологий и, конечно же, развёрнутое в кластере Kubernetes. Сделав первый шаг, вы всегда сможете продолжить свой путь исследования, заниматься самообразованием и отладкой разнообразных приложений, реализующих различные подходы, в том числе и самые современные.


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

@a_cup_of_java | Другие наши каналы
OpenJDK: что попадёт в JDK 26 — обзор InfoQ

InfoQ рассказывает о переводе в Target JEP 529 (Vector API, 11-я инкубация), JEP 516 (AOT object caching для Any GC) и JEP 500 (запрет мутации final через рефлексию), о превью JEP 526/530/524 и расписании релиза (GA 17 марта 2026).

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

#en

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