Библиотека джависта | Java, Spring, Maven, Hibernate
Все самое полезное для Java-разработчика в одном канале. Учиться у нас: clc.to/AATM8w Для обратной связи: @proglibrary_feeedback_bot По рекламе: @tproger_sales_bot РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Больше📈 Аналитический обзор Telegram-канала Библиотека джависта | Java, Spring, Maven, Hibernate
Канал Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 21 888 подписчиков, занимая 6 041 место в категории Технологии и приложения и 29 974 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 21 888 подписчиков.
Согласно последним данным от 25 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -129, а за последние 24 часа — -13, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 8.19%. В первые 24 часа после публикации контент обычно набирает 4.47% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 794 просмотров. В течение первых суток публикация набирает 979 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 7.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как джависта, навигация, jooq, corejava, hibernate.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Все самое полезное для Java-разработчика в одном канале.
Учиться у нас: clc.to/AATM8w
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4”
Благодаря высокой частоте обновлений (последние данные получены 26 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
java -XX:+UseZGC -XX:+ZAdaptiveHeapSizing ...
Если расходы CPU на сборку растут, политика может расширить кучу. Если они ниже целевого уровня — уменьшить её. Дополнительно учитывается использование ресурсов на машине, чтобы одна JVM не забирала всё у соседей.
🟡 Это возможность будущего JDK 28
JEP имеет статус Targeted для JDK 28. Флаг не следует считать готовой настройкой для выпущенного JDK 27.
Автоматика также не отменяет проверки под реальной нагрузкой. Важно измерять одновременно задержки, пропускную способность, память и CPU: короткие паузы GC ещё не говорят, что сборщик работает дёшево.
🔗 Как предлагается адаптировать размер кучи ZGC
#CoreJava
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта✦ почему рекрутер закрывает резюме, не дочитав до конца; ✦ как показать свой вклад и результаты, а не просто перечислить технологии; ✦ какие формулировки могут занизить твой грейд.🗓 27 октября в 19:00 МСК Участие бесплатное 👥 Спикеры: — Анастасия Дегтярь, Senior TA в Skyeng, 6+ лет в найме; — Виктор Анохин, Java/Kotlin-разработчик в Wildberries, ex-Билайн. Эфир проводит ШОРТКАТ – менторская программа для разработчиков, которые хотят сменить работу или вырасти в грейде и зарплате. Переходи в бота, чтобы зарегистрироваться на эфир: @shortcut_sh_bot Реклама. О рекламодателе.
String pem = PEMEncoder.of()
.encodeToString(publicKey);
API поддерживает стандартные представления ключей, сертификатов и списков отозванных сертификатов. Для шифрования закрытого ключа предусмотрена отдельная настройка:
String pem = PEMEncoder.of()
.withEncryption(password)
.encodeToString(privateKey);
Здесь password — char[], а ключи уже получены приложением.
🟡 PEM сам по себе не шифрует ключ
Текст между BEGIN и END может содержать незашифрованный закрытый ключ. Base64 делает данные текстовыми, но не скрывает их.
В JDK 27 этот API находится в третьем preview и требует включения preview-возможностей. JEP 542 относится к будущему JDK 28, где планируется финализация. Не стоит переносить пример в проект на старом JDK без проверки доступности API.
🔗 Описание PEM API и поддерживаемых форматов
#CoreJava
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
try (Arena arena = Arena.ofConfined()) {
MemorySegment segment =
arena.allocate(ValueLayout.JAVA_INT);
segment.set(ValueLayout.JAVA_INT, 0, 42);
}
В разрабатываемом JDK 28 небольшие выделения confined-арены могут обслуживаться из пула. Он запрашивается лениво, при первом подходящем выделении. По умолчанию кеш платформенного потока может хранить четыре пула по 64 байта.
Если размер или выравнивание не подходят, используется обычный путь.
🟡 Закрытая арена не становится доступной повторно
После close() её сегменты всё так же недоступны. Перед повторным использованием занятая часть пула очищается. Повторно используется внутренняя память, а не старые MemorySegment.
Менять исходный код ради этой оптимизации не требуется. Но это улучшение будущего JDK 28: пример API уже знаком по выпущенным версиям, описанный механизм пулов — ещё нет.
🔗 Как устроены пулы confined-арен
#CoreJava
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джавистаvar copy = new HashMap<>(source);
Но внутри общего пути могут быть итератор, обращения к ключам и значениям, повторный hashCode(). Когда через одну точку вызова проходят разные реализации Map, JIT сложнее убрать эти расходы.
В JDK 27 добавили специальные пути для источника, который является именно HashMap, и неизменяемой обёртки над HashMap. Они обходят исходную таблицу напрямую и используют хеши, уже сохранённые в её узлах.
Оптимизация относится и к putAll(). Для других реализаций Map остаётся общий путь.
🟡 Это не глубокое копирование
Новая таблица по-прежнему содержит ссылки на те же ключи и значения. Изменяемый объект внутри карты не станет независимым после создания копии.
В статье приведены заметные выигрыши микробенчмарков на конкретной платформе. Переносить эти проценты на весь сервис нельзя: сначала проверьте, есть ли копирование карт среди его горячих участков.
🔗 Что ускорили в библиотеках JDK 27
#CoreJava
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
FreezingArchRule.
ArchRule frozen = FreezingArchRule.freeze(rule);
frozen.check(importedClasses);
Здесь rule — ваше архитектурное правило, importedClasses — импортированные классы проекта. Проверка сохраняет известные нарушения в baseline и затем сообщает только о новых. Исправленные нарушения убираются из baseline, чтобы не допустить регрессии.
🟡 Для первоначального создания хранилища отдельно разрешите freeze.store.default.allowStoreCreation=true. Сохраните baseline в Git; в CI используйте существующее хранилище.
Не включайте автоматическое freeze.refreeze=true: оно принимает текущие нарушения заново, и проверка перестаёт защищать от ухудшения архитектуры.
🔗 Источник • Разбор и примеры
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprisejcmd.
jcmd 12345 JFR.start name=slow \
settings=profile duration=60s \
filename=/tmp/slow.jfr
Замените 12345 на PID нужной JVM. Через минуту запись остановится и сохранится в указанный файл на машине процесса. Её можно открыть в JDK Mission Control и сопоставить события GC, блокировок и выполнения с моментом задержки.
🟡 Команду запускают на той же машине и под тем же пользователем, что и JVM. В контейнере учитывайте пространство процессов и путь к файлу.
Профиль profile собирает больше данных, но даёт больше накладных расходов, чем default. Поэтому здесь запись короткая, а не бесконечная.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprisevar windows = Stream.of(1, 2, 3, 4, 5)
.gather(Gatherers.windowSliding(3))
.toList();
// [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
Каждое следующее окно теряет самый старый элемент и получает новый. Если вход короче размера окна, получится одно неполное окно; пустой Stream не выдаст ни одного.
🟡 Окна нельзя изменять. Большой размер окна может потреблять лишнюю память — это не бесплатная замена любого буфера.
Gatherers стали стабильным API в Java 24. В докладе автора API есть примеры собственных преобразований и правила работы с параллельными потоками.
🔗 Источник • Разбор и примеры
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJavaCollections.unmodifiableList() запрещает менять список через обёртку. Но это представление исходного списка, а не его независимая копия.
var source = new ArrayList<>(List.of("A"));
var view = Collections.unmodifiableList(source);
var snapshot = List.copyOf(source);
source.add("B");
System.out.println(view); // [A, B]
System.out.println(snapshot); // [A]
🟡 Если возвращаете наружу текущее состояние коллекции и не хотите, чтобы дальнейшие изменения исходного списка были видны читателю, используйте List.copyOf() — он доступен с Java 10.
Копия поверхностная: сами изменяемые объекты внутри неё не становятся неизменяемыми. И null-элементы она не принимает.
🔗 Источник • Разбор и примеры
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJavaprintln(), пересобирать приложение и потом удалять отладочный мусор.
Logpoint в IntelliJ IDEA выводит выражение в консоль, не приостанавливая выполнение. Можно менять точки наблюдения прямо во время отладки. Нужен процесс, к которому подключён debugger; к произвольному сервису без доступа к отладке этот приём не применить.
Например, сначала выводите идентификатор запроса, потом добавляете значение скидки и проходите по цепочке вызовов до места, где результат меняется.
🟡 В IDEA 2026.2 точку можно добавить между исполняемыми строками в поле слева от кода. Выражение выполняется в той же JVM: тяжёлые вычисления в горячем методе всё равно стоят времени.
В разборе JetBrains показан поиск ошибки в gRPC-сервисе.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#EnterpriseGenericContainer Testcontainers по умолчанию ждёт, пока начнёт слушать первый проброшенный порт. Это ещё не гарантия готовности вашего сценария.
container.waitingFor(
Wait.forHttp("/ready")
.forStatusCode(200)
);
Здесь container — уже настроенный контейнер с открытым HTTP-портом, а /ready — ваш endpoint готовности.
🟡 Условие должно проверять именно то, что нужно тесту. Если endpoint отвечает 200 до готовности БД, гонка останется. Для других сервисов можно ждать Docker healthcheck или нужную строку в логах.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprisevar a = new BigDecimal("2.0");
var b = new BigDecimal("2.00");
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
❤️ true и 0
🔥 false и 0
👍 false и -1
👇 Правильный ответ:
false и 0.
equals() сравнивает и числовое значение, и scale: у 2.0 он равен 1, у 2.00 — 2. А compareTo() сравнивает значения, поэтому возвращает 0.
Когда проверяете равенство сумм по величине, нужен compareTo() == 0. Но ключи HashMap и элементы HashSet используют equals() и hashCode(): эти объекты останутся разными.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava