Чашечка 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
В поисках идеального стека для Enterprise проектов: почему Java плюс MACH

На протяжении многих лет команда Compo Soft успешно создавала eCommerce‑решения, клиентские порталы, PIM‑системы и другие решения малого и среднего бизнеса. Для этих задач было достаточно привычного стека на PHP и связанных с ним технологий. Когда в 2018 компания приняла стратегическое решение о выходе в сегмент Enterprise — встал вопрос о новом стеке. Им стала Java. В этой статье решили поделиться своим пониманием и опытом — почему сделан такой выбор, и почему PHP «не вывозит» Enterprise‑решения


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

@a_cup_of_java | Другие наши каналы
От запахов к стабильности: рефакторим unit-тесты на JUnit

(Статья - результат совместной работы с Натальей Поляковой)

"Запахи" в тестах — это полезные сигналы, которые важно уметь распознавать, чтобы писать удобные и легко поддерживаемые тесты. Мы уже писали про "запахи" в E2E-тестах; сейчас же рассмотрим распространённые ошибки, которые возникают при написании модульных тестов.

Хоть написание модульных тестов и является обычной практикой для программистов, тестовый код по-прежнему часто рассматриваются как код второго сорта. Между тем здесь, как и в любой области программирования, стоит знать паттерны и антипаттерны.

В книге Джерарда Месароша о паттернах в xUnit есть полезные главы о «запахах тестов», и в интернете можно найти много других полезных материалов по этой теме. Нам же показалось интересным подойти к этой проблеме не со стороны теории, а со стороны практики: какие частые ошибки можно встретить в тестах, как их исправлять, и почему именно тесты нужно писать так, а не иначе?

Мы разберём всё это на примере: напишем один модульный тест на JUnit, и по ходу дела будем исправлять возникающие ошибки. Код примера доступен на GitHub.


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

@a_cup_of_java | Другие наши каналы
Что нового в JUnit 6: ключевые изменения и улучшения

Спустя восемь лет после JUnit 5 выходит новая версия популярного фреймворка. JUnit 6 — это не просто обновление, а переход к современной экосистеме Java и Kotlin. В новом переводе от команды Spring АйО узнаем, что новая версия требует Java 17+, унифицирует версии компонентов, удаляет deprecated API и внедряет поддержку JSpecify для строгого null-safety.


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

@a_cup_of_java | Другие наши каналы
Много спрашиваю и откладываю встречи на последний момент: мой опыт прохождения собеседований

Любое собеседование — это стресс, особенно если ты джун без опыта в небольшом городе. Никто не застрахован от неудачных интервью, токсичных работодателей и собственных провалов. К счастью, всё это можно пережить.

Привет! Меня зовут Ярослав, я бэкенд-разработчик в компании «Синимекс» и ревьюер на курсе «Java-разработчик» в Яндекс Практикуме. Я расскажу, как проходил первые собеседования и что помогло мне получить офферы после двух интервью из трёх.


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

@a_cup_of_java | Другие наши каналы
Дорожная карта Java backend-разработчика: c Junior до Middle

Привет! Меня зовут Бромбин Андрей. За последние годы у меня накопилось достаточно материалов, практик и ошибок — иногда красивых, но всё же ошибок. Этого хватило, чтобы собрать маршрут до грейда Middle.

Это не «большая книга всего на свете для джуна» и не выдуманный субъективный маршрут. Мне удалось привлечь к созданию этой статьи ведущих разработчиков крупных российских компаний — от каждого я получил честный фидбэк: где перегнул, где недосказал, чего не хватает на практике. Приоритеты были сверены, лишнее вычищено и оставлено только то, что реально двигает.

Признаться, честно: тут и для меня нашлось, что подтянуть.
Выстроить маршрут

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

@a_cup_of_java | Другие наши каналы
Виртуальные потоки в Java: эволюция, практика, подводные камни

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки упирались в I/O, как и зачем появились виртуальные потоки, что пошло не так в Java 21, что исправили в JDK 24–25, а также когда виртуальные потоки необходимы, а когда — лучше от них отказаться.


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

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

