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

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

Open in Telegram

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

Show more

📈 Analytical overview of Telegram channel Библиотека Java разработчика

Channel Библиотека Java разработчика (@bookjava) in the Russian language segment is an active participant. Currently, the community unites 10 101 subscribers, ranking 11 696 in the Technologies & Applications category and 62 872 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 101 subscribers.

According to the latest data from 31 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -89 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 7.55%. Within the first 24 hours after publication, content typically collects 3.77% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 763 views. Within the first day, a publication typically gains 381 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 7.
  • Thematic interests: Content is focused on key topics such as string, интерфейс, строка, boot, api.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Thanks to the high frequency of updates (latest data received on 01 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

10 101
Subscribers
-524 hours
-297 days
-8930 days
Posts Archive
👩‍💻 Набор в последнюю группу курса "Java Developer. Professional" в уходящем 2023 году! 🎉 В Otus праздничные цены для отли
👩‍💻 Набор в последнюю группу курса "Java Developer. Professional" в уходящем 2023 году! 🎉 В Otus праздничные цены для отличной карьеры в IT! Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса . 🎄 Новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено. ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/ctypek Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Как работает память Java? Прежде чем мы перейдем к вопросам производительности, нам нужно узнать, что на самом деле происходит в фоновом режиме JVM (Java Virtual Machine). Это отправная точка для каждого разработчика, который хочет изучить и настроить производительность, чтобы набрать скорость. Итак, давайте погрузимся в мир кодов. В Java управление памятью осуществляется JVM автоматически для хранения ваших переменных, классов, полей и так далее... Первое, что мы узнаем, это то, что в JVM память разделена на две области. Одна из них называется Stack, а другая - Heap. https://blog.stackademic.com/how-java-memory-works-c751460e3cbd 👉@BookJava

Как использовать JavaEE сервлет в Spring Framework? Web-приложение на Spring MVC технически само по себе работает на сервлетах: всю обработку запросов берет на себя единый DispatcherServlet. С его помощью реализуется паттерн Front Controller. Если вам нужно определить в программе полностью независимый от Spring-контекста сервлет или фильтр, ничего особенного для этого делать не нужно. Как обычно в Servlet API, нужно объявить класс, добавить его в web.xml как сервлет, добавить для сервлета маппинг. Сервлет живет вне Spring-контекста, внедрение зависимостей в нём просто так не заработает. Чтобы использовать autowiring, на этапе инициализации сервлета вызывается статический SpringBeanAutowiringSupport.processInjectionBasedOnServletContext, с текущим сервлетом и его контекстом в аргументах. В этом же утилитарном классе есть ряд других средств для работы с контекстом извне. Если программа построена на Spring Boot, создание бина типа ServletRegistrationBean поможет добавить сервлеты в рантайме. А для декларативного добавления на этапе компиляции, к классу конфигурации применяется @ServletComponentScan. С этой аннотацией стартер приложения просканирует и добавит в контекст все web-компоненты в стиле Servlet 3.0: классы с аннотациями @WebFilter, @WebListener и @WebServlet. 👉@BookJava

💪 Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS
💪 Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 . 🌲 А ещё, сейчас действуют новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/ctqXSy Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Как передать runtime информацию о generic-типе? Когда вы проектируете API-метод библиотеки, иногда логика его реализации может зависеть от указанного клиентом типа. Особенно часто с этой задачей встречаются при разработке парсеров. Например, библиотека Jackson превращает JSON в объект заданного класса. На интервью этот вопрос можно встретить в виде практической задачи. Первое, что приходит в голову для решения – дженерик-параметр. Такой подход не сработает, потому что тип будет стёрт во время компиляции, а логика будет происходить позже, во время выполнения. Решение, которое сработает для многих случаев – объявление в методе аргумента типа Class<T>. Пользователь будет передавать в него значение Foo.class или fooInstance.getClass(). Проблемы с ним начинаются, когда становится нужно передать generic-тип. Синтаксис .class не поддерживает дженерики, а .getClass() от экземпляров List<String> и List<Integer> вернет один и тот же объект-описание сырого типа List. На помощь приходит техника, описанная в предыдущей публикации. 1. Объявляется generic класс-обертка над типом: TypeInformation<T>;. Наш метод будет принимать информацию о типе в виде экземпляра этой обертки. 2. В обертку добавляется конструктор с видимостью protected. Теперь можно создавать объекты только наследников, но не самого этого типа. 3. Пользователь будет передавать экземпляр анонимного наследника обертки: new TypeInformation<List<String>>() {}. 4. Внутри вызов getClass().getGenericSuperclass() вернет ParameterizedType. Это будет описание типа родителя анонима, то есть самой обертки. Из него с помощью getActualTypeArguments() можно достать рантайм-информацию о значении дженерика (о List<String>). 👉@BookJava

Как разбить строку на слова? StringTokenizer – специально предназначенный для этого класс стандартной библиотеки Java. Ему ну
Как разбить строку на слова? StringTokenizer – специально предназначенный для этого класс стандартной библиотеки Java. Ему нужно задать разделители, по ним строка будет разделена на «токены». Это устаревший класс, он остается в библиотеке только для обратной совместимости. Вместо него рекомендуется использовать метод String.split(). Метод принимает строку с регулярным выражением, и опциональный лимит токенов. Реализация особенно оптимизирована для односимвольного разделителя. Но следует помнить, что даже если символ один, это всё ещё регулярное выражение – спецсимвол должен экранироваться. Другой подходящий метод – Pattern.split(). Он, наоборот, вызывается у регулярного выражения, а принимает целевую строку. В этот же метод делегируется и выполнение String.split(). Этот способ предпочтительнее, когда в регулярном выражении больше одного символа, а скомпилированный паттерн применяется повторно. 👉@BookJava

♨️ Хочешь выйти на новый профессиональный уровень джавист? - Осваивай Spring! Тест на знание языка Java — Ответь на 21 вопрос
♨️ Хочешь выйти на новый профессиональный уровень джавист? - Осваивай Spring! Тест на знание языка Java — Ответь на 21 вопрос и проверь, насколько хорошо nы знаешь язык Java и готовы освоить Spring. Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой! 👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework": https://vk.cc/ctosfe 🎫 Курс доступен для приобретения в рассрочку! 🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Операция «K». Ищем баги в коде IntelliJ IDEA В этой статье мы проверим проект IntelliJ IDEA Community Edition на наличие ошиб
Операция «K». Ищем баги в коде IntelliJ IDEA В этой статье мы проверим проект IntelliJ IDEA Community Edition на наличие ошибок и отправим наши правки разработчикам. Крупный проект, Open Source база и использование статического анализатора при разработке. Сложная задача для PVS-Studio. https://habr.com/ru/companies/pvs-studio/articles/780560/ 👉@BookJava

Beginning Java Objects: From Concepts to Code, 3rd Edition Автор: Jacquie Barker (2023) Среди многих привлекательных особенно
Beginning Java Objects: From Concepts to Code, 3rd Edition Автор: Jacquie Barker (2023) Среди многих привлекательных особенностей Java как языка программирования, его объектно-ориентированная природа является ключом к созданию мощного, многократно используемого кода и приложений, которые легко поддерживать и расширять. Чтобы воспользоваться этими возможностями, вам потребуется не только освоить синтаксис языка Java, но и получить практическое понимание того, что такое объекты, и, что еще важнее, как с нуля структурировать Java-приложение, чтобы максимально использовать объекты. Скачать 👉 @java_360

⚡️ Профессия Java-разработчик с нуля и до востребованного специалиста! Уже 29 декабря стартует новая группа специализации «Ja
⚡️ Профессия Java-разработчик с нуля и до востребованного специалиста! Уже 29 декабря стартует новая группа специализации «Java Developer» в OTUS. 👩‍💻 С нуля до Middle за 15 месяцев! На онлайн-курсе вы получите: ➡️ Уникальные знания от преподавателей — Senior Java-разработчиков ведущих IT-компаний. ➡️ Практику создания реальных проектов — разработка своего серверного приложения на Java ➡️ Актуальные навыки, необходимые для трудоустройства Middle Java-разработчиком ➡️ Вы освоите инструменты: IntelliJ IDEA, Java Development Kit (JDK), Spring Framework, Hibernate, PostgreSQL, Apache Maven, Gradle, Docker, Kubernetes, Apache Kafka, RabbitMQ, JUnit, Postman, Jira. 👉 Получить специальные условия на курс можно оставив заявку по ссылке: https://vk.cc/ctmBSF 🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Совет 💡 Самый простой способ сделать проверку нескольких полей без дополнительных классов и аннотаций - использовать @Assert
Совет 💡 Самый простой способ сделать проверку нескольких полей без дополнительных классов и аннотаций - использовать @AssertTrue. Вы помещаете его над методом, возвращающим булеву величину. Имя метода должно начинаться с "is". 👉@BookJava

Какой способ логирования выбрать? Библиотеки логирования, ставшие стандартом де-факто, в хронологическом порядке их появления: • java.util.Logging из стандартной библиотеки • Log4j (deprecated) • Logback • Log4j 2 Все эти библиотеки поддерживают основные фичи: уровни логирования (что писать), различные хэндлеры (куда писать), форматы (как писать). Развитие библиотек происходило последовательно, в нюансах каждая из них учитывала ошибки предыдущей, сохраняя её преимущества. Обычно выбирают самые свежие варианты – Logback и Log4j 2. Для совмещения нескольких решений в одном проекте существуют библиотеки-фасады, которые подставляют разные реализации под общий интерфейс: • SLF4j • Apache Commons Logging (JCL) Кроме того, можно использовать bridge-библиотеки. Они маскируют одну реализацию непосредственно под интерфейс другой. С их помощью, например, можно уместить в одном проекте использование двух разных фасадов, или обойтись вовсе без фасадов. 👉@BookJava

Подборка Telegram каналов для программистов Системное администрирование 📌 https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux https://t.me/tikon_1 Новости высоких технологий, науки и техники💡 https://t.me/mir_teh Мир технологий (Technology World) https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT. https://t.me/phis_mat Обучающие видео, книги по Физике и Математике https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Rus Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT Чат программистов📌 https://t.me/developers_ru Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов https://t.me/books_reserv Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/coddy_academy Полезные советы по программированию QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_1 Статьи из "Хакера" Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Английский 📌 https://t.me/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике Excel лайфхак📌 https://t.me/Excel_lifehack

Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако сущес
Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс TypedSort, который дает нам возможность передавать функцию в качестве параметра для сортировки. Это повышает безопасность типов в нашем коде. 👉@BookJava

🦾 Освойте востребованный фреймворк всего за 5 месяцев и создавайте приложения на Java 🔥🔝 Знание Spring Framework – один из
🦾 Освойте востребованный фреймворк всего за 5 месяцев и создавайте приложения на Java 🔥🔝 Знание Spring Framework – один из самых востребованных скиллов для разработчика, многие крупные проекты ищут именно таких специалистов на самые желанные офферы. 5️⃣ Вместе с OTUS вы можете освоить Spring всего за 5 месяцев в рамках курса «Разработчик на Spring Framework»! Что даст вам этот курс: ✔️ Умение эффективно работать в проектах, где есть Spring ✔️ Знание современных возможностей Spring ✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке ✔️ Умение быстро проходить путь от идеи до production-grade ✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5) 🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено. 🎫 Курс доступен для приобретения в рассрочку! Пройдите бесплатное вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом! ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/ctgKrW Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Как остановить поток? В Java поток представлен классом Thread. В нём есть метод stop(), но пользоваться им нельзя, метод помечен как deprecated. Такая жесткая остановка моментально возвращает все захваченные потоком мониторы, и защищенные ими данные могут оказаться в неконсистентном состоянии. Разработчики рекомендуют вместо этого использовать флаг, который будет показывать о намерении остановить поток. Флаг выставляется извне потока, а внутри проверяется в подходящий момент. Если нужно остановиться, поток просто выходит из метода run(). В качестве такого флага подойдет переменная типа AtomicBoolean. Когда в потоке используются блокирующие операции, обычно для определенного типа операции существует свой способ её прервать. Например, можно закрыть сокет, на котором поток ожидает. Для большинства блокирующих операций сработает метод Thread.interrupt(). С его помощью можно прервать Object.wait() и операции из NIO. Останется только правильно обработать такое прерывание. Прерванный wait() выбросит InterruptedException, Selector.select() вернет результат. Чтобы отличить осознанное прерывание с целью завершить тред от какого-либо другого, его обработку всё ещё необходимо снабдить проверкой флага. 👉@BookJava

