Библиотека джависта | Java, Spring, Maven, Hibernate
24.1K subscribers
2K photos
38 videos
42 files
2.82K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
📣 Истории подписчиков: чуть было не сорванный дедлайн

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

История от подписчика:
Работал как-то над крупным микросервисом, который обрабатывал тысячи запросов в минуту. Столкнулись с неожиданной проблемой на этапе нагрузочного тестирования. Начали появляться задержки в откликах — иногда по несколько секунд, что было критично для системы.

Проверил нагрузку на сервер. CPU был в норме, но мониторинг памяти показал, что heap быстро заполняется, и GC работает очень часто и долго. Детальный анализ выявил причину — один из модулей создавал слишком много временных объектов, которые оставались в кеше дольше необходимого. Из-за этого объекты не удалялись вовремя, и память забивалась.

Мы пересмотрели логику кеширования, сократили время жизни объектов и подключили профайлер памяти. В результате нагрузка на GC снизилась, и производительность сервиса улучшилась.


💬 А с какими случаями проблем с памятью сталкивались вы? Как их решали?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏21🔥1
Выходные загадки

Какой термин загадан?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍2🔥21
📣 Один таймер — тысяча проблем

Один из подписчиков поделился кейсом, который едва не превратился в катастрофу — и всё из-за, казалось бы, безобидного таймера.

История от подписчика:
В микросервисе на Spring Boot был реализован механизм повторных попыток через ScheduledExecutorService. Всё шло нормально — до запуска в проде.

Через пару дней после релиза начали сыпаться алерты: увеличилось потребление памяти, а сервис стал отвечать с задержками. Логи молчали, метрики CPU были в порядке, но heap распухал как на дрожжах.

После анализа heap dump выяснилось: каждый раз при неудачной операции создавался новый ScheduledFuture, который не отменялся и оставался висеть в памяти. Таймеры копились, ссылки не освобождались, GC с ума сходил.

Ввели пул повторных задач с ограничением количества активных таймеров и явной отменой по завершении. Также поставили алерты на рост количества активных future’ов. Память стабилизировалась, сервис вернулся к нормальной работе.


💬 Последняя такая “незаметная” проблема на проде?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥2😁1
Stream API vs классический for-loop?

С тех пор как в Java 8 появился Stream API, начались споры: стоит ли массово переходить на стримы или классический for-loop по-прежнему лучше?

Сторонники Stream API говорят о выразительности, лаконичности и возможностях параллелизма. Противники указывают на потерю производительности в критичных местах и сложность отладки.

⚡️ На практике:

— Stream API отлично подходит для чистых операций с коллекциями и сложных цепочек преобразований.
— For-loop даёт полный контроль над процессом и зачастую работает быстрее, что важно в системах с высокими требованиями к производительности.

💬 Вопрос к вам:

Что вы используете в повседневной работе?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏2
Нужна ли джуну реактивщина?

Наш подписчик спрашивает:

Я только начал изучать Java и Spring Boot, и недавно наткнулся на темы про реактивное программирование — Reactor, WebFlux и всё такое. Честно, пока не очень понимаю, зачем это нужно, и кажется слишком сложно. Мне пока бы просто освоить классический Spring MVC и нормально писать REST API. Стоит ли уже сейчас тратить время на реактивность или это вообще для более продвинутых?


🔹 Что думаете?

Насколько важно джуну погружаться в реактивный стек на старте? Не будет ли это лишним грузом и отвлечёт от освоения базовых концепций?

💬 Делитесь в комментариях:

— Когда вы начали работать с реактивным программированием и как оно повлияло на ваш код?
— Какие кейсы в реальной практике действительно требуют Reactor/WebFlux?
— Какие советы дадите джунам, чтобы грамотно подходить к изучению реактивности?

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
Стоит ли учить Java в 2025 году?

С развитием технологий встаёт вопрос: а актуальна ли Java для новых проектов и новичков? А различные ИИ?

Сторонники утверждают, что Java остаётся основой корпоративных систем с огромным сообществом и стабильной экосистемой. Противники говорят — язык устарел, уступает Kotlin, Go и Python по удобству и скорости разработки, а ещё ИИ.

⚡️ На практике:


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

💬 А вы что думаете, видите потенциал Java или смотрите в сторону новых технологий?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥1😁1
Spring Boot vs Jakarta EE?

Сравнение двух крупных фреймворков до сих пор вызывает жаркие споры.

Любители Spring Boot хвалят скорость старта, гибкость и богатую экосистему. Фанаты Jakarta EE ценят стандартизацию, долгосрочную поддержку и интеграцию с корпоративными решениями.

⚡️ На практике:

— Spring Boot отлично подходит для быстрых проектов и микросервисов.
— Jakarta EE удобен для крупных систем с акцентом на стандарты и масштабируемость.

💬 Что в вашем опыте показало себя лучше?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1👏1🥱1
Стоит ли читать "Java Concurrency in Practice" в 2025?

Классическая книга о многопоточности — до сих пор актуальна или устарела?

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

💬 Актуальна ли книга или стоит перейти на новые парадигмы?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4🥱21🥰1
Многопоточность в реальных проектах?

Наш подписчик спрашивает:

Я работаю на Springе. Хоть многопоточность и важная тема, я пока не понимаю, как она реально применяется в проектах. Есть ли случаи, когда её использование критично, а когда можно обойтись без неё? Стоит ли задумываться о многопоточности уже на начальном этапе, или это приходит позже, с более сложными задачами?


🔹 Как вы подходите к использованию многопоточности

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

