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

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

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram Библиотека Java разработчика

El canal Библиотека Java разработчика (@bookjava) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 10 101 suscriptores, ocupando la posición 11 696 en la categoría Tecnologías y Aplicaciones y el puesto 62 872 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 10 101 suscriptores.

Según los últimos datos del 31 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -89, y en las últimas 24 horas de -5, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 7.55%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 3.77% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 763 visualizaciones. En el primer día suele acumular 381 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 7.
  • Intereses temáticos: El contenido se centra en temas clave como string, интерфейс, строка, boot, api.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 01 septiembre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

10 101
Suscriptores
-524 horas
-297 días
-8930 días
Archivo de publicaciones
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

🌲Создайте интерактивную новогоднюю открытку на Java с нуля! 😳 Удивите близких, а заодно прокачайтесь в разработке на беспла
🌲Создайте интерактивную новогоднюю открытку на Java с нуля! 😳 Удивите близких, а заодно прокачайтесь в разработке на бесплатном практическом уроке от OTUS и Александра Фисунова – Senior Kotlin Developer в SSP Software на проекте ВТБ. В результате урока вы: ✔️ Увидите, как пишется код и создаются программы на Java ✔️ Сможете повторить все шаги и делать подобные открытки на любую тематику 📢📢 Занятие пройдёт 20 декабря в 20:00 мск и будет приурочено к старту курса «Специализация Java-разработчик». На нем вы сможете освоить профессию с нуля до уверенного Middle. 👉 Для бесплатного участия и получения записи урока регистрируйтесь прямо сейчас: https://vk.cc/cta36k Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Совет 💡 Установка @Column в updateable=false приводит к тому, что реализация JPA будет игнорировать этот столбец при выполне
Совет 💡 Установка @Column в updateable=false приводит к тому, что реализация JPA будет игнорировать этот столбец при выполнении оператора обновления. При этом не будет выброшено исключение. Это никак не влияет на базу данных. Вы по-прежнему можете обновлять столбец вне Hibernate. 👉@BookJava

Из каких основных сущностей состоит Spring-приложение? Bean – объект бизнес-логики в терминологии Spring Framework. BeanDefinition – описание того, как создавать бин. Объект хранит его тип, метаинформацию, набор параметров для конструктора. BeanFactory – главная точка входа в DI-контейнер. Хранит BeanDefinition-ы, умеет создавать по ним экземпляры бинов, или выдавать существующие, в зависимости от скоупа. BeanPostProcessor – донастраивает только что созданные бины, перед тем как положить их в контейнер. Его методы уже упоминались в публикации про жизненный цикл. Типичное место, чтобы оборачивать бины в прокси. Также с помощью такого пост-процессора внедряются @Autowired-зависимости. Пост-процессоры бинов живут внутри экземпляра BeanFactory. BeanFactoryPostProcessor – тоже пост-обработчик, но для определений бинов (BeanDefinition). Обычно используется для модификации параметров или класса, из которых будут строиться бины. Для создания определений бинов в основном применяются классы и интерфейсы *BeanDefinitionReader. Некоторые из них вызываются прямо из контекста приложения, другие реализуют BeanFactoryPostProcessor. Один такой пост-процессор, например, отвечает за добавление определений бинов по аннотациям @Component и @Configuration. Реализация интерфейса ApplicationContext – основное хранилище конфигурации Spring-приложения (или его части). Контекст неизменяем, но может быть целиком перезагружен. Xml-файл конфигурации на старте приложения превращается в объект *XmlApplicationContext. Для конфигурации на аннотациях создастся AnnotationConfigApplicationContext. Контекст выполняет четыре разных обязанности: 1. DI-контейнер. ApplicationContext функционирует как специальная реализация BeanFactory. Он также производит и хранит бины, но, в отличие от обычных фабрик, контексты в приложении составляют иерархию. Определения бинов из дочерних контекстов перекрывают родительские. 2. Загрузка ресурсов. Под интерфейсом ResourceLoader контекст занимается загрузкой в память приложения файлов, как из classpath, так и из остальной файловой системы. 3. Публикация событий приложения. Контекст распространяет в приложении «события» – наследники ApplicationEvent. Любой бин, которому нужно получать уведомления об этих событиях, просто реализует интерфейс ApplicationListener. Таким образом реализуется паттерн наблюдатель. 4. Интернационализация. По коду, набору аргументов и локали, через интерфейс контекста MessageSource можно получать локализованные текстовые сообщения для пользователей. 👉@BookJava

