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

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
💬 Как оставлять комментарии в чате нашего канала

В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.

⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.

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

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

— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат

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

❗️ Если вас все-таки забанили

— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу

Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.

👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
✏️ Универсальный инструмент рефакторинга в IntelliJ IDEA

Знакомы с отдельными сочетаниями клавиш для рефакторинга, такими как Shift + F6 или Ctrl + Alt + V?
Сочетание Ctrl + Alt + Shift + T открывает перед вами целый спектр возможностей рефакторинга в одном окне.

🔹 Зачем это нужно

— Открывает меню, предоставляющее доступ к различным видам рефакторинга, таким как переименование, перемещение, изменение сигнатуры, извлечение метода, переменной, константы и другие. ​
— В зависимости от выделенного фрагмента, IntelliJ IDEA предложит только те варианты рефакторинга, которые применимы к текущему элементу кода.​

🔹 Как использовать

1. Выделите часть кода, которую хотите рефакторить (например, переменную, метод или класс).​
2. Нажмите Ctrl + Alt + Shift + T.​
3. Выберите необходимый тип рефакторинга из появившегося меню с помощью стрелок → Enter.​
4. Следуйте дальнейшим инструкциям IDE для завершения процесса рефакторинга.​

💬 Знали о таком?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Тест на внимательность

Проверьте свою внимательность и знание IT терминов. Пишите в комментариях сколько слов вам удалось найти и под спойлером указывайте сами слова.

Слова зашифрованы только по горизонтали. Не все слова связаны с Java, но все вам знакомы.

💬 Посмотрим, кто сможет найти больше.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: подборка материалов

🔹 Актуальные технологии в 2025 году

Анализ предстоящих трендов в IT-индустрии на 2025 год, включая ожидания от релизов Java 25 и .NET, а также влияние искусственного интеллекта на инструменты разработки и продукты. ​

🔹 Переезд в США — личный опыт

Личный опыт Java-разработчика, переехавшего в США по грин-карте. Статья будет полезна тем, кто задумывается о переезде или готовится к эмиграции. Она охватывает этапы от получения визы до адаптации на новом месте. ​

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие существуют состояния потока?

Thread может находиться в одном из следующих состояний (Thread.State):

1️⃣ NEW — поток создан, но еще не запущен.
2️⃣ RUNNABLE — поток готов к выполнению, но может ожидать процессорное время.
3️⃣ BLOCKED — поток ждет освобождения монитора для входа в synchronized блок.
4️⃣ WAITING — поток ожидает сигнал без тайм-аута.
5️⃣ TIMED_WAITING — поток ожидает, но с ограничением по времени.
6️⃣ TERMINATED — поток завершил выполнение.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что будет результатом кода?

👍🏼 — One
🔥 — RuntimeException
👾 — Ошибка компиляции
⚡️ — null

🐸 Библиотека задач по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Java 24 что нового?

18 марта Oracle официально выпустила Java 24 — не-LTS релиз, но с весьма занятными новшествами. Среди 24 JEPов есть парочка, ради которых можно обновиться:

🔹JEP 484 – Class-File API
Вводит стандартный API для парсинга, генерации и трансформации Java class-файлов.

🔹 JEP 485 – Stream Gatherers
Новый API для кастомных промежуточных операций в стримах.

🔹 JEP 489 – Vector API (9-я инкубация)
Продолжает развитие векторного API, предоставляя более эффективные вычисления с использованием векторных инструкций процессора

🔹 JEP 491 – Synchronize Virtual Threads without Pinning
Улучшает работу виртуальных потоков, позволяя синхронизировать их без привязки к конкретным потокам-носителям.

🔗 Полный список фич

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как работает Garbage Collector

Механизм сборки мусора в JVM — это не просто “магия, которая чистит память”, а сложная система, работающая по поколениям, фазам и стратегиям.

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

🔹 Архитектура: как устроена куча (Heap)

Куча памяти делится на поколения:
Heap
├── Young Generation
│ ├── Eden Space
│ └── Survivor Spaces (S0, S1)
└── Old Generation (Tenured)


Eden — вновь созданные объекты.
Survivor — те, кто “выжил” после первой сборки.
Old Gen — объекты, пережившие несколько сборок, считаются “долгоживущими”.

Дополнительно есть Metaspace (с Java 8), где хранятся данные о классах.

🔹 Алгоритм работы GC: по фазам

1. Mark

GC начинает с “корневых” ссылок (стек, глобальные переменные) и помечает все достижимые объекты.

2. Sweep
Удаляются все немаркированные объекты — они считаются “мертвыми”.

3. Compact (в некоторых GC)
Уплотнение памяти: “живые” объекты перемещаются ближе друг к другу, чтобы избежать фрагментации.