Неоднократно встречал мнение, что Golang не слишком хорош для сложной бизнес-логики на больших проектах. Я попробовал найти комментарии в сети по теме сложностей с реализацией бизнес-логики на Golang, составил из них список и попросил ИИ проверить их на актуальность. Решение сделать из этого отдельную статью возникло в результате спонтанной переписки по данной теме. Для большей объективности дополнительно проведено сравнение с Java. Кроме этого замечу, что, безусловно, оба языка достойны для того, чтобы их использовали в разработке современных сложных программных систем, что, собственно, уже было доказано временем. Статья в целом носит информационный характер и побуждает скорее к более глубокому изучению современных языков программирования, чем дает законченные ответы.


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

@a_cup_of_java | Другие наши каналы
Как задать базовый URL в Spring Boot — полный обзор
Статья объясняет, как установить base URL: через application.properties (spring.data.rest.basePath / server.servlet.context-path), Java-конфигурацию, System.setProperty, переменные окружения, аргументы командной строки, RepositoryRestConfigurer, WebServerFactoryCustomizer и пример получения URL через ServletUriComponentsBuilder. Топ бесплатный курс Spring Boot для Java-разработчиков

В статье рассказывается об одном из лучших бесплатных курсов по Spring Boot: обзор содержания, ключевые темы и ссылки на материалы по REST, Hibernate и сопутствующим технологиям. Полезно для практики и подготовки к интервью. Подборка: Spring Boot, Spring Cloud и практические гайды для Java-разработчика. Коллекция статей с руководствами и решениями: отличия Spring Boot vs Spring Cloud, новые фичи Spring 6/Boot 3, REST и безопасность, интеграционное тестирование, загрузка файлов и частые ошибки.

Подробности: http://www.java67.com/2022/09/how-to-set-base-url-for-rest-in-spring.html

#en

@a_cup_of_java | Другие наши каналы
Как правильно обрабатывать ошибки в Spring Boot REST
В статье объясняется, зачем возвращать понятные HTTP‑коды и сообщения в Spring Boot REST, как обрабатывать дубликаты и ошибки аутентификации и почему важно логирование для поддержки и быстрого устранения проблем.

Подробности: http://www.java67.com/2023/04/handling-rest-exception-in-spring-boot.html

#en

@a_cup_of_java | Другие наши каналы
Spring Boot vs Spring Cloud: в чем разница?
Статья объясняет роли Spring Boot (быстрая разработка, автоконфигурация, создание микросервисов) и Spring Cloud (распределённая конфигурация, обнаружение сервисов, балансировка, circuit breaker) и когда применять каждую технологию. Большая коллекция: Java, Spring, облака и Data
Каталог статей охватывает Java, Spring Boot, микросервисы, DevOps, облачные сертификации, Big Data, машинное обучение, алгоритмы и подготовку к собеседованиям. В архиве 2025 — сотни практических руководств и примеров кода. Обзор архива блога Soma Sharma

В материале показано количество публикаций по годам и месяцам, доступны ссылки на политику конфиденциальности и условия, форма подписки и указаны авторские права (Soma Sharma, 2021–2025).

Подробности: http://www.java67.com/2023/02/difference-spring-boot-vs-spring-cloud.html

#en

@a_cup_of_java | Другие наши каналы
Как выбрать application.properties, application.yml или application.json в Spring Boot?

В статье кратко объясняют: properties — привычный формат, YAML удобен для иерархий и читается лучше, JSON возможен, но в Spring Boot не поддерживается по умолчанию. Приведены примеры синтаксиса и рекомендации. Подготовка к Spring и Hibernate — ключевые ресурсы

Анонс: На блоге JavaRevisited собрана обширная подборка интервьюных вопросов, книг, гайдов и курсов по Spring (Boot, MVC, Security), Hibernate и Struts — всё для подготовки к собеседованиям и сертификации. Архив блога Soma Sharma: посты 2012–2025

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

