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

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

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

Другие каналы: @tproger_channels
Download Telegram
JEP 500: final станет по‑настоящему final

По InfoQ: в JDK 26 вводят запрет/ограничение на изменение final-полей через deep reflection — по умолчанию выдаётся предупреждение; доступны режимы warn/deny/allow и JFR-событие jdk.FinalFieldMutation для аудита.

Подробности: https://www.infoq.com/news/2025/12/jdk26-final-fields-reflection/

#en

@a_cup_of_java | Другие наши каналы
Spring Boot наконец получил нативную поддержку gRPC

Забудьте о сторонних стартерах и костылях — Spring gRPC 1.0 GA уже здесь. Теперь можно строить высокопроизводительные RPC-сервисы с Protocol Buffers прямо из коробки, без плясок с бубном.

В новом переводе от команды Spring АйО рассмотрим пошаговую миграцию со старых решений, генерацию кода из .proto, и сравнение с тем, как это работает в Quarkus.


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

@a_cup_of_java | Другие наши каналы
🔥8
Java: 15 самых популярных докладов 2025 года на YouTube

От базовой прокачки производительности до работы с ИИ и данными. Все доклады доступны бесплатно на YouTube

Читать: «Java: 15 самых популярных докладов 2025 года на YouTube»

@a_cup_of_java | Другие наши каналы
👍2
CQRS на практике: как проектировать системы, которые не ломаются под нагрузкой

Привет, Хабр! Я сегодня хочу разобрать одну из самых мощных, но часто неправильно понимаемых архитектурных концепций — CQRS. Если вы уже переросли уровень «просто писать CRUD» и задумываетесь о том, как строить системы, которые будут масштабироваться и оставаться производительными — эта статья для вас.


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

@a_cup_of_java | Другие наши каналы
Java-дайджест: главные релизы и обновления

В обзоре InfoQ: GlassFish 8.0 milestone, TornadoVM 2.2, Spring Shell 4.0 RC1, бета WildFly 39, релизы Hibernate и Kotlin 2.3, сборки JDK 26/27, патчи Vert.x, Micronaut и Helidon — кратко о важных новинках для Java-разработчиков.

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

#en

@a_cup_of_java | Другие наши каналы
Архитектурный квиз: костыль или элегантное решение?

Отказоустойчивый и масштабируемый энтерпрайз невозможно спроектировать по книжкам. Одно и то же решение может фигурировать и в best, и в bad practice — и, что забавно, иногда переходит из одного списка в другой. Ещё недавно монолиты считались злом, а теперь снова в моде.

Хотите посмотреть, как знакомые паттерны ведут себя в реальном контексте?

Чтобы показать это на практике, я собрала три инженерных кейса. Каждый оформлен в формате детективного квиза: роль, фабула, вопросы на размышление, разбор и выводы. Попробуйте разобраться в проблеме, пройти тест и определить: где костыль, где инженерный компромисс, а где — настоящая best practice.


Читать: https://habr.com/ru/companies/oleg-bunin/articles/969692/?utm_campaign=969692

@a_cup_of_java | Другие наши каналы
Spring Boot — жажда скорости. CDS и разгон на старте

Данная статья посвящена практическому изучению механизмов Class Data Sharing и AppCDS. В ней рассматривается, какие именно компоненты ускоряются CDS в HotSpot JVM, почему для Spring-приложений зачастую оказывается недостаточно использования «CDS по умолчанию», а также каким образом можно собрать .jsa-архив для приложения - как в локальной среде, так и при работе с Docker.

Отдельное внимание уделено теоретическим аспектам JIT-компиляции и tiered compilation, а также практической части с измерениями времени запуска. В качестве дополнения рассматривается влияние использования Spring AOT, а также переход на Java 25 и применение Spring AOT Cache.


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

@a_cup_of_java | Другие наши каналы
Инсайды Саймона Риттера (InfoQ): что нового в OpenJDK и JCP
В подкасте обсуждаются работа JCP Expert Group, шестимесячные релизы, Generational Shenandoah, улучшения JDK Flight Recorder, Project Leyden и CRaC (AOT и снапшоты), изменения в JDK 25/26, паттерн‑матчинг и Compact Object Headers.

