Чашечка 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
Не LLM едиными: генерируем юнит-тесты из реального исполнения на лету

Представьте себе: вы отлаживаете новый баг в сложном многослойном приложении (например, на Spring). Чтобы воспроизвести проблему, приходится взаимодействовать со всей системой end-to-end: отправлять запрос на эндпоинт или что-то кликать в UI. Юнит-теста, который бы изолировал нежелательное поведение до уровня злополучного сервиса или утилиты, нет. А хотелось бы, чтобы он был: во-первых, воспроизводить баг было бы проще (особенно если UI кликает QA, а не вы), а во-вторых, его потом можно было бы легко превратить в регрессионный и улучшить стабильность системы.

Тем временем все данные, нужные для воспроизведения бага в изоляции, есть. В окне отладчика видно, что приходит в метод, и в каком состоянии находится сервис перед тем, как все пойдёт не так. Мы в Explyt RnD решили, что нечего добру пропадать, и научились перехватывать это состояние, а потом генерировать юнит-тест, который в точности его воспроизводит.

Сегодня расскажу о пройденном исследовательском пути, о том, как попробовать нашу экспериментальную фичу в плагине для IntelliJ IDEA, и о том, что у неё под капотом (спойлер: не только LLM).


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

@a_cup_of_java | Другие наши каналы
3
WebAssembly 3.0 добрался до браузеров: 64-битная память, сборщик мусора и настоящие исключения

WebAssembly 3.0 уже работает в браузерах: 64-битная память, полноценный GC, система исключений и новые инструменты для языков

Читать: «WebAssembly 3.0 добрался до браузеров: 64-битная память, сборщик мусора и настоящие исключения»

@a_cup_of_java | Другие наши каналы
Андроид всё еще не готов к RAW-видео

Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое “смогло”. Но не стоит спешить, друзья!
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.


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

@a_cup_of_java | Другие наши каналы
Чем хорош Postgres 18?

PostgreSQL 18 вот-вот выйдет, и это не просто минорное обновление, а настоящий прорыв для разработчиков и администраторов БД. В новом переводе от команды Spring АйО рассмотрим ключевые новинки — асинхронный I/O для ускорения чтения, поддержка UUID версии 7 с улучшенной сортировкой, skip scans в B-tree индексах, виртуальные вычисляемые столбцы и даже OAUTH 2.0 для аутентификации. Всё это делает Postgres ещё более быстрым, гибким и современным.


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

@a_cup_of_java | Другие наши каналы
👍1
Нейросети в Spring-разработке: убираем рутину, а не интеллект

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


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

@a_cup_of_java | Другие наши каналы
2
Обмен событиями распределённого приложения на Java

Сегодня я хочу рассказать вам об одном из вариантов доставки событий для распределённого приложения на Java.

Это доставка событий через БД, в которой хранится состояние распределённого приложения.


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

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

Есть такой термин — лейтенант военного времени. Если коротко, то «теории мало, а практики много». Вот и я, к примеру, из таких недоучек практиков. Программирование для меня было вторичным умением, а не основным, скорее хобби и дополнение к основному занятию. Я не собирался быть программистом но в итоге стал им.


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

@a_cup_of_java | Другие наши каналы
Что нового в Gradle 9.0.0?

В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.


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

@a_cup_of_java | Другие наши каналы
Тим Маккиннон, Стив Фриман, Филип Крейг «Эндотестирование: юнит-тестирование с мок-объектами»

Именно с публикации этой статьи в 2000 году берет свое начало формирование лондонской школы тестирования, также известной как «мокистская» школа. В ней авторы не только вводят ключевые концепции мок-объектов и эндотестирования, но и закладывают методологический фундамент подхода, принципиально изменившего практику юнит-тестирования — подхода, основанного на явном определении взаимодействий между объектами, замене зависимостей и тестировании поведения системы изнутри.


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

@a_cup_of_java | Другие наши каналы
Как мы помогли Альфа-Банку перевести CRM в отделениях на российские Java-контейнеры

Перевести CRM-систему с тысячами пользователей на полностью российский стек — звучит как вызов? Мы тоже так подумали. Но теперь можем точно сказать: это возможно, и более того — это работает.