#вакансия #удалённо #parttime #koltin #преподаватель Время делиться знаниями! OTUS – образовательная платформа. У нас авторские курсы разной степени сложности, вступительное тестирование для студентов и преподаватели-практики из крупнейших компаний. 6 лет мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT. Вакансия: преподаватель на кастомный онлайн курс - "Kotlin backend" Можно без опыта преподавания, мы поможем вам освоить практики преподавания Преподаватель раскрывает тему с помощью теории и примеров из практики. Занятия в zoom в дневное время. Можно выбрать удобную нагрузку и темы занятий. С нами вы сможете ✅ -получать за проведение 1 вебинара - 10.000 рублей + за проверку 1 дз - 500 рублей - структурировать свой опыт и знания; - прокачать софт-скиллы; Бонусы 🎁 - наши курсы со скидкой/бесплатно; - можно приглашать лучших выпускников к себе на работу; - воркшопы и конференции для наших преподавателей. Обсудить подробнее @HR_Nikita

В каких случаях разумно использовать массив, а не ArrayList? Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях: — Нужен предсказуемый и строгий контроль размера массива. Массивы имеют фиксированный размер, в отличие от ArrayList. — Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList. — Нужно создать структуру данных, которая должна быть неизменяемой. — Требуется тесная интеграция с существующим кодом на основе обычных массивов. Переход на ArrayList может потребовать значительный рефакторинг. — Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д. — Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера. 👉@BookJava

@TransactionalEventListener Используйте @TransactionalEventListener для выполнения определенной логики после успешной фиксации транзакции. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/event/TransactionalEventListener.html 👉@BookJava

Старт подготовительного курса по Java-разработке. ⏰ Когда: уже 12 декабря. Даем: 62 урока с практикой в браузере, 3 онлайн ве
Старт подготовительного курса по Java-разработке. ⏰ Когда: уже 12 декабря. Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком. Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником. Всего 990 ₽ и ваше жгучее желание начать. Приходите с любым бэкграундом: нам не важны возраст, пол, образование и текущая профессия. Запишитесь прямо сейчас! Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

Команда Поиска и рекламных технологий Яндекса приглашает на митап для senior бэкенд-разработчиков в Екатеринбурге. Поговорим
Команда Поиска и рекламных технологий Яндекса приглашает на митап для senior бэкенд-разработчиков в Екатеринбурге. Поговорим про разработку, поиграем в квиз, понетворкаемся и просто хорошо проведем время. 12 декабря, 18:00. Регистрируйтесь, количество мест в офлайне ограничено!

Немного о гигиене Java кода Во время код-ревью или работы над новым проектом может раздражать многое: стиль, подходы, качеств
Немного о гигиене Java кода Во время код-ревью или работы над новым проектом может раздражать многое: стиль, подходы, качество. Но больше всего расстраивает банальный недостаток гигиены кода. В связи с регулярностью проблемы хочется на неё обратить внимание и напомнить, как гигиену поддерживать. Разумеется, все мы люди, живущие в несовершенном мире. Поэтому последнее, что мне хочется, это журить и так стеснённых обстоятельствами программистов. Тем более не хочется почём зря ругать разработчиков Open Source проектов. Но сейчас я предлагаю побыть перфекционистами и вспомнить все те случаи, когда с подобным кодом приходилось иметь дело вам. https://habr.com/ru/companies/pvs-studio/articles/779300/ 👉@BookJava

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

📣 Новосибирск, готовы проверить свои знания в сфере IT? Будет интересно как новичкам, так и профессионалам в области информа
📣 Новосибирск, готовы проверить свои знания в сфере IT? Будет интересно как новичкам, так и профессионалам в области информационных технологий. Обещаем много нетворкинга и интересных заданий: 5 раундов по 10 вопросов от простого к сложному. Приходите сами и приглашайте коллег! ☺️ Если вы участвуете командой, регистрацию нужно пройти всем участникам команды. Если команды у вас нет — не страшно, мы найдём её для вас! Максимальное количество участников команды — 10 человек. Формат: очный 📅 13 декабря ⏰ 18:30 📍 Новосибирск, ул. Коммунистическая 14, лофт «Food Factory» Зарегистрироваться ⚡️

