Чашечка 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
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 | Другие наши каналы
До свидания, Kafka, или graceful shutdown на Spring Boot для Kafka

В этой статье я немного объясню важность graceful shutdown и расскажу как сделать плавное завершение работы твоего Spring Boot приложения, которое взаимодействует с Kafka.


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

@a_cup_of_java | Другие наши каналы
Новое в мире Java: библиотека JBang Jash упрощает выполнение внешних процессов и комманд через удобный и понятный API. Теперь работа с процессами стала проще, эффективнее и чище — без громоздкого кода и ручного управления потоками. Подробнее на GitHub.

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

#en

@a_cup_of_java | Другие наши каналы
🔥3🌚1
Денежные переводы в SQL

Переводим деньги в SQL

В этом посте я покажу распространённые стратегии обработки переводов между счетами, сосредоточив внимание на согласованности данных, уровнях изоляции и компромиссах.
Мы будем использовать упрощённые SQL и Java фрагменты с комментариями.


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

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

В данной статье приводится решение проблемы построения витрин данных в реальном времени с помощью Apache Flink. Рассказывается 2 часть подробной реализации решения этой задачи. В данной части рассмотрена проблема учета сообщений на удаление и частично операций update , в связи с чем достигается полная консистентность данных СИ с СП при условии гарантии, что ключ join условия не обновляется.


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

@a_cup_of_java | Другие наши каналы
Python, Java, C++ и Go — как появились популярные языки программирования

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

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

@a_cup_of_java | Другие наши каналы
Автоматизация тестирования Java UI-приложений с Arctic

Arctic от Amazon Corretto позволяет запускать автоматические проверки старых и новых Java-десктоп-тестов без их доработки. Инструмент сравнивает скриншоты и воспроизводит действия, помогая выявлять визуальные регрессии и экономить время на проверке.

Подробности: https://aws.amazon.com/blogs/developer/arctic-automated-desktop-application-testing/

#en

@a_cup_of_java | Другие наши каналы
Как решить ошибку Arithmetic overflow при конвертации IDENTITY в tinyint, smallint или int в SQL Server

Ошибка возникает, когда значение IDENTITY выходит за пределы диапазона типа данных. Решение — увеличить тип колонки до bigint или сделать reseed значения IDENTITY, учитывая возможные риски при изменениях. Топ-курсы и обзоры для IT-специалистов в 2024–2025 годах. В статье представлены лучшие онлайн-курсы по Apache Camel, Data Science, Selenium, Cloud Computing, а также отзывы о популярных образовательных платформах и сертификатах. Полезно для развития карьеры и повышения квалификации.

Подробности: http://www.java67.com/2019/08/arithmetic-overflow-error-converting-indentity-to-data-type-tinyint-smallint-and-in-sql-server-database.html

#en

@a_cup_of_java | Другие наши каналы
Лучшие онлайн-курсы по HTML и CSS в 2024 году

Если хотите освоить веб-дизайн и фронтенд-разработку, стоит обратить внимание на лучшие курсы по HTML5 и CSS3 от Udemy, Coursera, Pluralsight и edX. Они подходят и новичкам, и опытным специалистам. Лучшие онлайн-курсы по программированию и веб-разработке в 2025 году. В статье собраны популярные направления — от Python и Java до DevOps и блокчейна, включая бесплатные и платные варианты для всех уровней. Отличный гид для выбора обучения!

Подробности: http://www.java67.com/2020/08/5-best-online-courses-to-learn-html-5.html

#en

@a_cup_of_java | Другие наши каналы
Лучшие бесплатные сайты для изучения Microsoft Azure в 2024 году

Обзор ресурсов, которые помогут бесплатно освоить облачную платформу Microsoft Azure — от официального портала и Coursera до Udemy и Pluralsight. Идеально для разработчиков, DevOps и всех, кто хочет развить востребованные навыки в облачных технологиях. Лучшие онлайн-курсы по программированию и IT на 2024 год. В подборке — курсы по Java, Data Science, облачным технологиям, машинному обучению и тестированию. Обзор поможет выбрать подходящее обучение для развития навыков и карьерного роста.

Подробности: http://www.java67.com/2024/06/top-6-websites-to-learn-microsoft-azure.html

#en

@a_cup_of_java | Другие наши каналы
👍2
Работа с базой данных для джунов и вайбкодеров. Соединения

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


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

@a_cup_of_java | Другие наши каналы
👍2
ООП не мертво. Вы просто пользуетесь им как молотком по клавиатуре

После каждой новой статьи с заголовком «ООП — это обман» хочется напомнить: ООП — это не набор шаблонов из книжек, а инженерный подход. Если проект страдает от наследования и DI, возможно, проблема не в ООП. А в том, как вы его применяете.


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

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