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 279 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 12 030-o'rinni va Rossiya mintaqasida 63 913-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

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

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

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.29% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.77% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 852 marta ko‘riladi; birinchi sutkada odatda 388 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 06 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 279
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
+2030 kunlar
Postlar arxiv
Совет 💡 Добавьте в JDBC URL свойство ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сесс
Совет 💡 Добавьте в JDBC URL свойство ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД. 👉@BookJava

🚀 Подборка Telegram каналов для программистов Системное администрирование, DevOps 📌 https://t.me/bash_srv Bash Советы https://t.me/win_sysadmin Системный Администратор Windows https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор 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 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С https://t.me/DevLab1C 1С:Предприятие 8 https://t.me/razrab_1C 1C Разработчик https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт https://t.me/rabota1C_rus Вакансии для программистов 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 академия. https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python 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/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Big Data, Machine Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста https://t.me/lifeproger Жизнь программиста. Авторский канал. QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_2 Хакер Free Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике https://t.me/matgeoru Математика | Геометрия | Логика Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

🧠 Быстрый профилинг Java: -XX:+PrintCompilation Хотите понять, что JIT-компилятор делает с вашим кодом и где реально тратитс
🧠 Быстрый профилинг Java: -XX:+PrintCompilation Хотите понять, что JIT-компилятор делает с вашим кодом и где реально тратится время? Есть скрытая, но очень полезная фича JVM — флаг:

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -jar app.jar
📌 Что даёт? JVM начнёт логировать все методы, которые JIT компилирует, и в какой момент. Вы увидите: - какие методы вызываются чаще всего (горячие точки); - какие инлайнятся и оптимизируются; - где есть неожиданные “узкие места”. 💡 Зачем это нужно? - Быстро найти кандидатов на оптимизацию; - Понять, почему приложение медленно стартует (компиляция тяжёлых методов); - Увидеть, какие части кода JIT не трогает (и, возможно, почему). ⚠️ Нюанс: это диагностический инструмент. На продакшене лучше использовать аккуратно (или дублировать трафик на стенд). 👉 Хочешь глубже? Смотри ещё -XX:+PrintInlining — покажет какие методы JVM решила инлайнить (и почему отказалась). Быстрый взгляд на JIT — и вы понимаете поведение кода куда глубже. 👉@BookJava

👩‍💻 31 июля стартует курс «Java-разработчик» от OTUS — это то, что нужно, если вы хотите успешно вкатиться в разработку в 2
👩‍💻 31 июля стартует курс «Java-разработчик» от OTUS — это то, что нужно, если вы хотите успешно вкатиться в разработку в 2025 🦾 Вас ждет огромное количество практики и реальные кейсы: настройка окружения, базовые алгоритмы, синтаксис Java, Spring и Docker. Мы покажем, почему диплом OTUS ценят HR в крупных компаниях. Если вы сисадмин, тестировщик, аналитик или просто хотите освоить программирование с нуля — этот курс для вас. Мы научим создавать серверные веб-приложения, работать с PostgreSQL, Kafka и Kubernetes, формировать портфолио и готовить резюме под Middle-Java-Dev. 🎁 Дарим промокод, который дает скидку на обучение - JAVA7 👉 Оставьте заявку и и присоединяйтесь к группе: https://vk.cc/cNTEMq Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Функциональное программирование в Java с использованием потоков (Streams) и лямбд (Lambdas) Потоки обрабатывают фильтрацию, с
Функциональное программирование в Java с использованием потоков (Streams) и лямбд (Lambdas) Потоки обрабатывают фильтрацию, сортировку и агрегацию, а лямбды упрощают определение функций. В Spring они лежат в основе реактивных API, а в соревновательном программировании — позволяют оптимизировать работу с данными. Пример ниже демонстрирует REST-эндпоинт на Spring для фильтрации пользователей и алгоритм в стиле соревнований для поиска лучшего игрока. 👉@BookJava