💬 Делитесь в комментариях Вашим мнением и опытом.

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏21🔥1
🔍 Загадка для разработчиков

Что за паттерн загадан на картинке? Пишите в комменты ответ под спойлером.

💬 Рассказывайте интересные кейсы реализации из практики

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1😁1
📣 Когда кеш начинает давить на память

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

История от подписчика:
В одном проекте был использован ConcurrentHashMap для кеширования данных. Всё шло нормально, пока через некоторое время не начали замечать рост потребления памяти. Это проявлялось в том, что сервис стал работать всё медленнее, а метрики показывали высокий расход памяти.

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

Для решения проблемы перешли на LRU кеш. Вместо того чтобы позволять кешу расти без контроля, был использован LinkedHashMap с ограничением размера. Это позволило реализовать механизм, автоматически удаляющий наименее используемые элементы.


💬 А у вас были такие истории, когда кеш начинал раздуваться до неприличных размеров и заставлял приложение тормозить?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥱3👏21🔥1
🔍 Загадка для разработчиков

Что за термин загадан на картинке?

💬 Пишите в комменты ответ под спойлером.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1🤔1
Когда стоит использовать DTO в Java-проектах?

Наш подписчик спрашивает:


В одном из проектов я заметил, что контроллеры возвращают модели сущностей напрямую, а в другом — используют DTO. Я всегда считал, что контроллеры должны возвращать только DTO. Почему в одном проекте возвращают модели, а в другом — DTO? Какой подход правильный?


🔹 Как вы подходите к использованию DTO и моделей

— В каких случаях вы предпочитаете возвращать модели сущностей, а когда — DTO?
— С какими трудностями вы столкнулись при выборе между DTO и моделями в своих проектах?
— Какие подходы к использованию DTO и моделей сработали для вас лучше всего?

💬 Делитесь в комментариях вашим мнением и опытом.

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥1
Java или Kotlin?

Оба языка активно развиваются на JVM, но какой логичнее изучать и использовать для новых проектов.

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

▪️ Сторонники Kotlin отвечают, что язык быстро набирает распространение — он уже обогнал по популярности все другие JVM‑языки вместе взятые, а его interop с Java и современные фичи делают его крайне привлекательным

💬 Стоит ли переключаться на Kotlin, или Java по‑прежнему "самая надёжная ставка" для новых проектов?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
Виртуальные потоки — будущее или сырой эксперимент?

С выходом Java 21 виртуальные потоки (Virtual Threads) стали доступными для продакшна. Обещают удобный и масштабируемый способ работы с параллелизмом и без боли реактивщины.

▪️ Сторонники Virtual Threads уверены: это долгожданный прорыв. Теперь можно писать привычный синхронный код, не заморачиваясь с CompletableFuture и реактивными фреймворками. Масштабируемость? Да! Сотни тысяч потоков без overhead-а — вполне реально.

▪️ Напротив: tooling и экосистема пока не готовы. IDE лагают при отладке, JMX и трейсы работают криво, баги не редкость. Да и блокировки никуда не делись — просто теперь они маскируются, а не устраняются. По сути — "асинхронность для ленивых".

💬 Стоит ли сразу использовать их в новых проектах или подождать пару релизов?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥32
Lombok — спасение от boilerplate или технический долг?

Lombok давно стал популярным решением. Аннотации вроде @Getter, @Builder, @Slf4j избавляют от рутинного кода и ускоряют разработку.

▪️ За Lombok
— Устраняет шаблонный код и снижает количество ручных ошибок.
— Удобен при работе с immutable‑объектами и внедрении зависимостей через конструкторы.

▪️ Против Lombok
— Зависимость от нестабильных internal‑API.
— Требует обязательной поддержки на всех IDE/CI.
— За «синтаксический сахар» приходится платить техническим долгом.

💬 Подключать Lombok и ускорять разработку ценой стабильности, или отказаться и держать чистоту кода?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
Повседневные инструменты

Наш подписчик спрашивает:

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


🔹 Вопросы для обсуждения:

— Какие инструменты (IDE‑плагины, CLI‑утилиты, скрипты, расширения, шаблоны и пр.) вы используете каждый день, чтобы повысить продуктивность?
— Как они изменили ваш привычный рабочий процесс?
— Были ли ситуации, когда такие инструменты оказались ловушкой или привели к техническому долгу?

💬 Делитесь вашими инструментами и советами в комментариях

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥1
Возвращение Redis к open-source

С 2025 года Redis вернулся к open-source, выпустив Redis 8 под лицензией AGPLv3. После введения SSPL в 2024 году и резкой критики со стороны сообщества, Redis вернулся к истокам, но стоит ли этому радоваться?

Сторонники новой лицензии считают, что это правильный шаг, который восстановит доверие сообщества и вернёт Redis в ряды самых популярных инструментов для работы с БД в реальном времени. Однако критики утверждают, что этот ход больше связан с маркетингом и попыткой вернуть пользователей, чем с настоящими улучшениями.

⚡️ На практике:

— AGPLv3 обещает более открытое использование Redis в корпоративных и стартап-проектах.
— Но SSPL оставляет много вопросов о том, как Redis будет восприниматься в экосистеме open-source в будущем.

💬 Что думаете: реальная победа сообщества или просто попытка вернуть утраченные позиции на фоне конкурентов?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤔3👍2❤‍🔥1🔥1
🔍 Загадка для разработчиков

Что за термин загадан на картинке?

💬 Пишите в комменты ответ под спойлером.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1