Подробности: https://www.infoq.com/podcasts/latest-open-java-development-kit/

#en

@a_cup_of_java | Другие наши каналы
Замещение Pega, или Реинжиниринг онлайн

Импортозамещение крупных зарубежных платформ является одной из приоритетных задач для российского бизнеса. Сбер успешно мигрировал систему с иностранной платформы Pega на собственную разработку Platform V. Опыт реализации проекта станет полезным руководством для руководителей проектов, инженеров, аналитиков, архитекторов и специалистов, работающих над крупными ИТ-решениями.
Изгнание Пегаса - реинжениринг

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

@a_cup_of_java | Другие наши каналы
Как ускорить MongoDB в Java: profiling, explain(), индексация и антипаттерны

Команда Spring АйО подготовила материал о том, почему «быстрый запрос в MongoDB» — это не магия, а дисциплина: индексы, форма запроса, проекции, explain(), профайлер и наблюдаемость в Java/Spring Boot. Разбираем, как отличать IXSCAN от COLLSCAN, где чаще всего прячутся антипаттерны (skip-пагинация, тяжёлые $regex/$nin, findAll), и как выстроить измеримый цикл оптимизаций от Atlas/Compass до Micrometer.


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

@a_cup_of_java | Другие наши каналы
Путевые заметки о знакомстве со Spring Data R2DBC

Привет, Хабр! Меня зовут Каненков Александр, я backend-разработчик в Домклик. Не так давно я резко и с головой погрузился в мир реактивного программирования и очень заинтересовался этой темой. Хочу поделиться кратким введением в Spring Data R2DBC, зачем это нужно, как начать использовать и какие преимущества даёт. Мы разработаем небольшое приложение, добавим flyway и напишем пару тестов.


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

@a_cup_of_java | Другие наши каналы
Spring MCP, лучший HTTP-клиент и поддержка MyBatis

Amplicode 2025.3 — релиз про новые фичи для Spring Data JDBC, улучшения для HTTP-клиента Connekt (между прочим, убийца Postman), поддержку MyBatis и новые возможности по работе с инфраструктурой вокруг Kubernetes и Terraform.

Ниже — ключевые изменения по блокам.


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

@a_cup_of_java | Другие наши каналы
Весь год вы носили худи и джинсы… Хватит!

Заглядывайте к нам в виртуальную примерочную и выбирайте себе идеальный скин для встречи Нового года!

Делитесь в комментариях, какой скин вам выпал 👀

Реклама
🌭1
Разделяй и тестируй: @DataJpaTest и @WebMvcTest для быстрых тестов Spring Boot

Привет, Хабр! Cегодня рассмотрим, как ускорить интеграционные тесты в Spring Boot с помощью специальных slice аннотаций.

Начнём с того, почему вообще тесты могут быть медленными. Используя @SpringBootTest, мы просим Spring Boot поднять весь контекст приложения для каждого тестового класса. У нас доступны все бины, но часто все это избыточно. Например, хочется протестировать контроллер, а Spring загружает ещё и базу данных, и сервисы, и шлёт запросы к Kafka. В результате простой тест метода контроллера может запускаться несколько секунд, пока поднимется веб‑сервер, инициализируется база, подтянутся все классы.

Эту проблему осознали и добавили так называемые test slice‑аннотации. Все простоб грузим не весь контекст, а только срез приложения, например, только веб‑слой или только слой доступа к данным. Spring Boot содержит готовые slice‑аннотации для основных слоёв: @WebMvcTest для веб, @DataJpaTest для JPA‑репозиториев, и ещё пачку для других случаев.

Рассмотрим на примерах двух интересных слайса: @DataJpaTest и @WebMvcTest.


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

@a_cup_of_java | Другие наши каналы
Почему Java Streams тормозят, даже когда ядер много

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


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

@a_cup_of_java | Другие наши каналы
🤪6
ИИ-помощники на маркетплейсе GigaIDE: обслуживание кода