Шпаргалка по паттернам проектирования 👉@BookJava
+1
Шпаргалка по паттернам проектирования 👉@BookJava

Распространенные ошибки начинающих Java-разработчиков при работе с Hibernate Hibernate - это мощный фреймворк объектно-реляци
Распространенные ошибки начинающих Java-разработчиков при работе с Hibernate Hibernate - это мощный фреймворк объектно-реляционного отображения (ORM) для Java, который упрощает взаимодействие с базами данных. Это универсальный инструмент, но, как и любая другая технология, он может быть сложным, особенно для начинающих Java-разработчиков. В этой статье мы рассмотрим некоторые распространенные ошибки, которые часто допускают начинающие разработчики при работе с Hibernate, и узнаем, как их избежать. https://dev.to/jackynote/common-mistakes-of-junior-java-developers-when-working-with-hibernate-3dl8 👉@BookJava

👩‍💻 Какие компетенции отличают востребованных Java-разработчиков? ➡️ Узнайте и освойте его на бесплатном практическом уроке
👩‍💻 Какие компетенции отличают востребованных Java-разработчиков? ➡️ Узнайте и освойте его на бесплатном практическом уроке «Разрабатываем appender для Logback». На вебинаре разберём, как можно сделать самодельный appender для Logback, который будет отправлять логи в TCP-сервер логирования. Также эксперт подробно ответит на любые возникающие вопросы. 📢📢 Занятие пройдёт 12 декабря в 20:00 мск и будет приурочено к старту курса «Java Developer. Professional». После урока вы сможете продолжить обучение в рассрочку. 👉 Для бесплатного участия и получения записи зарегистрируйтесь прямо сейчас: https://vk.cc/csXyJj Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Как прочитать InputStream в строку? Обычно строковые данные извне попадают в программу именно в виде потока. Потоком читаются файлы, сетевые данные из сокета, пользовательский ввод. Если есть такая возможность, лучше избегать сохранения потоковых данных в память, и обрабатывать их также в потоке. Например, когда из большого xml-файла необходимо достать один определенный элемент, имеет смысл выбрать потоковый xml-парсер. В общем виде все решения выглядят так. Заводится буфер – массив символов. Поток направляется в этот буфер. По заполнению данные из массива присоединяются в хвост строки-результата. Простой способ – использовать трюк со сканером. Вообще класс Scanner читает из потока подстроки, разделенные указанным символом. Когда нужно прочитать всю строку сразу, в качестве разделителя устанавливается "\\A" – спецсимвол «начало строки». Это решение просто в реализации, но имеет проблемы. Размер внутреннего буфера фиксирован (1024 символа), а логика поиска разделителя плохо влияет на производительность. Хорошее решение для продакшна – читать в собственный массив-буфер непосредственно методом InputStream.read, либо обернув поток в InputStreamReader. Данные из буфера затем переправляются в строку через StringBuilder или ByteArrayOutputStream. За готовой реализацией можно обратиться в библиотеки Apache Commons IO и Google Guava. Полный код реализации и сравнение производительности описаны на stackoverflow. На интервью этот вопрос часто возникает как часть практической задачи, для консольного ввода-вывода. Поэтому, если вы идете на собеседование со своим компьютером, и неуверенно владеете классами работы с потоками, стоит заранее подготовить шпаргалку с кодом. 👉@BookJava

Модельно-Ориентированная Java, или Навстречу Дизайну ПО Модельно-ориентированный метод (MDE) широко применяется во многих сфе
Модельно-Ориентированная Java, или Навстречу Дизайну ПО Модельно-ориентированный метод (MDE) широко применяется во многих сферах современной инженерии; в программировании он позволяет разделить деятельность, направленную на создание универсального описания продукта, от деятельности по написанию кода, который бы эту модель воплощал в реальность. На практике, в мире Java эти деятельности по-сути совмещены воедино языком программирования, так как мы определяем интерфейсы на том же языке, на котором потом и пишем реализацию, поэтому грань между моделью и кодом может быть не так очевидна. Однако, она отчетливо проявляется, когда требуется интегрировать нашу программу в работу более сложных систем: например, я бы хотел запускать мою CLI утилиту как сервис, доступ к которому можно было бы получить через любой язык программирования по сокетам, сохранив при этом хороший Dev-X с автозаполнением полей и описанием опций. Сделаем это в 3 этапа под катом: во-первых, сконвертируем существующий Java-класс, который описывает флаги, в модельно-ориентированный XML, затем из него сгенерируем protobuf файлы для бинарного обмена данными и в завершение скомпилируем их для JavaScript и Java, обернув в приличный JSDoc. В конце обсудим все преимущества работы "на модель" и будущее роли дизайна при разработке ПО. https://habr.com/ru/articles/761414/ 👉@BookJava

