ru
Feedback
Библиотека Java разработчика

Библиотека Java разработчика

Открыть в Telegram

📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Больше

📈 Аналитический обзор Telegram-канала Библиотека Java разработчика

Канал Библиотека Java разработчика (@bookjava) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 275 подписчиков, занимая 12 049 место в категории Технологии и приложения и 63 967 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 275 подписчиков.

Согласно последним данным от 07 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 25, а за последние 24 часа — 0, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 8.50%. В первые 24 часа после публикации контент обычно набирает 4.05% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 874 просмотров. В течение первых суток публикация набирает 416 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 6.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как string, интерфейс, строка, boot, api.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Благодаря высокой частоте обновлений (последние данные получены 08 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

10 275
Подписчики
Нет данных24 часа
+57 дней
+2530 день
Архив постов
Паттерны применения многопоточности на коммерческом проекте (на примере Java) Многопоточность неразрывно связана с отзывчивос
Паттерны применения многопоточности на коммерческом проекте (на примере Java) Многопоточность неразрывно связана с отзывчивостью вашего приложения под нагрузкой. Если нагрузки нет, скажем 5 запросов в час, то и о многопоточности можно особо не задумываться На коммерческих проектах чаще встречается ситуация, когда вашим приложением пользуются сотни и даже тысячи клиентов одновременно, в такие моменты без многопоточности никуда, при этом приложение должно работать эффективно, не расходуя лишние ресурсы Я собрал самые часто встречаемые паттерны работы с многопоточностью из своей практики, которые помогают писать отказоустойчивые и надежные приложения
В данной статье будем рассматривать многопоточность без применения webflux, однако если будет спрос, то распишу те же паттерны на webflux'е, там они выглядят более органично Также не буду затрагивать Project Loom, поскольку мне не приходилось отлаживать и поддерживать код с использованием Loom на коммерческом проекте (Java 21 еще не используем), но когда-нибудь я напишу подробную и понятную статью по Loom
https://habr.com/ru/articles/838402/ 👉@BookJava

Создание REST API с использованием Spring WebFlux и Security 00:00:00 Введение 00:00:20 Создание проекта 00:11:36 Создание миграций БД 00:15:40 Создание базовых классов 00:23:20 Реализация логики генерации JWT токена 00:46:30 Реализация логики валидации JWT токена 00:53:05 Построения цепочки аутентификации 01:04:22 Финальная конфигурация с использованием SecurityWebFilterChain 01:12:11 Реализация REST контроллеров 01:23:15 Проверка REST API средствами Postman 01:24:21 Добавление и конфигурация обработчика ошибок 01:25:40 Заключение Ссылка на Github репозиторий https://github.com/proselytear/webfluxsecurity источник 👉@BookJava

👩‍💻 Открытый урок «Знакомство со Spring Cloud». Как эффективно использовать самый популярный фреймворк в Java-мире для проф
👩‍💻 Открытый урок «Знакомство со Spring Cloud». Как эффективно использовать самый популярный фреймворк в Java-мире для профессиональной разработки приложений? 📆 Узнайте на открытом вебинаре 10 октября в 20:00 мск. Где мы разберем: - что такое Spring Cloud и для чего он нужен; - из каких основных компонентов состоит Spring Cloud; - как использовать ключевые функции Spring Cloud для разработки. Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель. Встречаемся в преддверии старта курса «Java Developer. Professional». Все участники вебинара получат специальную цену на обучение! 👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBMqaL Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Как заставить code coverage работать на вас Недавно я снова услышал тезис, что code coverage не нужен и совсем не обязательно
Как заставить code coverage работать на вас Недавно я снова услышал тезис, что code coverage не нужен и совсем не обязательно за ним следить, а нужно просто делать black-box тесты и считать количество тест-кейсов. Я не согласен с подобного рода категоричными утверждениями. В этой статье постараюсь изложить свою точку зрения и развеять некоторые мифы, опираясь на свой опыт в разработке и идеи, которые почерпнул из книг и статей других инженеров. https://habr.com/ru/articles/836366/ 👉@BookJava

Осень — время новых знаний! 👨‍🎓 И мы знаем, где будут прокачивать свои hard и soft skills IT-специалисты — на IT Community
Осень — время новых знаний! 👨‍🎓 И мы знаем, где будут прокачивать свои hard и soft skills IT-специалисты — на IT Community Day, который Сбер проведёт сразу в трёх городах: ✔️ В Санкт-Петербурге 5 октября обсудим искусственный интеллект, возможности фронтенда, новую среду разработки и мотивацию для айтишников. ✔️ В Казани 12 октября научимся управлять большими данными, укрощать искусственный интеллект, создавать успешное резюме и находить подход к карьере. ✔️ В Екатеринбурге 19 октября поговорим об интеграции LLM в приложение, методологии API-first и комбинации личного и профессионального развития. Во всех городах вас будут ждать топовые спикеры, а после докладов — afterparty. Регистрируйтесь на IT Community Day в Санкт-Петербурге, Казани и Екатеринбурге👌

Spring Boot 3 🍃 включает несколько улучшений в области SSL 🔐 🔹3.1 - SSL Bundles 🔹3.2 - SSL Hot Reload 🔹3.4 - SSL certs i
Spring Boot 3 🍃 включает несколько улучшений в области SSL 🔐 🔹3.1 - SSL Bundles 🔹3.2 - SSL Hot Reload 🔹3.4 - SSL certs info in the 'info' and 'health' Actuator endpoints Чтобы включить SSL в 'info' endpoint, установите свойство "http://management.info.ssl.enabled=true" 👉@BookJava

Хотите узнать, чем Clojure выделяется среди других бэкендовых языков и что он может вам предложить? Ждем вас на открытом веби
Хотите узнать, чем Clojure выделяется среди других бэкендовых языков и что он может вам предложить? Ждем вас на открытом вебинаре 3 октября в 20:00 мск, где мы разберем: - с какими задачами сталкиваются разработчики Clojure; - основные особенности и преимущества Clojure по сравнению с другими языками; - какие возможности и перспективы предлагает Clojure для разработчиков. Встречаемся в преддверии старта курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBI8Ue Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🚀 Совет по Java - Comparator 🚀 Comparator.nullsLast Принимает Comparator в качестве аргумента, который отвечает за сравнени
🚀 Совет по Java - Comparator 🚀 Comparator.nullsLast Принимает Comparator в качестве аргумента, который отвечает за сравнение ненулевых элементов. В случае, если переданный компаратор равен null, ненулевые значения считаются равными. 🔥 https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Comparator.html#nullsLast(java.util.Comparator) 👉@BookJava

Какие бывают строковые классы? В Java строковые классы — это классы, которые используются для работы со строками, то есть последовательностями символов. Основные строковые классы в Java: 1. String - Неизменяемый класс (immutable): После создания объекта String его нельзя изменить. - Использование: Широко используется для представления строковых значений. - Особенности: - Строки могут быть созданы с использованием строковых литералов или через конструктор. - Для сравнения строк рекомендуется использовать метод equals(), а не оператор ==. - Пример:

       String str = "Hello, World!";
       
2. StringBuilder - Изменяемый класс (mutable): Этот класс позволяет изменять строки без создания нового объекта. - Основное применение: Используется, когда требуется частое изменение строк, например при конкатенации. - Не синхронизирован: Этот класс не потокобезопасен, что делает его быстрее при работе в однопоточных приложениях. - Пример:

     StringBuilder sb = new StringBuilder("Hello");
     sb.append(", World!");
     
3. StringBuffer - Изменяемый класс (mutable): Как и StringBuilder, позволяет изменять строки. - Синхронизирован: Потокобезопасный, что делает его более медленным по сравнению с StringBuilder. - Основное применение: Рекомендуется использовать в многопоточных приложениях. - Пример:

     StringBuffer sb = new StringBuffer("Hello");
     sb.append(", World!");
     
Различия между String, StringBuilder и StringBuffer: - Неизменяемость: String неизменяемый, тогда как StringBuilder и StringBuffer изменяемы. - Потокобезопасность: StringBuffer синхронизирован, в отличие от StringBuilder. - Производительность: StringBuilder быстрее, чем StringBuffer при работе в однопоточных средах. 👉@BookJava

🏓 Знакомимся с Java на примере пинг-понга Хотите узнать, как создавать программы на Java, даже если никогда не программирова
🏓 Знакомимся с Java на примере пинг-понга Хотите узнать, как создавать программы на Java, даже если никогда не программировали? Ждем вас на открытом вебинаре 26 сентября в 20:00 мск, где мы разберем: ➡️ что такое программирование и язык Java; ➡️ как создать игру пинг-понг с нуля на Java; ➡️ как работать с двумерной графикой в Java. Урок полезен для тех, кто хочет начать изучать Java с нуля и увидеть на практике, как создаются приложения. 🎙 Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук. Встречаемся в преддверии старта курса «Специализация Java-разработчик». Все участники вебинара получат специальную цену на обучение! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBp05H Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Оптимизация строк в Java В Java строки (`String`) являются объектами, представляющими последовательность символов. Они имеют особое значение в языке, и оптимизация работы со строками важна для эффективного использования памяти и производительности приложения. Вот ключевые аспекты и методы оптимизации работы со строками в Java: 1. Пул строк (String Pool) - Java использует специальную область памяти, называемую String Pool (или **интернированный пул строк**), для хранения строковых литералов. - Когда строка создается как литерал, например, String str = "hello";, JVM сначала проверяет, есть ли уже такая строка в пуле. Если есть, то возвращается ссылка на существующую строку, а не создается новый объект. - Если строка создается с помощью new, например, String str = new String("hello");, новый объект строки создается в куче, даже если такая строка уже есть в пуле. Оптимизация: - Используйте строковые литералы вместо явного создания новых объектов String через new, чтобы JVM могла переиспользовать строки из пула. Пример:

String s1 = "hello"; // переиспользует строку из пула
String s2 = new String("hello"); // создает новую строку в куче
2. Метод `intern()` - Метод intern() добавляет строку в пул строк, если ее там еще нет, и возвращает ссылку на строку из пула. - Это полезно, когда вы хотите уменьшить количество дубликатов строк. Пример:

String s1 = new String("hello").intern(); // добавляет строку в пул и возвращает ссылку из пула
String s2 = "hello"; // использует строку из пула
System.out.println(s1 == s2); // true
3. Избегайте конкатенации строк в циклах - Операция конкатенации строк через оператор + в Java создает новые объекты String, поскольку строки неизменяемы. Это может привести к большому количеству временных объектов и снижению производительности. - Внутри циклов это особенно дорого, поскольку каждый раз создается новая строка. Оптимизация: - Используйте StringBuilder или StringBuffer для конкатенации строк, если вы собираете строки в цикле. Пример:

// Плохой подход:
String result = "";
for (int i = 0; i < 1000; i++) {
    result += i; // каждый раз создается новая строка
}

// Оптимизированный подход:
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    builder.append(i); // строка накапливается без создания временных объектов
}
String result = builder.toString();
4. Используйте `StringBuilder` вместо `StringBuffer` для однопоточных операций - StringBuffer синхронизирован, и это делает его потокобезопасным, но добавляет накладные расходы. Для однопоточных операций лучше использовать несинхронизированный StringBuilder, который работает быстрее. 5. Использование методов `char[]` и `toCharArray()` - Если необходимо часто модифицировать строку или выполнять операции с отдельными символами, то преобразование строки в массив символов (`char[]`) может быть более эффективно. Пример:

