Библиотека джависта | Java, Spring, Maven, Hibernate
24.1K subscribers
2K photos
38 videos
42 files
2.83K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
🆕 Java Digest: подборка материалов

🔹 Demystifying Spring Boot With Spring Debugger

Обзор плагина Spring Debugger от JetBrains. Этот плагин позволяет удобнее дебажить Spring-приложения, а еще наглядно показывает, какие бины загружены в контекст, какие свойства какими значениями проинициализированы и какая транзакция активна на момент той или иной точки остановки.

🔹
Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 1

Перевод доклада Мацея Валковяка Performance oriented Spring Data JPA & Hibernate, сделанный командой Spring АйО. Это первая из трех частей, и она сконцентрирована на управлении коннектами к БД.

🔹 Premature Design Is Not Design

В статье автор рассказывает о том, как преждевременное переусложенение дизайна приложений может привести к проблемам. Приводятся два примера: использование RBAC и DRY.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1
😮 Топ-вакансий для джавистов за неделю

Java-разработчик — 250 000 —‍ 450 000 ₽ — гибрид (Москва, Санкт-Петербург, Екатеринбург, Новосибирск, Казань)

Java-разработчик (Система непрерывной интеграции и развёртывания) — 250 000 —‍ 450 000 ₽ —гибрид (Москва, Санкт-Петербург, Екатеринбург, Новосибирск, Казань)

Java разработчик (продукт «Справочники») — от 200 000 до 300 000 ₽ —гибрид (Москва)

Java Developer — 280 000 —‍ 320 000 ₽ —гибрид (Москва)

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
🔍 Как подключить Apache Kafka к проекту

Apache Kafka — это распределённая система обработки потоковых данных, которая часто используется для обработки больших объёмов сообщений в реальном времени. В этом посте мы разберём пошаговое подключение Kafka к проекту.

1️⃣ Подготовка

Для начала вам нужно добавить зависимости.
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.0.0</version>
</dependency>
ИЛИ
implementation 'org.apache.kafka:kafka-clients:3.0.0'


Убедитесь, что у вас установлен Apache Kafka и Zookeeper, или используйте сервисы, такие как Confluent Cloud.

2️⃣ Настройка KafkaProducer

KafkaProducer используется для отправки сообщений в Kafka. Вот пример создания продюсера, который будет отправлять сообщения в топик Kafka.

Шаг 1. Создайте конфигурацию продюсера:
public class KafkaProducerConfig {

public KafkaProducer<String, String> createProducer() {
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

return new KafkaProducer<>(properties);
}
}


Шаг 2. Отправка сообщения:
public class KafkaMessageSender {

public void sendMessage(String topic, String message) {
KafkaProducer<String, String> producer = new KafkaProducerConfig().createProducer();

ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);

try {
producer.send(record, (metadata, exception) -> {
if (exception != null) {
exception.printStackTrace();
} else {
System.out.println("Сообщение отправлено в " + metadata.topic());
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
producer.close();
}
}
}


3️⃣ Настройка KafkaConsumer

Шаг 1. Создайте конфигурацию консюмера:
public class KafkaConsumerConfig {

public KafkaConsumer<String, String> createConsumer() {
Properties properties = new Properties();
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ConsumerConfig.GROUP_ID_CONFIG, "consumer-group");
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

return new KafkaConsumer<>(properties);
}
}


Шаг 2. Чтение сообщений:

public class KafkaMessageReceiver {

public void receiveMessages(String topic) {
KafkaConsumer<String, String> consumer = new KafkaConsumerConfig().createConsumer();
consumer.subscribe(Arrays.asList(topic));

try {
while (true) {
var records = consumer.poll(1000);

for (ConsumerRecord<String, String> record : records) {
System.out.println("Получено сообщение: " + record.value());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
consumer.close();
}
}
}


4️⃣ Запуск Kafka Producer и Consumer

Запустите сервер Kafka и Zookeeper (если используете локальную установку).

▪️ Включите продюсер:
public class Main {
public static void main(String[] args) {
KafkaMessageSender sender = new KafkaMessageSender();
sender.sendMessage("my_topic", "Привет, Kafka!");
}
}


▪️ Запустите консюмер для получения сообщений:
public class Main {
public static void main(String[] args) {
KafkaMessageReceiver receiver = new KafkaMessageReceiver();
receiver.receiveMessages("my_topic");
}
}


💬 Как вы используете Kafka в своих проектах?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥2👾1
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.

До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.

Выбираем и забираем 👈

P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
🧠 Вайб-кодинг: что это и как это влияет на разработку

Вайб-кодинг — это когда разработчик описывает задачу на естественном языке, а AI генерирует код. Это ускоряет процесс, но важно контролировать качество.

🚧 Проблема: сгенерированный код может быть неэффективным или иметь дыры в безопасности.

🎯 Что нужно учитывать при использовании вайб-кодинга:
— Быстрое создание прототипов
— Доступность для людей без технического образования
— Риски качества и безопасности кода

🔗 Подробнее о вайб-кодинге в статье

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🌚43👍1
⚙️ Java Object Layout (JOL)

JOL — это инструмент от тех же разработчиков, что и JMH, и он помогает понять, как Java хранит объекты в памяти. Особенно полезен при оптимизации производительности и снижении потребления памяти.

📌 Что умеет JOL:

— Показывает внутреннюю структуру объектов Java (поля, пэддинг, смещения)
— Помогает исследовать выравнивание, заполнение и особенности layout'а объектов в разных JVM
— Учитывает влияние флагов типа -XX:ObjectAlignmentInBytes
— Есть аннотации и API для анализа объектов прямо из кода
— Поддерживает анализ "на месте" без запуска внешнего инструмента

🧠 Особенно актуально, если вы работаете с большим количеством данных, кастомными структурами или high-load системами. Понимание того, что реально занимает память, помогает сократить её расход без магии.

🔗 JOL на GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
Как часто в реальных проектах используется обработка исключений?

Наш подписчик спрашивает:

Я только начинаю работать с обработкой исключений. В учебниках часто приводят примеры с try-catch, но в реальных проектах я не встречал их так часто. Насколько часто в реальных проектах используется обработка исключений? И в каких случаях она действительно необходима?


🔹 Как вы используете обработку исключений в своих проектах?

— В каких ситуациях вы предпочитаете использовать try-catch?
— Какие ошибки чаще всего приходится обрабатывать?
— Какие подходы к обработке исключений сработали для вас лучше всего?

💬 Делитесь в комментариях вашим мнением и опытом.

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥1👾1
👑 Магия IntelliJ IDEA: Dependency Analyzer

Когда проект обрастает модулями, библиотеками и зависимостями, легко потерять нить. Dependency Analyzer помогает навести порядок в зависимостях и избавить проект от хлама.

🔹 Что делает

— Показывает все зависимости (включая транзитивные) в виде дерева
— Помогает обнаружить дублирующиеся зависимости, неиспользуемые библиотеки и конфликты версий
— Даёт рекомендации по удалению или замене

🔹 Зачем это нужно

— Упрощает анализ pom.xml или build.gradle — не нужно гадать, откуда взялась та или иная версия
— Помогает оптимизировать сборку и ускорить CI
— Снижает риски уязвимостей за счёт удаления неиспользуемых библиотек

🔹 Как использовать

— Откройте окно Maven/Gradle
— Нажмите кнопку Analyze Dependencies.
— IDEA покажет дерево с путями, версиями и проблемами
— Можно быстро перейти к конфигурации и исправить

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1