Подробности: http://www.java67.com/2023/02/difference-between-application.html

#en

@a_cup_of_java | Другие наши каналы
Мониторинг истории активных сессий в базах данных

Сегодня проверим Dimension-UI на задаче мониторинга истории активных сессий в базах данных Oracle, PostgreSQL, ClickHouse и MS SQL Server в режиме реального времени.

История активных сессий (Active Session History, ASH) - очень удобный способ получения информации о работе БД в кратком виде. Когда важно максимально быстро отследить, что происходит с системой в настоящее время, оценить развитие текущей ситуации - это рабочая активность или начало каких-либо проблем - в том числе, через быстрый просмотр baselines в недавнем прошлом системы и сравнить их с текущими данными.

Изначально, данный подход был разработан и применен в СУБД Oracle начиная с 10g версии. Архитектурно в Oracle это выглядит как плоская таблица в памяти V$ACTIVE_SESSION_HISTORY, в которую с определенным интервалом (стандартно 1 секунда, но его значение можно изменять) записывается состояние каждой активной сессии: идентификатор сессии, SQL-запроса, процесса операционной системы, текущий статус сессии - в работе или ожидании получения доступа к ресурсу, статистики потребления памяти и проч.. Периодически информация из таблицы в памяти сбрасывается на диск в таблицу DBA_HIST_ACTIVE_SESS_HISTORY репозитория рабочей нагрузки AWR.
(трафик 29 Мб)

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

@a_cup_of_java | Другие наши каналы
2
Распределенные вычисления в Apache Ignite 3

В статье разбираются возможности распределённых вычислений в Apache Ignite 3. Покажу, как развернуть кластер в Docker, задеплоить собственные джобы и сравнить Ignite 3 с предыдущей версией. Затронем новые возможности Ignite как полноценной распределённой платформы, а не просто in-memory кэша.


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

@a_cup_of_java | Другие наши каналы
Как Java Boys победили в ИИ-хакатоне МТС True Tech Hack 2025 с проектом на Spring AI и ChatGPT

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

Меня зовут Рустам Курамшин, я работаю в IT более 10 лет, и мне как бэкенд-разработчику феномен LLM сначала казался больше игрой, чем реальным инструментом разработки. Все изменилось, когда я вырвался из проектов, предоставляющих опосредованный доступ к сервисам известных языковых моделей, и начал пользоваться официальными сервисами. Последние пару лет я активно использую ChatGPT для обучения, разработки и просто чтобы пообщаться о жизни.

А еще LLM помогает мне и моей хакатонной команде Java Boys уверенно побеждать на хакатонах. Опытом нужно делиться, так что ловите историю одной из наших побед. Расскажу, как мы с моими тиммейтами разработали AI-агента на Spring AI и API ChatGPT и выиграли полмиллиона на хакатоне МТС True Tech Hack 2025.


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

@a_cup_of_java | Другие наши каналы
3👍1
Защита MCP серверов со Spring AI

Протокол Model Context Protocol (MCP) стремительно развивается, и вопросы его безопасности становятся всё актуальнее. Чтобы упростить реализацию защиты MCP-серверов в проектах на Spring AI, был запущен инкубационный проект spring-ai-community/mcp-security. В новом переводе от команды Spring АйО рассмотрим, как защитить MCP-сервер с помощью OAuth2 или API-ключей, а также как развернуть собственный MCP-совместимый Spring Authorization Server.


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

@a_cup_of_java | Другие наши каналы
Как настроить CORS в Spring Boot + Spring Security

В статье на Java67 описаны шаги с примерами кода: добавление конфигурации CorsConfig, создание фильтра, регистрация в настройках безопасности, тестирование и рекомендации по безопасной и динамической настройке CORS. Большой каталог курсов и туториалов для Java-разработчиков