Команда Альфа-Банка с нашей поддержкой перенесла CRM-платформу, которую используют сотрудники в отделениях по всей стране, на Axiom JDK и контейнеризовала её с помощью Axiom Runtime Container.

Высоконагруженная система ежедневно обслуживает более 20 000 сотрудников банка, работает в сотнях отделений — и всё это без внешних зависимостей и с полной технологической автономией.


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

@a_cup_of_java | Другие наши каналы
👍4
Почему памятники надо ставить тем, кто автоматизирует MS Word

DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.

Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.

Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.

Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.

Внутри статьи - моя история создания этой библиотеки.


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

@a_cup_of_java | Другие наши каналы
👍2
Как мы внедряли Dynatrace в банке для мониторинга Kafka, БД и Java/C++ сервисов

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

Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.


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

@a_cup_of_java | Другие наши каналы
Весенние обновления Spring: релизы и безопасность

Вышли третьи milestone-версии Spring Boot, Security, GraphQL, Integration и других модулей с новыми функциями и улучшениями. Также закрыты важные уязвимости в Spring Framework и Security. Подробнее об изменениях ищите в официальных заметках.

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

#en

@a_cup_of_java | Другие наши каналы
Оптимизация производительности запросов в OLAP‑СУБД: цели, методы и практика

Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.


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

@a_cup_of_java | Другие наши каналы
🆒2
Как Web3 меняет разработку веб-приложений: от серверов к блокчейну

Поговорили с экспертом и узнали, где Web3 даёт практическую пользу разработчикам: сравниваем подходы, исследуем рынок вакансий и особенности новой реальности.

Читать: «Как Web3 меняет разработку веб-приложений: от серверов к блокчейну»

@a_cup_of_java | Другие наши каналы
Новое в мире Java: выпущен JDK 25 с 18 новыми функциями, обновлен GraalVM для JDK 25, а Oracle объявил о выводе GraalVM из релизного цикла Java. Также вышли обновления для LangChain4j, Gradle, JBang и других важных инструментов. Подробнее в обзоре.

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

#en

@a_cup_of_java | Другие наши каналы
1
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом

Привет! Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.


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

@a_cup_of_java | Другие наши каналы
🔥2
Утилита Find и регулярные выражения

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

Регулярки освоить нетрудно. Буквально за пару часов можно получить почти средний уровень владения и научиться читать и писать выражения для поиска ip-адресов, e-mail, html-тегов, телефонных номеров, дат и прочих несложных конструкций. Я думаю, все это вам знакомо, но на всякий случай в конце статьи я добавил несколько ссылок для изучения.

Я уже прошел «курс молодого бойца» по регуляркам, написал свою, вставил в find, и она не сработала. Но пойдем по порядку.


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

@a_cup_of_java | Другие наши каналы
2🔥2
10 VSCode расширений, которые реально повышают продуктивность

Топ-10 расширений VSCode для повышения продуктивности: форматирование, тестирование API, управление проектами и многое другое. Ускорьте свою разработку с лучшими инструментами.

Читать: «10 VSCode расширений, которые реально повышают продуктивность»

@a_cup_of_java | Другие наши каналы
2
JVM: Барьеры, которые подходят любому GC

В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные GC-барьеры мешают гибкому выбору сборщика мусора.

Статья содержит интересное решение — GC-независимые барьеры загрузки, которые можно «пропатчить» в рантайме под конкретный GC, обеспечивая совместимость без переписывания кода.


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

@a_cup_of_java | Другие наши каналы
🔥3
Как работает функция map() в Java 8: с примерами преобразования списков. В статье объясняется, как метод map() из Stream API позволяет применять функцию к каждому элементу коллекции, упрощая обработку данных и заменяя классические циклы. Стримы и коллекции в Java: разбор использования static import для упрощения записи методов, таких как collect(toList()). Обсуждаются примеры и частые вопросы по работе с потоками в Java 8, а также полезные курсы и ресурсы для углубленного изучения. Вопросы для интервью по Java и Spring: от Core Java и SQL до Spring MVC и микросервисов. В статье представлены ключевые темы и аннотации для подготовки к собеседованиям. Полезный ресурс для тех, кто хочет систематизировать знания и успешно пройти интервью.

Подробности: http://www.java67.com/2015/01/java-8-map-function-examples.html

#en

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