Не трогайте, это на Новый год! Профессия «Java-разработчик» 🎁 🎊 Получите скидку до 30 000 р. и кэшбек на карту до 25 000 р.
Не трогайте, это на Новый год! Профессия «Java-разработчик» 🎁 🎊 Получите скидку до 30 000 р. и кэшбек на карту до 25 000 р. при успешном прохождении обучения! Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring. Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT.  Вы научитесь подбирать правильные структуры для хранения и обработки данных, познакомитесь с автоматизированным тестированием и напишите свои первые модульные тесты. 📌 Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия! Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

Расскажите про приведение типов. Что такое понижение и повышение типа? Java является строго типизированным языком программирования, а это означает, то что каждое выражение и каждая переменная имеет строго определенный тип уже на момент компиляции. Однако определен механизм приведения типов (casting) - способ преобразования значения переменной одного типа в значение другого типа. В Java существуют несколько разновидностей приведения: • Тождественное (identity). Преобразование выражения любого типа к точно такому же типу всегда допустимо и происходит автоматически. • Расширение (повышение, upcasting) примитивного типа (widening primitive). Означает, что осуществляется переход от менее емкого типа к более ёмкому. Например, от типа byte (длина 1 байт) к типу int (длина 4 байта). Такие преобразование безопасны в том смысле, что новый тип всегда гарантировано вмещает в себя все данные, которые хранились в старом типе и таким образом не происходит потери данных. Этот тип приведения всегда допустим и происходит автоматически. • Сужение (понижение, downcasting) примитивного типа (narrowing primitive). Означает, что переход осуществляется от более емкого типа к менее емкому. При таком преобразовании есть риск потерять данные. Например, если число типа int было больше 127, то при приведении его к byte значения битов старше восьмого будут потеряны. В Java такое преобразование должно совершаться явным образом, при этом все старшие биты, не умещающиеся в новом типе, просто отбрасываются - никакого округления или других действий для получения более корректного результата не производится. • Расширение объектного типа (widening reference). Означает неявное восходящее приведение типов или переход от более конкретного типа к менее конкретному, т.е. переход от потомка к предку. Разрешено всегда и происходит автоматически. • Сужение объектного типа (narrowing reference). Означает нисходящее приведение, то есть приведение от предка к потомку (подтипу). Возможно только если исходная переменная является подтипом приводимого типа. При несоответствии типов в момент выполнения выбрасывается исключение ClassCastException. Требует явного указания типа. • Преобразование к строке (to String). Любой тип может быть приведен к строке, т.е. к экземпляру класса String. • Запрещенные преобразования (forbidden). Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того, невозможно привести друг к другу классы, находящиеся на разных ветвях дерева наследования и т.п. При приведении ссылочных типов с самим объектом ничего не происходит - меняется лишь тип ссылки, через которую происходит обращение к объекту. Для проверки возможности приведения нужно воспользоваться оператором instanceof: Parent parent = new Child(); if (parent instanceof Child) { Child child = (Child) parent; } 👉@BookJava

Какие подходы применять в разработке микросервисов? Узнайте на бесплатном практическом уроке «Основные паттерны использования
Какие подходы применять в разработке микросервисов? Узнайте на бесплатном практическом уроке «Основные паттерны использования GraphQL и gRPC» от OTUS. На вебинаре: - рассмотрим основные паттерны и подходы к использованию GraphQL и gRPC; - рассмотрим паттерн запрос-ответ; - обсудим различия между GraphQL и gRPC и их преимущества и недостатки в различных сценариях; - изучим паттерны запроса типа «одно на много» и «много на много», а также подходы к управлению версиями. Занятие пройдёт 12 декабря в 17:00 мск и будет будет приурочено к старту курса «Microservice Architecture». После урока вы сможете продолжить обучение в рассрочку. Для бесплатного участия и получения записи зарегистрируйтесь прямо сейчас: https://vk.cc/csVc8i