Чашечка Java
8.57K subscribers
3.88K photos
13 videos
56 files
6.33K links
Лучшие материалы по Java на русском и английском

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

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

Другие каналы: @tproger_channels
Download Telegram
Шардировать или не шардировать

Если ваш сервис рассчитан на миллиарды пользователей, то несомненно возникнет вопрос о масштабировании.

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

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

@a_cup_of_java | Другие наши каналы
Пара советов по покрытию тестами проекта на SpringBoot

Уверен многие сталкивались с ситуацией когда тесты на проекте разрастаются бесконтрольно, проходят долго, а любое изменение в коде приводит в нескольким дням отладки и исправления падающих тестов.

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


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

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

Делимся нашими статьями про мобильную разработку: iOS, Android, Flutter, SwiftUI, Jetpack Compose, публикация в сторах и советы по доступности — всё в одном месте.

Читать: «Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы»

@a_cup_of_java | Другие наши каналы
Cервисы в Android

Под ОС Android можно разрабатывать приложения различного уровня сложности: от простых оконных игр до довольно сложных системных приложений. Достаточно распространенным типом приложений являются сервисы, и в этой статье мы поговорим о том, какие сервисы бывают и как их можно написать.


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

@a_cup_of_java | Другие наши каналы
🟢 Важные темы на QCon London 2025

На третий день QCon London 2025 обсуждались ключевые темы: политика AMQP, где Джон О'Хара рассказал об эволюции стандартов сообщений. Также обсуждались серверные базы данных и симбиоз архитектуры и безопасности, без которого системы теряют устойчивость.

Подробности: https://www.infoq.com/news/2025/05/day-three-qcon-london-2025/

#en

@a_cup_of_java | Другие наши каналы
Как автотесты и GitHub Actions помогают улучшать свои пет-проекты

Привет. Сегодня поговорим о том, как я в последние 2 недели поправил свои пет-проекты, а также исправил серьёзные ошибки благодаря автотестам и налаженному CI/CD через GitHub Actions.


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

@a_cup_of_java | Другие наши каналы
1👍1
Программирование без условных операторов

В программировании на C-подобных языках (и не только) частенько приходится использовать условные операторы, такие как If, else, switch — и особенно часто их используют новички, потому что их понимание и работа достаточно проста (в итоге, могут рождаться, иной раз, поистине монструозные конструкции — грешен, практиковал:-))).

К слову, многие отмечают, что последний оператор switch им приходилось видеть только на разнообразных олимпиадных задачках или школьных уроках, в то время как в реальной работе применяется он достаточно редко (а вы его используете, и насколько часто?).

Тем не менее, как бы там ни было, существует целый ряд иных подходов, который позволяет избавиться от этих операторов, что само по себе довольно любопытно, поэтому, рассмотрение этих подходов и видится интересным.
Давайте исследуем некоторые из них…


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

@a_cup_of_java | Другие наши каналы
👎5
Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен

Разбираем типичные проблемы при разработке компонентов. Изучаем, какие архитектурные подходы вложены в паттерн. Реализуем паттерн на примере компонента Аккордеон и смотрим на плюсы и минусы подходов

Читать: «Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен»

@a_cup_of_java | Другие наши каналы
Java Digest #24

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

В этом выпуске рассказываем о новых JEPs в OpenJDK, которые вошли в статус Candidate. Спойлер Applet API — RIP. В этом месяце вышли сразу IntelliJ IDEA 2025.1 и OpenIDE — эта битва будет легендарной!

Мы добавили краткий обзор JavaOne’25. И, как обычно, собрали полезные статьи: как избавиться от Flaky-тестов с помощью JMina, как ZGC аллоцирует память в хипе. Сделали подборку материалов о паттернах и методологиях разработки и разбавили размышлениями о том, как писать хороший код и оставаться профессионалом.
Читать свежий выпуск

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

@a_cup_of_java | Другие наши каналы
👍3
JDK 25 упрощает Java: методы main теперь могут быть нестатичными, введены компактные исходники и новый класс java.lang.IO для удобного ввода-вывода. Эти нововведения облегчают обучение и создание простых программ, сохраняя совместимость со стандартным инструментарием.

Подробности: https://www.infoq.com/news/2025/05/jdk25-instance-main-methods/

#en

@a_cup_of_java | Другие наши каналы
😱7💯2
Новое в экосистеме Java: четыре ключевых JEP для JDK 25, восьмой релиз Spring AI 1.0.0, обновления Quarkus 3.22.0 и первый кандидат LangChain4j 1.0.0. WildFly вошёл в Commonhaus Foundation, поддерживая развитие открытого ПО. Следите за изменениями!

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

#en

@a_cup_of_java | Другие наши каналы
7 запросов к разработке вызывающих и смех и слезы

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