🧠 Как ускорить Spring Boot при старте: spring-context-indexer При старте Spring Boot-приложения много времени уходит на clas
🧠 Как ускорить Spring Boot при старте: spring-context-indexer При старте Spring Boot-приложения много времени уходит на classpath scanning. Даже если вы используете @ComponentScan, Spring всё равно перебирает кучу классов в поиске бин-кандидатов. Это рефлексивно и медленно. 📌 Есть способ это оптимизировать — spring-context-indexer. 🔧 Что делать 1. Добавьте зависимость в pom.xml:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-indexer</artifactId>
  <version>6.1.3</version> <!-- актуальная для Spring Boot 3 -->
  <optional>true</optional>
</dependency>
2. Всё! Spring Boot на этапе компиляции сгенерирует индекс классов с аннотациями (@Component, @Service, @Repository, и т.п.) в META-INF/spring.components. 3. При старте приложения Spring сначала смотрит в индекс, а не сканирует classpath целиком. 💡 Полезно, если: - У вас много модулей; - Вы используете fat JAR; - Приложение долго стартует и важна скорость. ⚠️ Важно - Работает только с аннотациями Spring, не с кастомными; - Не забудьте включить annotation processing в IDE (особенно в IntelliJ: Settings → Build, Execution, Deployment → Compiler → Annotation Processors). 📊 Профит: в крупных проектах — до 30–50% ускорения старта. 👉@BookJava

👩‍💻 Ваши Java-приложения под нагрузкой едва дышат? Профилирование и оптимизация кода остаются за скобками? Курс «Java Devel
👩‍💻 Ваши Java-приложения под нагрузкой едва дышат? Профилирование и оптимизация кода остаются за скобками? Курс «Java Developer. Advanced» от OTUS — это глубокое погружение в устройство JVM, байткод, сборщики мусора, профилирование и оптимизацию в облаке. Наши эксперты-практики покажут, как выбрать GC, снять дамп памяти и обнаружить утечки, как профилировать “горячие” места, настраивать интеграцию с Prometheus & Grafana и деплоить сервисы в Kubernetes. 🦾 Вы научитесь обосновывать выбор JVM-имплементации, анализировать heap-дампы, синхронизировать потоки, использовать Reactor и неблокирующие I/O, проектировать метрики и трассировку. 🎁 Дарим промокод, который дает скидку на обучение - JVADV7 ➡️ Пройдите короткий тест и присоединяйтесь к группе: https://vk.cc/cNLBLc Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Определение и отличие IP адресов LAN, PPP в Java Чтобы определить IP-адрес локальной машины с использованием Java, примените
Определение и отличие IP адресов LAN, PPP в Java Чтобы определить IP-адрес локальной машины с использованием Java, примените следующий код:

import java.net.*;

public class GetIP {
    public static void main(String[] args) throws UnknownHostException {
        System.out.println(InetAddress.getLocalHost().getHostAddress());
    }
}
Работа с несколькими сетевыми интерфейсами Если ваш компьютер оснащён несколькими сетевыми интерфейсами, иногда бывает необходимо обойти весь список интерфейсов и отфильтровать адреса, не являющиеся обратными петлями и являющиеся локальными для сайта. Это особенно актуально при работе в средах с многочисленными сетями.

import java.net.*;
import java.util.*;

public class GetMultiIPs {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface iface = interfaces.nextElement();
            if (iface.isLoopback() || !iface.isUp()) continue;
            
            Enumeration<InetAddress> addresses = iface.getInetAddresses();
            while(addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                if (addr instanceof Inet4Address) {
                    System.out.println(iface.getDisplayName() + " – " + addr.getHostAddress());
                }
            }
        }
    }
}
👉@BookJava

Совет по Java 💡 Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы п
Совет по Java 💡 Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы переменным, имена которых начинаются с "by". Таким образом, вызов sorted() становится меньше и читается почти как естественный язык. Кроме того, вы можете использовать статический импорт. 👉@BookJava

👩‍💻Открытый урок «Как победить кодировки и стать Гуру Unicode?». 🗓 17 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта
👩‍💻Открытый урок «Как победить кодировки и стать Гуру Unicode?». 🗓 17 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик». Ошибки в кодировках ломают приложения, превращая текст в «абракадабру». Понимание таблиц кодировок — must-have навык для работы с данными, файлами и международными проектами. О чём поговорим: ✔️ ASCII, UTF-8, Unicode — WTF? Разберём, как Java хранит и обрабатывает текст. ✔️ Почему файлы «ломаются»? Как избежать ошибок при чтении/записи данных. ✔️ Лайфхаки для юникода: работа с иероглифами и русским языком. ✔️ Секреты JVM: как настроить кодировку в проекте. Кому будет интересно: Начинающим Java-разработчикам и тестировщикам, сталкивающимся с международными данными и проблемами кодировки. 🔗 Ссылка на регистрацию: https://vk.cc/cNHXJC Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