🚀 Совет по Spring 🚀 Протоколирование HTTP-запросов с помощью фильтра CommonsRequestLoggingFilter Включите протоколирование запросов с помощью фильтра CommonsRequestLoggingFilter, чтобы получать подробную информацию о входящих запросах. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html 👉@BookJava

🔥 Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS
🔥 Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 . 🌲 А ещё, сейчас действуют новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/cteT1K Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Какой выбрать тип для даты/времени? В пакете java.util расположены старые классы стандартной библиотеки Java: Date (дата+время), Calendar (конвертация и манипуляция), TimeZone (смещение часового пояса). Эти классы обладали рядом известных проблем. Экземпляры были изменяемыми, что делало их потоко-небезопасными. Работа с датами через календарь была неудобной, не было нормальной поддержки часовых поясов и интернационализации. Постепенно стандартом де-факто стала сторонняя библиотека Joda-Time. Её разработчики решили все названные выше проблемы. В Java 8 был добавлен пакет java.time, который взял решения из Joda-Time в стандарт, создатель библиотеки участвовал в разработке. Ключевые классы пакета: • LocalDate, LocalTime и LocalDateTime – локальные для пользователя дата/время. • ZonedDateTime – дата/время в определенной часовой зоне. • Period и Duration – периоды дат и времени соответственно. Отдельно существуют классы Date и Time пакета java.sql. Это представление даты и времени для обмена данными через JDBC. Не стоит пользоваться ими вне уровня доступа к данным, хотя бы потому, что это классы-наследники старого java.util.Date. Таким образом, в проектах на Java 8+ нужно использовать современные java.time.*, для более старых – подключать Joda-Time. 👉@BookJava

Finding CPU Load with JFR. JDK Flight Recorder, в быту JFR Среда наблюдения и мониторинга, встроенная в JDK! Начиная с JDK 11
Finding CPU Load with JFR. JDK Flight Recorder, в быту JFR Среда наблюдения и мониторинга, встроенная в JDK! Начиная с JDK 11, JFR стал open-source и переименован в JDK Flight Recorder. Это делает JFR отличным выбором для отслеживания скрытых проблем, связанных с тем, почему приложение потребляет ресурсы, такие как CPU. В статье — о том, как работать с JFR. https://inside.java/2023/11/27/sip090/ 👉@BookJava