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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Библиотека Java разработчика analitikasi

Библиотека Java разработчика (@bookjava) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 269 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 12 023-o'rinni va Rossiya mintaqasida 63 951-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 10 269 obunachiga ega bo‘ldi.

08 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 23 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.31% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.05% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 854 marta ko‘riladi; birinchi sutkada odatda 416 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 6 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent string, интерфейс, строка, boot, api kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Yuqori yangilanish chastotasi (oxirgi ma’lumot 09 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

10 269
Obunachilar
-624 soatlar
-37 kunlar
+2330 kunlar
Postlar arxiv
Совет по Spring Boot💡 Когда вам нужно настроить bean, предоставляемый Spring Boot, проверьте наличие интерфейсов *Customizer
Совет по Spring Boot💡 Когда вам нужно настроить bean, предоставляемый Spring Boot, проверьте наличие интерфейсов *Customizer - велика вероятность, что вы сможете настроить bean, не отказываясь от автоконфигурации. 👉@BookJava

Что такое StringJoiner? ⚫️ObjDoubleConsumer<T> - операция, которая принимает два аргумента классов T и Double, производит с ними некоторое действие и ничего не возвращает; ⚫️ObjLongConsumer<T> - операция, которая принимает два аргумента классов T и Long, производит с ними некоторое действие и ничего не возвращает; ⚫️ObjIntConsumer<T> - операция, которая принимает два аргумента классов T и Integer, производит с ними некоторое действие и ничего не возвращает. 👉@BookJava

👨‍🎓 Java Developer Professional: Что говорят студенты о курсе? Сегодня один из выпускников курса Java Developer Professional от Отус, Алексей Андреев, расскажет о своем опыте. Смотреть видео отзыв: https://vk.cc/cxSnkL Студенты Java Developer Professional выделяют следующие преимущества курса: ✔️ Обилие практических заданий. ✔️ Высокая экспертиза преподавателей. ✔️ Интересный контент, особенно для тех, кто уже знаком с языком Java. После прохождения курса студенты чувствуют себя увереннее в профессиональной сфере и отмечают, что им легче развиваться в профессии. Группа стартует уже 27 июня! Успейте присоединится. Чтобы оценить свой уровень знаний для обучения на курсе, пройдите вступительный тест. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/cxSni4 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Spring Boot 3.2: замените свой RestTemplate на RestClient В мире Spring Boot отправка HTTP запросов к внешним сервисам являет
Spring Boot 3.2: замените свой RestTemplate на RestClient В мире Spring Boot отправка HTTP запросов к внешним сервисам является весьма распространенной задачей. Традиционно при достижении этой цели разработчики полагались на RestTemplate. Однако, по мере развития Spring Framework, на свет появился новый и более мощный способ обработки HTTP запросов: так называемый WebClient. Spring Boot 3.2 представил нам новый API для REST запросов: RestClient, использующий те же принципы fluent api, что и WebClient. RestClient предлагает нам более современные и интуитивно понятные способы взаимодействия с RESTful сервисами. https://habr.com/ru/companies/spring_aio/articles/822529/ 👉@BookJava

Реализация авторизации на основе ролей в Spring Boot с помощью Keycloak Контроль доступа на основе ролей является обязательны
Реализация авторизации на основе ролей в Spring Boot с помощью Keycloak Контроль доступа на основе ролей является обязательным условием для любого приложения, имеющего дело с пользователями, которые могут получать доступ к определенным ресурсам в зависимости от своей роли в организации. В предыдущей статье мы узнали, как защитить Spring Boot REST API с помощью Keycloak, используя протокол аутентификации OpenID Connect. В этой статье мы добавим авторизацию на основе ролей. Цель состоит в том, чтобы разрешить доступ к некоторым конечным точкам только пользователям с определенной ролью. Точнее, мы собираемся ограничить доступ к конечной точке DELETE и сделать его доступным только пользователям с ролью администратора. https://gauthier-cassany.com/posts/spring-boot-keycloak-roles 👉@BookJava

⁉ Готовы освоить любимый язык опытных разработчиков и сделать свой стек непобедимым? Ждём вас на открытом практическом уроке
⁉ Готовы освоить любимый язык опытных разработчиков и сделать свой стек непобедимым? Ждём вас на открытом практическом уроке «Знакомство с Clojure, идеология, синтаксис и основные особенности» от OTUS, где мы: - поговорим о том, что из себя представляет язык Clojure; - обсудим предысторию его появления и основную идеологию; - продемонстрируем выполнение кода в REPL и взаимодействие с ним из IDE; - ответим на все возникающие вопросы. 🔔Встречаемся 25 июня в 19:00 мск в рамках курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение! ➡ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок.

Как Spring Framework реализует паттерн Dependency Injection? Инверсия контроля (inversion of control, IoC) – принцип проектирования, по которому контроль над потоком управления передается фреймворку. Управляющий и прикладной код разделяются. При разработке модуля этот подход избавляет от необходимости знать о других модулях программы и деталях их взаимодействия. Такой код становится более переипользуемым и модульным, уменьшает связность. Внедрение зависимостей (Dependency Injection, DI) – одна из реализаций IoC. При взаимодействии с другими модулями, программа оперирует высокоуровневыми абстракциями, тогда как конкретная её реализация поставляется фреймворком. Стандартная реализация DI – фреймворк инстанциирует все сервисы, и складывает их в IoC-контейнер. При этом специальная сущность, Service Locator, занимается поиском соответствия реализаций абстракциям и их внедрением. Spring – большой набор различных библиотек. DI реализуется одной из основных библиотек – Spring IoC. Сущности бизнес-логики в Spring, как и в JavaEE называются beans. Бины объявляются различными способами, корни большинства из них лежат в понятии Configuration. В качестве контейнера бинов выступает ApplicationContext. Чтобы передать инициализацию зависимости контексту, она помечается аннотацией @Autowired. 👉@BookJava

Для чего нужны функциональные интерфейсы UnaryOperator<T>, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator? UnaryOperator<T> (унарный оператор) принимает в качестве параметра объект типа T, выполняет над ними операции и возвращает результат операций в виде объекта типа T: UnaryOperator<Integer> operator = x -> x * x; System.out.println(operator.apply(5)); // 25 ⚫️DoubleUnaryOperator - унарный оператор получающий на вход Double; ⚫️IntUnaryOperator - унарный оператор получающий на вход Integer; ⚫️LongUnaryOperator - унарный оператор получающий на вход Long. 👉@BookJava

🧑‍💻 Виды тестов. Основные инструменты и их использование Ждём вас на первом занятии серии открытых практических уроков по т
🧑‍💻 Виды тестов. Основные инструменты и их использование Ждём вас на первом занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS, где мы: - сделаем фокус на теории и основных инструментах тестирования Java-приложений; - обсудим, как сделать наше приложение тестируемым, какие тесты бывают и как для их написания использовать такие фреймворки и библиотеки как JUnit5, Mockito, AssertJ с учетом некоторых их особенностей и возможностей; - ответим на все возникающие вопросы. Спикер — Senior Software Engineer и опытный преподаватель. Встречаемся 24 июня в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework». Все участники вебинара получат специальную цену на обучение! 8️⃣9️⃣🔟Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cxOdSX 🎁 Только до 23 июня скидка на курс 10%, подробности у наших менеджеров - просто оставь заявку. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Обновление Java с 17 на 21: через тернии к звездам Меня зовут Денис, я тимлид команды R&D в Naumen Service Management Platform. Как большие почитатели языка Java, мы, Naumen Service Management Platform, стараемся мигрировать на свежие версии языка. Причин множество: это и улучшенная безопасность, и появление крутых языковых фич, и буст перформанса. Но путь не всегда оказывается простым. В докладе я расскажу, с какими проблемами и препятствиями мы столкнулись при обновлении продукта Naumen SMP на новую LTS версию Java. Также поделюсь мыслями, а зачем вообще стоит обновляться. Доклад будет полезен разработчикам и техлидам, которые задумываются или уже планируют миграцию их систем на Java 21. https://habr.com/ru/companies/naumen/articles/822639/ 👉@BookJava

Что делает семафор? Семафор – один из старейших примитивов синхронизации. Он был изобретен Дейкстрой в 1968 году. По большому счету это счетчик, который можно увеличивать и уменьшать из разных потоков. Уменьшение до 0 блокирует уменьшающий поток. Состояние, когда счетчик больше нуля называют сигнальное состояние, операцию его увеличения – release (освобождение) или signal, уменьшения – acquire (захват) или wait. На практике можно представить, что release – выделение квоты доступа к критической секции программы. acquire – использование необходимого объема доступной квоты, или ожидание, если её не хватает. В Java семафор реализован классом Semaphore. Состоит этот класс в основном из разных форм методов acquire (с таймаутом, с игнорированием InterruptedException, неблокирующий) и release. Методы могут принимать параметр permits – тот самый объем квот, которые необходимо освободить/захватить. Несколько вспомогательных методов позволяют узнать больше о количестве и составе очереди потоков, которые ждут освобождения пермитов. А методы availablePermits и drainPermits позволяют узнать количество оставшихся пермитов, и захватить их все соответственно. В конструкторе конфигурируются изначальное количество пермитов, и свойство fair (аналогичное свойству ReentrantLock). 👉@BookJava

🚀 От новичка до Middle+ в Java-разработке под руководством лучших экспертов ниши! Актуальное обучение для всех, кто хочет ст
🚀 От новичка до Middle+ в Java-разработке под руководством лучших экспертов ниши! Актуальное обучение для всех, кто хочет стать Java-разработчиком с нуля и для тех, кто еще не определился с языком программирования. 📌После онлайн-курса «Специализация Java-разработчик» от OTUS вы сможете: - создавать современные приложения на Java; - работать с реляционными базами данных; - разрабатывать серверные веб-приложения; - претендовать на позиции Middle Java Developer. Вы освоите самые востребованные инструменты и лучшие практики. Забудьте о скучном обучении — здесь вас ждут настоящие челленджи и нестандартные практические решения. А еще сильные проекты для портфолио и карьерный сапорт! 🎁 Успей на курс! Только до 23 июня скидка 10%, подробности у наших менеджеров - просто оставь заявку. Старт уже 28 июня. 👉 Изучите подробности и оставьте заявку, чтобы получить специальную цену на курс: https://vk.cc/cxMyWB Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Для чего нужны функциональные интерфейсы Function<T,R>, DoubleFunction<R>, IntFunction<R> и LongFunction<R>? Function<T, R> - интерфейс, с помощью которого реализуется функция, получающая на вход экземпляр класса T и возвращающая на выходе экземпляр класса R. Методы по умолчанию могут использоваться для построения цепочек вызовов (compose, andThen). Function<String, Integer> toInteger = Integer::valueOf; Function<String, String> backToString = toInteger.andThen(String::valueOf); backToString.apply("123"); // "123" ⚫️DoubleFunction<R> - функция получающая на вход Double и возвращающая на выходе экземпляр класса R; ⚫️IntFunction<R> - функция получающая на вход Integer и возвращающая на выходе экземпляр класса R; ⚫️LongFunction<R> - функция получающая на вход Long и возвращающая на выходе экземпляр класса R. 👉@BookJava

Что такое «функциональные интерфейсы»? Функциональный интерфейс - это интерфейс, который определяет только один абстрактный метод. Чтобы точно определить интерфейс как функциональный, добавлена аннотация @FunctionalInterface, работающая по принципу @Override. Она обозначит замысел и не даст определить второй абстрактный метод в интерфейсе. Интерфейс может включать сколько угодно default методов и при этом оставаться функциональным, потому что default методы - не абстрактные. 👉@BookJava

Как разобраться в вышмате за 1 вечер? 😨 Да никак. Но можно научиться понимать математику. И сберечь месяцы жизни, кучу нерво
Как разобраться в вышмате за 1 вечер? 😨 Да никак. Но можно научиться понимать математику. И сберечь месяцы жизни, кучу нервов и сил. В помощь вам - полезный канал о высшей математике. Его автор - выпускник СПБГУ, а ныне — преподаватель предмета. На простом языке объясняет сложные вещи, даёт шпаргалки и проводит эфиры с решением задач 📈 Находка для всех, кому нужен вышмат по жизни. От полезных материалов и разборов до ответов на любые вопросы и живых дискуссий в комментариях. Посмотрите сами 👉 @lav_math

Какие виды ссылок на методы вы знаете? ⚫️на статический метод; ⚫️на метод экземпляра; ⚫️на конструктор. 👉@BookJava

Как применяют технологию SPI Service Provider Interface – технология из стандартной поставки JavaSE. Этой технологией реализуется IoC, не являющаяся при этом DI. С помощью SPI можно легко и без дополнительных инструментов поставлять конкретные реализации сервисов отдельными jar-файлами. Применение обычно похоже на механизм плагинов. Два основных понятия SPI – это service и service provider. Service – интерфейс или абстрактный класс, который объявляет API требуемого сервиса, и предоставляется основным приложением. Service provider – реализация этого API, наследник класса/интерфейса сервиса, который динамически поставляется в основное приложение библиотекой-плагином. Для одного сервиса может быть предоставлено несколько провайдеров из одной или нескольких библиотек. На интерфейс сервиса не накладывается никаких ограничений. Провайдер же обязан реализовывать этот интерфейс, и иметь конструктор без параметров. Внутри jar-файла в директории META-INF/services лежат текстовые файлы, где имя файла – полное имя сервиса, а его строчки – полные имена провайдеров этого сервиса, которые поставляются этой библиотекой. Для получения провайдеров всех библиотек приложения используется класс ServiceLoader. Это итератор по сервис-провайдерам, а создается он статическим методом load, в который параметром передается интерфейс/абстрактный класс интересующего сервиса. Доступ к файлам-ресурсам из classpath обеспечивается загрузчиком классов, поэтому дополнительно при загрузке можно указать специфический загрузчик. С появлением модульности в Java 9 можно также указать модуль. SPI повсеместно используется в стандартной библиотеке JDK. С его помощью подключаются JDBC-драйверы. Через ServiceLoader также загружаются таймзоны, системные настройки, кодировки, провайдеры файловой системы и многое другое. 👉@BookJava

👩‍💻 Зачем Java-разработчикам Redis? Узнайте на открытом практическом уроке от OTUS, где мы: - посмотрим, как в Java-приложе
👩‍💻 Зачем Java-разработчикам Redis? Узнайте на открытом практическом уроке от OTUS, где мы: - посмотрим, как в Java-приложениях можно использовать Redis в качестве in-memory кеша; - увидим, для чего это может быть полезно и какие задачи можно решить; - ответим на все возникающие вопросы. Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик, Oracle Certified Professional, Java SE 8 Programmer. Встречаемся 25 июня в 20:00 мск в рамках курса «Java Developer. Professional». Все участники вебинара получат специальную цену на обучение! ➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cxJfdq Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Что такое «ссылка на метод»? Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механи
Что такое «ссылка на метод»? Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде: ⚫️имя_класса::имя_статического_метода для статического метода; ⚫️объект_класса::имя_метода для метода экземпляра; ⚫️название_класса::new для конструктора. Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод. private interface Measurable { public int length(String string); } public static void main(String[] args) { Measurable a = String::length; System.out.println(a.length("abc")); } Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод. 👉@BookJava

К каким переменным есть доступ у лямбда-выражений? Доступ к переменным внешней области действия из лямбда-выражения очень схож к доступу из анонимных объектов. Можно ссылаться на: неизменяемые (effectively final - не обязательно помеченные как final) локальные ⚫️переменные; ⚫️поля класса; ⚫️статические переменные. К методам по умолчанию реализуемого функционального интерфейса обращаться внутри лямбда-выражения запрещено. Как отсортировать список строк с помощью лямбда-выражения? public static List<String> sort(List<String> list){ Collections.sort(list, (a, b) -> a.compareTo(b)); return list; } 👉@BookJava