String str = "hello";
char[] charArray = str.toCharArray();
charArray[0] = 'H'; // изменяем символ
String modifiedStr = new String(charArray); // создаем новую строку
6. Уменьшение использования временных строк - Старайтесь избегать создания временных строк, которые сразу выбрасываются сборщиком мусора. Например, при разбиении строки (split) или других операциях, которые могут создать ненужные объекты. Оптимизация: - Используйте потоки или регулярные выражения для более эффективной обработки строк. 7. Использование `String.join()` или `Collectors.joining()` для объединения строк - Если необходимо объединить множество строк (например, из массива или коллекции), лучше использовать String.join() или Collectors.joining() для оптимизации вместо ручной конкатенации. Пример:

List<String> list = Arrays.asList("one", "two", "three");
String result = String.join(", ", list); // более эффективное объединение строк
👉@BookJava

Присоединяйся к всероссийскому чемпионату по программированию МТС True Tech Champ 2024 с призовым фондом в 10 250 000 ₽. Реша
Присоединяйся к всероссийскому чемпионату по программированию МТС True Tech Champ 2024 с призовым фондом в 10 250 000 ₽. Решай алгоритмические задачи или программируй роботов. Какие задания и этапы ждут участников, расскажут на вводном вебинаре создатели треков 26 сентября в 17:00. Регистрируйся по ссылке. В чемпионате найдутся задачи для начинающих ИТ-специалистов и опытных разработчиков. ✔️ В алгоритмическом треке участники будут работать со структурами данных, покажут математические навыки и умение решать алгоритмические задачи. ✔️ В треке по программированию роботов нужно будет соревноваться на скорость прохождения лабиринта робомышью. Подробнее о чемпионате — по ссылке. Регистрация участников: до 12 октября Старт онлайн-этапов: с 1 октября Финал в офлайне: 8 ноября