В прошлой статье мы рассказали, какие группы плагинов есть на маркетплейсе GigaIDE. Их количество постоянно растёт — как за счёт open source-плагинов, ранее доступных у JetBrains, так и за счёт собственных разработок. Именно оригинальным плагинам мы и посвятим цикл статей.

Начнём с группы ИИ-помощников — плагинов, которые используют возможности GigaCode для автоматической работы с кодом. Все они бесплатны, но для работы требуют активированный GigaCode.


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

@a_cup_of_java | Другие наши каналы
Эволюция схемы данных в AVRO, как меняться без проблем?

Привет, Хабр! Меня зовут Владислав, я занимаюсь разработкой расчётных систем в Мир Plat.Form. Два года назад мы перешли от взаимодействия через REST к использованию Kafka между системой Фронт-Офиса, в которой хранятся данные об авторизованных транзакциях, и системой Бэк-Офиса, ответственной за выполнение клиринга. При этом мы реализовали собственный сериализатор для работы с AVRO сообщениями. Более подробно о причинах выбора такого подхода я рассказал в статье.

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

Но в прошлом году перед нами встала задача внедрения новой интеграции, что могло повести за собой частые изменения в модели данных, из-за чего нам пришлось пересмотреть подход к работе с AVRO сообщениями.

В этой статье я расскажу:

1. Что такое эволюция данных и почему она критична для Kafka при работе с AVRO сообщениями.

2. Какие варианты решения мы рассмотрели.

3. Как реализовали поддержку изменений схемы.

4. Подводные камни, с которыми столкнулись, и как их обошли.


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

@a_cup_of_java | Другие наши каналы
2
Тред-дампы и Project Loom (виртуальные потоки)

С появлением виртуальных потоков в Java благодаря Project Loom, параллельное программирование стало проще, а производительность — выше. Однако за этой простотой кроются новые вызовы для инструментов отладки и анализа. Как читать тред-дампы, если их теперь тысячи — или миллионы? Какие средства реально помогают найти взаимные блокировки и аномалии в асинхронном коде? И как IntelliJ IDEA справляется с этим в новых реалиях? Рассмотрим в новом переводе от команды Spring АйО.


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

@a_cup_of_java | Другие наши каналы
Почему я перешел на Dagger Components (вместо Dagger Android)

Всем привет, меня зовут Анатолий Спитченко, я Android-разработчик в ПСБ. В этой статье расскажу про свои эксперименты с Dagger. Наткнувшись в проекте на огромный модуль Application (11,5 Мб), я стал искать альтернативы обертке Dagger Android. Поэкспериментировал с продвигаемым Google Dagger Hilt, а также с более старым подходом — Dagger Components. Последний, как ни странно, позволяет немного сократить Application и в целом имеет больше плюсов, чем минусов. Подробности под катом.


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

@a_cup_of_java | Другие наши каналы
Новый open source Java коннектор для Tarantool: практика с примерами кода

VK Tech открывает исходный код коннектора Tarantool Java EE и переименовывает его в Tarantool Java SDK. Дистрибутив станет доступен в Maven Central, что упростит интеграцию с Java-приложениями в корпоративных средах.

Меня зовут Артём Дубинин, я старший программист в VK Tech. Я разрабатываю коннекторы к Tarantool, а также участвую в разработке различных продуктов в VK Tech. Однажды я понял, что материала про совместную работу Java и Tarantool очень мало и из-за этого может казаться, что совмещать их сложно. Но на самом деле это не так — и иногда альтернативы Tarantool могут быть даже сложнее во взаимодействии. Поэтому я и решил написать эту статью.

Цель статьи — показать через код, что Tarantool реально совместить с Java без больших полотен кода, а итеративно с небольшими сниппетами (не считая java импортов и xml 😄). Мы будем использовать такие, чтобы каждый мог попробовать провести у себя на компьютере эти эксперименты и понять, что Tarantool легок в использовании.


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

@a_cup_of_java | Другие наши каналы
1
Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор

Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше».

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


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

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