Итак, начну с собственного реноме. Меня зовут Богдан, я работаю в одном достаточно большом отечественном финтеке вот уже 7-й год и добрую половину из них занимаю позицию Java-лида в одной из интеграционных команд. За такое (относительно) длительное время в энтерпрайзе периодически приходят требования на разработку, от которых хочется или плакать, или смеяться, а то и всё вместе. Происходит это по самым разным причинам, которые мы сегодня касаться не будем. Скажу лишь, что никого не осуждаю, не пытаюсь никого принизить и наверняка сам генерировал нечто схожее, о чем пойдет речь ниже. Также стоит учесть, что мой бэкграунд преимущественно бэкендово-интеграционный, соответственно, и кейсы будут из этой области и контекста. Ну а дальше — по кейсам, по тем 7 кейсам, когда прочитав требования, внутри что-то скукоживается от отвращения либо раздается улыбка во всё лицо — у кого как.

Немного глобального контекста: проект, вокруг которого будут описаны курьезные запросы, — интеграционная шина данных, напичканная самой разной интеграционной логикой, Java-приложение, состоящее из невообразимого количества SOAP/REST-методов, шедуллеров и всяческих очередей.


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

@a_cup_of_java | Другие наши каналы
Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа

Нужен ли сеньору второй язык программирования? Опыт и выводы разработчика с 18 годами стажа — когда и зачем изучать новые языки

Читать: «Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа»

@a_cup_of_java | Другие наши каналы
2💯2
Пример забытого «наивного» алгоритма

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

Разработчики зачастую пишут код (скелет), используя наивные алгоритмы и не используя валидаторы (предполагая изменить код позже либо ошибочно предположив что объем данных будет небольшим).

Не так давно попался один тикет с жалобой на зависание in-house приложения которое обрабатывает adobe pdf документы (печатает в png изображение для web клиентов).

Приложение использует библиотеку apache pdfbox.

Запустил тест с проблемным pdf документом в котором использовались формы – компьютер “пошел на взлет”. Похоже на длинный цикл, хорошо пошел.

Жду пару минут, стало интересно.

Начался тротлинг CPU (перегрев, рабочая коробочка у меня небольшая, мобильная, с воздушным охлаждением и быстро нагревается при большой длительной нагрузке).


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

@a_cup_of_java | Другие наши каналы
Join таблиц в реальном времени на Apache Flink

Статья посвящена реализации join-операций в системах потоковой обработки данных на базе Apache Flink. Рассматриваются основные подходы к объединению потоков в реальном времени, включая inner join, а также паттерны дедупликации. Уделено внимание использованиюKeyedCoProcessFunction для построения отказоустойчивых и масштабируемых join-пайплайнов. Работа ориентирована на инженеров, строящих real-time витрины и сложные трансформации на Flink в продакшене.


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

@a_cup_of_java | Другие наши каналы
Где искать проблему в проде: сравнение профилирования с eBPF и BitDive

eBPF vs BitDive: Сравнение решений для системного и прикладного профилирования

Разбираем разницу между eBPF и BitDive: системное профилирование против глубокого анализа Java-приложений. Что выбрать для продакшена?


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

@a_cup_of_java | Другие наши каналы
ООП — это скам

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

После прочтения большинства этих статей и нескольких лет кодинга на C# я заявляю: «ООП - это один большой обман. Никто не понимает, что это такое. Люди просто говорят какие-то умные термины, их собеседники с умным видом кивают, хотя на деле трактуют эти же термины совершенно по-разному».

И вот почему.


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

@a_cup_of_java | Другие наши каналы
💊7👍3
Синтетика подвела: как реальные данные делают unit-тесты надёжными

Введение

В мире разработки программного обеспечения надёжность и качество кода напрямую зависят от эффективности тестирования. Unit-тесты призваны проверять поведение отдельных компонентов без влияния внешних факторов. Традиционно в них используют синтетические (искусственно сгенерированные) данные, однако на практике всё чаще оказывается, что такие тестовые наборы не отражают реальных сценариев и приводят к ложному ощущению «зелёного» покрытия. В этой статье мы разберём, почему использование реальных данных при написании unit-тестов значительно повышает их ценность, и объясним, какие недостатки несут синтетические данные.


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

@a_cup_of_java | Другие наши каналы
МCP в Java: новый уровень интеграции с ИИ

Java-сообщество активно внедряет Model Context Protocol (MCP) — открытый стандарт для интеграции контекста с крупными языковыми моделями. Инструменты на базе JBang упрощают запуск MCP-серверов, расширяя возможности разработчиков и обогащая бизнес-приложения.

Подробности: https://www.infoq.com/news/2025/05/mcp-within-java-ecosystem/

#en

@a_cup_of_java | Другие наши каналы
JavaScript: большой гайд от Tproger

Гайд по JavaScript. Топовые и полезные статьи с теорией, инструментами и фреймворками. Практика для новичков и продвинутых программистов. Tproger

Читать: «JavaScript: большой гайд от Tproger»

@a_cup_of_java | Другие наши каналы
🌚1
От пет-проекта к книге про Spring

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


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

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