В чем суть принципа DI из SOLID, и почему с ним так много проблем? DI — это Dependency Inversion Principle, последний принцип
В чем суть принципа DI из SOLID, и почему с ним так много проблем? DI — это Dependency Inversion Principle, последний принцип из SOLID. Его суть:
🧠 Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
🔍 Переводим на практику: Вместо того чтобы класс сам создавал зависимости (new внутри), он получает их снаружи — через конструктор, сеттер или метод. Это и называется внедрение зависимостей (Dependency Injection). Пример без DI (нарушение DIP):

class UserService {
    private final UserRepository repo = new UserRepository(); // жесткая связка
}
Пример с DI:

class UserService {
    private final UserRepository repo;
    
    public UserService(UserRepository repo) {
        this.repo = repo;
    }
}
Теперь можно легко подменять реализацию UserRepository, например, на InMemoryUserRepository в тестах — и UserService даже не узнает. ⚠️ Почему с этим столько проблем? 1. Избыточность на старте. Для новичков DIP и DI выглядят как «лишние классы и абстракции ни о чём». 2. Сложность в управлении графом зависимостей. Особенно в больших системах, где всё зависит от всего. 3. Контейнеры DI (Spring, Guice, Dagger) могут всё усложнить — магия, ленивая инициализация, прокси, ошибки в рантайме. 4. Соблазн абстрагироваться ради абстракции. Когда вместо пользы получаем тонну интерфейсов без альтернативных реализаций. 💡 Советы: - Используй DI, но не злоупотребляй абстракциями без нужды. - Всегда пиши под интерфейс, если есть потенциально 2+ реализации. - Контейнеры типа Spring делают DI удобным, но важно понимать, что именно они делают под капотом. 📌 DIP — это не про контейнеры, это про независимость и заменяемость. 👉@BookJava

Советы по Java 💡 Как инициализировать collections или map в Java? Конечно, вы можете использовать, например, статическую ини
Советы по Java 💡 Как инициализировать collections или map в Java? Конечно, вы можете использовать, например, статическую инициализацию фабрики (`List.of(...)` или `Map.of(...)`). Но вы также можете воспользоваться функцией "инициализации двойной скобкой" 👉@BookJava

Новая вакансия! Стажёр, мечтающий построить карьеру в ИТ 📍 Локация: вся Россия и всемирная сеть Интернет График: свободный Опыт: необязателен, но желание и любопытство — строго необходимо. 📝 Задачи: – листать свежие стажировки и откликаться по ссылкам, – читать истории других стажёров, – заглядывать на вебинары, хакатоны и карьерные мероприятия, – задавать вопросы и учиться. 💡 От нас: – возможность трудоустройства в атомной отрасли, – шанс поработать под руководством топовых ИТ-экспертов – сообщество таких же увлечённых молодых специалистов. Подписывайтесь на ИТ-стажировки Росатома и следите за обновлениями.

Совет 💡 Если вы хотите получить сообщение о первопричине, вы можете легко и безопасно получить его с помощью Apache Commons
Совет 💡 Если вы хотите получить сообщение о первопричине, вы можете легко и безопасно получить его с помощью Apache Commons ExceptionUtils. Методы getRootCauseMessage(Exception ex) выдают сообщение в виде {ClassNameWithoutPackage} {ThrowableMessage} 👉@BookJava