Подборка курсов, туториалов и материалов по Spring, Hibernate, Java, DevOps, Docker, SQL и Linux; есть разделы с вопросами для собеседований и сертификатами — полезно и новичкам, и профессионалам для систематизации знаний. Подборка материалов по Spring Boot. В публикации сайта собраны практические руководства: топ-вопросы для собеседований, настройка таймаутов, исправления ошибок с бинами и REST-контроллерами, примеры WebClient и работа с ресурсами — полезно Java-разработчикам.

Подробности: http://www.java67.com/2023/07/how-to-configure-cors-in-spring-boot.html

#en

@a_cup_of_java | Другие наши каналы
Как настроить несколько источников данных в Spring Boot — краткое руководство
В статье показано, как в application.properties задать несколько источников, создать DataSource‑бины, настроить JPA или JdbcTemplate для каждой БД, управлять транзакциями, тестировать и оптимизировать соединения через пул. Подборка курсов и материалов для Java-разработчиков

На сайте Javarevisited — большая коллекция курсов, туториалов и ресурсов: Java, Spring, Hibernate, DSA, DevOps, Docker, базы данных и подготовка к интервью. Полезно для самообучения и подготовки к сертификациям. Подборка решений для Spring Boot

Кратко: на блоге Soma Sharma собрана подборка практических материалов — решение ошибок (EmbeddedWebApplicationContext, DialectResolutionInfo), как печатать SQL, различия Mockito.mock/@Mock, примеры WebClient, Thymeleaf и настройка таймаутов.

Подробности: http://www.java67.com/2023/07/how-to-configure-two-data-sources-in.html

#en

@a_cup_of_java | Другие наши каналы
Как Spring Boot принимает и возвращает JSON
В статье показано, как с помощью @RestController, @RequestBody и Jackson автоматически сериализовать и десериализовать POJO на примере сущности Stadium, а также как настроить поведение Jackson через properties или бин. Как настроить Jackson2ObjectMapper в Spring MVC

В статье объясняется, как изменить поведение Jackson2ObjectMapper в Spring MVC и Spring Boot, настроить сериализацию/десериализацию JSON и избежать типичных проблем с примерами и практическими советами для Java‑разработчиков. Всё для Java и разработки — обзор блога

Блог Javarevisited содержит сотни материалов по Java, Spring Boot, микросервисам, интервью, курсам и веб-разработке, а также темы от TypeScript и Vue до Unity и UX. Полезно для подготовки и обучения.

Подробности: http://www.java67.com/2023/04/how-to-accept-and-produce-json-as.html

#en

@a_cup_of_java | Другие наши каналы
Как читать настройки из application.properties в Spring Boot

В статье на Java67 показаны три способа получения значений: @Value, @ConfigurationProperties и через Environment. Примеры с properties и YAML, доступ к datasource и логированию — полезно для Java‑разработчиков. Полный каталог тем по Java и IT

Краткий обзор страницы с сотнями тегов и материалов: Java, Spring, Spring Boot, микросервисы, базы данных, фронтенд, ML, DevOps и подготовка к интервью. Полезный указатель по архивам и ресурсам для самообучения. Архив и сервисы сайта Soma Sharma
На странице перечислён архив публикаций по годам и месяцам, указаны политика конфиденциальности и условия, есть раздел популярных постов, подписка по email и заметка об авторских правах Soma Sharma 2021–2025.

Подробности: http://www.java67.com/2022/12/how-to-access-value-defined-in.html

#en

@a_cup_of_java | Другие наши каналы
Цепочка гаджетов в Java и как небезопасная десериализация приводит к RCE?

В этой статье мы узнаем, что такое chains of gadget, и рассмотрим на примерах (с картинками), как неаккуратная десериализация через нативные Java механизмы может привести к удалённому выполнению кода.


Читать: https://habr.com/ru/companies/pvs-studio/articles/955210/?utm_campaign=955210

@a_cup_of_java | Другие наши каналы
Чанковая загрузка артефактов CI/CD: оптимизация передачи файлов

Всем привет! Меня зовут Бороздин Филипп, я разработчик платформы GitFlic.

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

В данной статье я расскажу вам как мы оптимизировали процесс загрузки артефактов CI/CD используя чанковую загрузку.


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

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