Преобразование коллекций Новичкам зачастую трудно представить выгоду от использования Stream API вместо обычных циклов. Приве
Преобразование коллекций Новичкам зачастую трудно представить выгоду от использования Stream API вместо обычных циклов. Приведем несколько примеров, которые позволят вам сделать код лаконичнее. 👉@BookJava

👩‍💻 Пройди тест по Java Проверь насколько хорошо ты знаешь Java и готов освоить 👩‍💻 Spring! Ответишь — пройдешь на продви
👩‍💻 Пройди тест по Java Проверь насколько хорошо ты знаешь Java и готов освоить 👩‍💻 Spring! Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/cBlvaE Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Используйте плагин checkstyle Подключить его очень легко и в Gradle, и в Maven. plugins { id 'checkstyle' Плагин проверяет фо
Используйте плагин checkstyle Подключить его очень легко и в Gradle, и в Maven. plugins { id 'checkstyle' Плагин проверяет форматирование, неиспользуемые импорты и когнитивную сложность ваших методов при каждой сборке приложения, что помогает поддерживать ваш код удобочитаемым, а следовательно, лучше сопровождаемым. 👉@BookJava

Используйте параметризованные тесты Использование тестов с параметрами позволяет значительно увеличить качество и процент пок
Используйте параметризованные тесты Использование тестов с параметрами позволяет значительно увеличить качество и процент покрытия тестов без разрастания объема кода. Для того чтобы протестировать метод с различными параметрами, теперь не нужно писать несколько разных тестов — достаточно написать один, и передать ему все необходимые параметры на вход. 👉@BookJava

👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста. Пройди тест по Java и проверь свои знания, готов ли
👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста. Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cBhSQQ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Разница создания списка при помощи List.of() Arrays.asList() Понимание различий между List.of() и Arrays.asList() важно для л
Разница создания списка при помощи List.of() Arrays.asList() Понимание различий между List.of() и Arrays.asList() важно для любого Java-разработчика. List.of() — это фабричный метод, впервые представленный в Java 9, который создает неизменяемый список, содержащий указанные элементы. — Неизменяемость: список, созданный List.of(), имеет фиксированный размер и не поддерживает добавление или удаление элементов. При попытке добавить или удалить элемент будет выброшено UnsupportedOperationException. — Null значения: List.of() не допускает null элементов. Если вы попытаетесь добавить null, появится исключение NullPointerException. Пример использования: 1 List<String› immutableList = List.of("apple", "banana", "orange"); Для создания изменяемого списка следует использовать Arrays.asList() 1 List<String> mutableList = Arrays.asList("red", "green", "blue"); В отличие от List.of(), Arrays.asList() допускает нулевые элементы. 👉@BookJava

Тестовое собеседование на Middle Java-разработчика завтра Уже завтра, 25 сентября в 19:00 по мск приходи онлайн на открытое с
Тестовое собеседование на Middle Java-разработчика завтра Уже завтра, 25 сентября в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу 2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 3. В конце можно будет задать любой вопрос Марии Что узнаешь на прямом эфире от ШОРТКАТ: · Чего ждут от кандидатов на Middle позиции в Java-разработке · Какие вопросы задают на интервью и зачем · Как подготовиться к собесу, чтобы получить оффер Это бесплатно? Бесплатно Переходи в нашего бота, чтобы получить ссылку на эфир@shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvfZr2U

Делайте все переменные final По умолчанию делайте все локальные переменные final. Исключение — если по логике эта переменная
Делайте все переменные final По умолчанию делайте все локальные переменные final. Исключение — если по логике эта переменная должна изменяться в последующем коде. Однако, переменных, которые мы инициализируем один раз и далее не изменяем, как правило, большинство. То же правило можно отнести и к атрибутам класса — по умолчанию их также лучше делать final, если мы хотим сделать состояние класса неизменяемым и потокобезопасным. Разумеется, если по логике предполагается изменение состояния класса, изменяемые атрибуты не должны быть финальными. 👉@BookJava