🔹 Типы сборок

1. Minor GC
Запускается при заполнении Eden. Очищаются только молодые поколения. Быстро, но может происходить часто.

2. Major GC / Full GC
Включает Old Gen и Metaspace. Дорогая операция, может “заморозить” все потоки (stop-the-world pause).

🔹 Типы сборщиков и их принципы

— Serial GC: однопоточная сборка. Просто и медленно.
— Parallel GC: многопоточная сборка всех поколений. Высокая пропускная способность.
— G1 GC: делит кучу на регионы, параллельно собирает “Region Set”. Поддерживает предсказуемые паузы.
— ZGC: целиком конкурентный сборщик. Работает с огромными кучами (до терабайта), паузы <10 мс.
— Shenandoah: минимальные паузы за счёт почти полной конкуренции с пользовательскими потоками.

🔹 Как GC определяет, что объект мёртв?

GC не использует reference count. Он строит граф достижимости:
1. Начинает с “корней” (GC roots)
2. Если оттуда нельзя добраться до объекта — он считается мусором
3. Это позволяет избежать утечек при циклических ссылках

🔹 Советы по оптимизации

— Избегайте долгоживущих ссылок (static, ThreadLocal) без необходимости
— Используйте WeakReference, если хотите избежать удержания объекта GC
— Кэшируйте объекты осознанно — утечка через Map может быть незаметной
— Задавайте лимиты памяти (-Xms512m -Xmx1024m)

💬 Ловили OutOfMemoryError в проде когда-нибудь?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов

Кешировать нужно с умом. И нет, LRU — не серебряная пуля.

В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии

Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👨🏻‍💻 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии

Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.

➡️ Вся статистика и детали — здесь

Библиотека программиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🎧 Что послушать — #подкаст

🔹 JavaHut News #1
Дата выпуска: 25 февраля 2025
Ведущие: Роман Меерсон и Евгений Никифоров
Продолжительность: 1 час 12 минут

Первый выпуск новостного формата от подкаста JavaHut — на котором идет обсуждение ключевых тем из последнего Java-дайджеста. Ведущие обсуждают тренды, технологии и важные изменения в экосистеме Java и смежных областях. Формат ориентирован на разработчиков, которые хотят не просто быть в курсе новостей, но и понимать их глубинный контекст.

🔹 Ключевые темы выпуска

00:02:32 — Обзор статьи Cay Horstmann: Java как скриптовый язык, Jupyter Kernel
00:09:26 — Тренды в Java-экосистеме на 2024 год
00:24:40 — Jakarta EE: прощание с EJB, судьба библиотек от RedHat
00:43:40 — SecureRandom: зачем он нужен и где используется
00:55:01 — Разработка Java-агентов и применение в ML
01:00:29 — Обновления вокруг DockerHub и последствия

🔗 Слушать выпуск на Spotify

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer

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

➡️ Читать статью

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Git-команда для особого случая

Случайно удалили ветку, а в ней была недоделанная фича или рабочий хотфикс? Паника близко?

💡 Команда спасения
git reflog


📌 Что делает

Показывает историю всех действий в Git — коммиты, переключения веток, ребейзы и даже force-push’и. Идеально, чтобы вернуть ветку из забвения или откатиться на стабильное состояние.

Например:
git checkout -b restore-branch HEAD@{3}

Создаёт новую ветку с того момента, где были 3 действия назад.

💬 Использовали раньше?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🦊 Альтернативы Firefox: обзор 4 лучших форков для тех, кто разочаровался в Mozilla

Приватность, скорость, расширенные функции — что выбрать? Разбираем популярные форки браузеров и их преимущества.

Что в статье:

✔️ Обзор самых популярных форков браузеров

✔️ Их ключевые фишки, плюсы и минусы

✔️ Как выбрать оптимальный вариант под ваши задачи

Браузер — это не просто окно в интернет, а инструмент, который должен соответствовать вашим требованиям. Делитесь своим опытом в комментариях! 🚀

Прочитать подробнее статью 🔗

🐸 Библиотека тестировщика
Please open Telegram to view this post
VIEW IN TELEGRAM
JDBC или JPA?

JDBC — для тех, кто хочет полный контроль. Пишете SQL сами и понимаете, что происходит в базе. Однако код будет повторяться, а отладка — настоящая головная боль. Как только проект растет, поддержка становится вызовом.

JPA — путь абстракции. Работаете с объектами, а не с SQL. Это удобство, но скрытая магия и потеря контроля могут создать проблемы с производительностью и отладкой в крупных проектах.

💬 JDBC или JPA или что-то ещё? Какой подход выбираете вы?

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