⚖️ 👩‍💻 LangChain в Java: Langchain4j, Quarkus, Spring Boot LangChain открывает мощные возможности LLM в приложениях Java, у
⚖️ 👩‍💻 LangChain в Java: Langchain4j, Quarkus, Spring Boot LangChain открывает мощные возможности LLM в приложениях Java, упрощая интеграцию ИИ в сервисы на Quarkus и Spring Boot. 🗓 17 июня в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced». 📌О чём поговорим: - Framework LangChain: ключевые концепции и архитектура. - Langchain4j: возможности Java-библиотеки. - Интеграция Langchain4j в проекты на Spring Boot и Quarkus. - Spring AI: фреймворк для работы с LLM в Spring. 📌Кому будет интересно: Java-разработчикам, архитекторам ПО и инженерам ML Ops, планирующим внедрять LLM в микросервисы на Quarkus или Spring Boot. 📌В результате урока вы: Познакомитесь с Langchain4j и сможете написать простой Java-сервис, использующий LLM. 🔗 Ссылка на регистрацию: https://vk.cc/cNzO2i Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java spring exception handling | обработка исключений за 5 минут В этом видео речь пойдет об обработке исключений на уровне контроллера на языке Java. Покажу, какие инструменты есть у Spring. 00:23 - try catch, ResponseEntity 00:47 - наследование ResponseStatusException 01:10 - настройки отображения сообщения, названия ошибки и стек трейс в ответе 01:47 - бросаем ResponseStatusException 02:04 - аннотация @ ExceptionHandler 03:05 - аннотация @ RestControllerAdvice 03:40 - кастомный объект вместо ResponseEntity 04:02 - аннотация @ ResponseStatus Код можно посмотреть тут: https://github.com/dispikerton/exceptionHandling источник 👉@BookJava

Как просуммировать элементы массива? 👉@BookJava

15 июля в 20:00 МСК OTUS проведёт открытый урок «Нормальная денормализация» — ключевой приём для оптимизации доступа к данным
15 июля в 20:00 МСК OTUS проведёт открытый урок «Нормальная денормализация» — ключевой приём для оптимизации доступа к данным в NoSQL. На примере Spring Data MongoDB разберём, как настраивать связи между сущностями: когда выбрать вложенные документы, а когда — ссылочные связи. Вы поймёте, как денормализация влияет на производительность запросов, расходы на память и сложность поддержки. Урок будет полезен Java-разработчикам, backend-инженерам и архитекторам, работающим с MongoDB. Вы получите готовые шаблоны организации данных в Spring-приложениях, избежите типичных ошибок при проектировании схемы и сможете принимать обоснованные архитектурные решения. Присоединяйтесь к уроку и получите скидку на полный курс «Разработчик на Spring Framework». Регистрируйтесь прямо сейчас: https://vk.cc/cNzDh0 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🚀 Совет по Java API Периоды дня в форматах java.time Если вы хотите указать период дня, например «утром», «днем» или «ночью»
🚀 Совет по Java API Периоды дня в форматах java.time Если вы хотите указать период дня, например «утром», «днем» или «ночью», используйте шаблон форматирования с символом B. 🔥 👉@BookJava

🧠 Stream API vs. for-loop: когда лучше не использовать Stream Всё чаще вижу, как даже простые циклы заменяют на Stream API "
🧠 Stream API vs. for-loop: когда лучше не использовать Stream Всё чаще вижу, как даже простые циклы заменяют на Stream API "для красоты". Но в ряде случаев это бьёт по производительности и читаемости. 📌 Пример:

// Было
for (User user : users) {
    if (user.isActive()) {
        return user;
    }
}

// Стало
return users.stream()
    .filter(User::isActive)
    .findFirst()
    .orElse(null);
💡 Выглядит элегантно, но… ⚠️ Проблема: stream() создает итератор, лямбду, объект Optional, плюс возможен autoboxing. А обычный for — просто цикл. 📊 Бенчмарк (JMH): * for-loop быстрее на ~30-50% на коротких коллекциях (до 1000 элементов). * На больших коллекциях разница сокращается, но for всё равно стабильнее. 📌 Когда лучше использовать for: * Нужно выйти из цикла при первом совпадении. * Важна максимальная производительность. * Код должен быть суперчитаемым и без лишних аллокаций. 📌 Когда можно Stream: * Фильтрации, маппинги, группировки — когда логика сложнее. * Обработка больших потоков с parallelStream() (осторожно!). * Когда читаемость выигрывает из-за декларативности. ✅ Вывод: Stream API — мощный инструмент, но не замена всему подряд. Иногда простой for — это и быстрее, и понятнее. 👉@BookJava