Java библиотека
31.7K subscribers
2.1K photos
62 videos
6 files
1.81K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
👍😌🙃❤️💫😍🌞☺️🫶🥰
Участвуй в хакатоне МТС True Tech Hack 2025 и разработай решение на базе одной из ИТ-платформ МТС:

1. Трек от DataOps Platform
Разработай решение для автоматизации процессов сбора и обработки данных и создания аналитических отчетов
2. Трек от Integration Platform
Разработай решение на базе ИИ, автоматизирующее процесс создания JSON-схем для описания бизнес-логики и интеграций
3. Трек от True Tabs
Автоматизируй процессы работы с данными, создав единую экосистему на базе no-code продукта True Tabs
4. Трек от Product Factory
Разработай AI-ассистент для Android-приложений, который будет анализировать интерфейсы и преобразовывать визуальные элементы в голосовые подсказки
5. Трек от MWS GPT
Разработай компактную модель «ученик» для эффективной и быстрой классификации текста

Хакатон будет проходить с 17 по 25 апреля.
Регистрация открыта до 16 апреля https://truetechhack.ru/
Призовой фонд — 1 500 000 рублей.

Участие могут принять системные аналитики, Data Scientists, Data Engineers, frontend- и backend-разработчики, Android-разработчики, бизнес-аналитики, аналитики данных, MLOps-инженеры, DevOps-инженеры, Product-менеджеры, ИТ-архитекторы, UI/UX-дизайнеры.

Регистрируйся на МТС True Tech Hack 2025: https://truetechhack.ru/
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 OpenPDF — это библиотека с открытым исходным кодом для работы с PDF-документами на Java!

🌟 Она позволяет создавать, изменять и подписывать PDF-файлы, а также поддерживает функции шифрования и работы с формами. OpenPDF основана на старой версии iText и активно развивается сообществом для обеспечения современных возможностей работы с PDF.

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Virtual Threads

В Java 21 появилась революционная фича — виртуальные потоки (Virtual Threads). Это лёгкие потоки, которые управляются самой JVM, а не операционной системой. Они позволяют создавать тысячи и даже миллионы потоков без значительных затрат ресурсов.

⚙️ Как это работает

Обычные потоки (Thread) привязаны к потокам ОС и работают с тяжёлым контекстным переключением (context switching).

Virtual Threads — это user-mode потоки, управляемые JVM, а не ОС, поэтому они могут эффективно мультиплексироваться на ограниченном количестве платформенных потоков.

🟢Ключевая особенность

Виртуальные потоки не блокируют платформенные потоки, когда выполняют блокирующие операции ввода-вывода (I/O). Они просто освобождают платформенный поток и продолжают выполнение, когда ресурс снова доступен.

Пример

public class VirtualThreadsDemo {
public static void main(String[] args) throws InterruptedException {
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
IntStream.range(0, 10_000).forEach(i ->
executor.submit(() -> {
System.out.println("Task " + i + " running on " + Thread.currentThread());
Thread.sleep(100);
})
);
}
}
}


Этот код создаёт 10 000 потоков, но JVM будет эффективно управлять ими без перегрузки системы.

✔️ Где применять

— Высоконагруженные I/O задачи.
— Обработка веб-запросов без перегрузки ресурсов.
— Микросервисы, которые взаимодействуют с API.
— Асинхронные операции, где ранее использовали CompletableFuture.

Когда НЕ стоит использовать

— При вычислениях на процессоре.
— При работе с кодом, который активно использует synchronized.
— При глубокой интеграции со сторонними библиотеками, которые не оптимизированы под виртуальные потоки.

ℹ️ Преимущества и недостатки

— Плюсы: миллионы потоков без overhead, упрощённый асинхронный код без CompletableFuture, меньше блокировок и выше производительность, полная совместимость со старыми API.
— Минусы: может ломать старый код с synchronized, не даёт преимуществ для CPU-bound задач, требует оптимизации библиотек под Virtual Threads.

Virtual Threads — мощный инструмент, который не заменяет потоки ОС, но отлично подходит для массовых I/O-задач. Если у вас есть сервис, работающий с сетью, базами данных или API — пора внедрять Virtual Threads.

Делитесь опытом работы с виртуальными потоками

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите освоить программирование или сменить работу в IT?
А вы готовы всего за час создать и опубликовать целое приложение?

Отлично! Тогда присоединяйтесь к онлайн-конференции «Как создать первый проект на Python и Java с нуля»!

Новички в IT узнают:
- какой язык программирования лучше выбрать для старта
- как быстро создать и развернуть приложение
- как работают Python и Java на практике
- как размещать код на GitHub и работать с репозиториями
- какие дополнительные инструменты использовать для профессионального роста

Программисты на других языках, и те, кто ищет новые возможности в IT:
- поймёте, какие IT-технологии сейчас востребованы
- узнаете, какие навыки прокачивать для успешной смены деятельности
- отработаете навыки быстрой сборки и быстрого развёртывания проекта
- узнаете о новых возможностях для обучения и развития

Также вас ждёт квиз с призами!

Спикеры:
Сурен Хоренян: бэкенд-разработчик на Python, руководитель команды в «VK Рекламе»
Сергей Прощаев: Java-разработчик

Бонус! Скидка 7% на любой курс OTUS и полезные материалы в подарок!

18 апреля, 19:00 МСК
Бесплатно

Записаться на событие - https://otus.pw/nlLR/?erid=2W5zFJyy9cL

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963
Компилируем компилятор или ускоряем javac вдвое

Ну блин короче :-)

Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе.

Мы ускорили javac вдвое и теперь можно экономить на сборке.


Читать статью
👩‍💻 JDBC — ваш швейцарский нож для работы с данными

Приглашаем на открытый урок.

🗓 22 апреля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».

О чём поговорим:
✔️Основы JDBC: что это такое, зачем нужно и как работает
✔️Практические примеры выполнения сложных запросов
✔️Работа с транзакциями и обработка ошибок в JDBC
✔️ Оптимизация производительности при работе с данными через JDBC

Кому будет интересно:
Вебинар будет полезен разработчикам, инженерам по базам данных и архитекторам ПО, стремящимся улучшить навыки работы с базами данных и оптимизировать взаимодействие с данными.

В результате урока:
Вы научитесь эффективно использовать JDBC для работы с базами данных и сможете применять полученные знания в реальных проектах

🔗 Ссылка на регистрацию: https://vk.cc/cKRDFz

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 OpenGrok — это инструмент для индексирования и поиска исходного кода!

🌟 Он помогает разработчикам быстро находить и анализировать код в больших репозиториях, поддерживает множество языков программирования (Java, C/C++, Python, и другие). OpenGrok предоставляет функциональность для поиска по меткам, комментариям, коду и даже документации. Инструмент ориентирован на улучшение работы с кодом в больших проектах и используется для облегчения навигации по огромным кодовым базам.

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
☄️ Интеграционное тестирование | Spring Boot + Yandex SourceCraft + Amplicode + Docker Compose Starter

В новом видео вы узнаете, как писать интеграционные тесты быстро и эффективно, совмещая сильные стороны нескольких инструментов. 

Мы покажем, как использовать генерацию кода от Amplicode учитывающую контекст всего приложения и дополнить её точечной генерацией от Yandex SourceCraft Code Assistant, а также быстро настроить окружение для тестов с помощью не так давно появившегося Docker Compose стартера.

⚡️СМОТРЕТЬ НА YOUTUBE 
⚡️СМОТРЕТЬ В VK ВИДЕО
⚡️СМОТРЕТЬ НА RUTUBE 

#реклама
О рекламодателе
Лайфхак: оптимизируем DTO с record

Вместо обычных POJO-классов для DTO используйте record (Java 14+). Меньше кода, больше удобства.

Record автоматически создает иммутабельный класс с приватными финальными полями, конструктором, геттерами, а также переопределенными методами toString(), equals() и hashCode().

Избыточно
public class User {
private final String name;
private final int age;

public User(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() { return name; }
public int getAge() { return age; }

@Override
public String toString() {
return "User{name='" + name + "', age=" + age + "}";
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
User user = (User) obj;
return age == user.age && Objects.equals(name, user.name);
}

@Override
public int hashCode() {
return Objects.hash(name, age);
}
}


✔️ Красиво и лаконично
public record User(String name, int age) {}


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 ОТ ДЖУНА ДО СЕНЬЁРА ЗА 2 ГОДА — МОЙ ПУТЬ В IT.

Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.

💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.

На канале я делюсь всем этим опытом:

▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.

▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.

▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.

Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.

Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
🖥 Shizuku — это инструмент, позволяющий обычным Android-приложениям напрямую использовать системные API с привилегиями ADB или root!

🌟 Он работает путем запуска Java-процесса с помощью app_process, что позволяет приложениям взаимодействовать с системными сервисами без необходимости в полном рут-доступе.

🔐 Лицензия: Apache-2.0

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн Состояние (State)

State — это поведенческий паттерн, который позволяет объекту менять свое поведение в зависимости от внутреннего состояния. Вместо множества условных операторов (if-else или switch), каждое состояние представляется отдельным классом, а сам объект делегирует управление текущему состоянию.

Когда использовать

🟢Когда у объекта есть несколько состояний, и его поведение зависит от текущего состояния.
🟢Когда код с if-else или switch начинает разрастаться и усложняет поддержку.
🟢Когда необходимо четко разделить логику различных состояний и сделать систему более гибкой.

Преимущества

1️⃣Избавляет от множества if-else конструкций, делая код более читаемым и поддерживаемым.
2️⃣Облегчает добавление новых состояний без изменения существующего кода.
3️⃣Обеспечивает инкапсуляцию логики для каждого состояния, упрощая тестирование и модификации.

Недостатки

1️⃣Может усложнить код, если состояний слишком мало, а логика простая.
2️⃣Увеличивает количество классов, так как каждое состояние реализуется отдельно.
3️⃣Вводит дополнительные связи между классами состояний и контекстом.

State — мощный инструмент, когда объекту нужно динамически изменять свое поведение. Он особенно полезен в конечных автоматах, обработке пользовательских действий и моделировании процессов с четко определенными шагами.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥OkHttp — это эффективный HTTP-клиент с открытым исходным кодом, разработанный компанией Square для платформ Java и Kotlin!

🌟 Он обеспечивает простоту выполнения HTTP-запросов и обработки ответов, поддерживая современные протоколы, такие как HTTP/2. OkHttp активно используется в Android-разработке и является основой для таких библиотек, как Retrofit.

🔐 Лицензия: Apache-2.0

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое микросервисы?

Микросервисы — это архитектурный стиль, при котором приложение разбивается на небольшие, независимые сервисы. Каждый сервис отвечает за определённую бизнес-логику, имеет собственную базу данных (или логически обособленное хранилище) и взаимодействует с другими сервисами через API (обычно REST или gRPC).

🟢Ключевые принципы

Можно обновлять и масштабировать отдельные сервисы без затрагивания всей системы.
Каждый сервис выполняет свою узкую задачу.
У сервиса свои изолированные данные, код и зависимости.
Сервисы общаются через HTTP, AMQP, Kafka и другие механизмы.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Стартуй в IT с Code Father: Оплата после трудоустройства !Освой Java-разработку без предоплаты — начни учиться сейчас, а плати только после трудоустройства.
Что вас ждёт? 4 этапа обучения:
1.👨‍💻 Обучение с менторами-разработчиками:Твои задачи будут проверять менторы — действующие разработчики уровня middle и выше. Они не только оценивают правильность решений, но и дают рекомендации по улучшению кода, указывают на слабые места и помогают развивать профессиональные навыки.
2. 🧩Постепенное усложнение задач:Вы начнете с модуля java core где будете осваивать базовые основы языка.Тебя ждёт большое количество задач, но их сложность растёт плавно. Благодаря этому ты сможешь справиться со всеми заданиями и не потеряешь интерес к обучению.
3.🌟 Актуальные технологии и реальные проекты:Задачи и учебные материалы постоянно обновляются. Модуль pet-проектов основан на реальных задачах из разработки в крупнейших банках. После его завершения ты будешь готов к работе с самыми востребованными технологиями на рынке.
4.🏅 Уникальная подготовка к собеседованиям:Главная цель обучения — твоё трудоустройство. Наша система подготовки включает:
    📊Анализ 200+ собеседований, пройденных senior-разработчиками за последние 2 года.
    🧠Разбор самых частых теоретических вопросов, задач по live-кодингу и code review.
    📝Готовые ответы и стратегии прохождения интервью.
    🖋Помощь в составлении резюме.
Стек технологий:Java Core, Spring (Boot, MVC), Hibernate, Git, Maven, SQL, Kafka, Docker 
Поддержка менторовОбратная связь по коду, помощь с проектом, разбор ошибок, подготовка к собеседованиям.
Почему Code Father?
🔥Оплата после трудоустройства:
Оплата 17% от зарплаты только после трудоустройства .Нет скрытых платежей: Учёба начинается без вложений.Сообщество: Закрытый чат с кураторами и выпускниками.
🔥 Только актуальные технологии:Работаем с тем, что требуют компании: Spring Boot, Kafka, Docker, Spring Data JPA — без воды и устаревших инструментов.💼
🔥 Менторство 1:1:Каждый студент получает индивидуальную обратную связь от практикующих разработчиков.После такой подготовки ты станешь уверенным кандидатом и сможешь пройти собеседование в любую компанию. 🌍
👉Как начать? Узнать подробности || Наш Telegram
До встречи на курсе!

#реклама
О рекламодателе
erid: 2W5zFJkNpNC
Java Streams: Основные методы для чистого и эффективного кода!

Java Streams предлагают множество методов для упрощения манипуляций с данными и повышения читаемости кода.
Вот краткое руководство с примерами:

Освойте эти методы, чтобы писать более чистый и эффективный код на Java! 💡

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Vert.x — это набор инструментов для создания реактивных приложений на JVM

Ядро Vert.x содержит достаточно низкоуровневую функциональность, включая поддержку HTTP, TCP, доступ к файловой системе и различные другие возможности. Можно использовать Vert.x непосредственно в своих приложениях.

🖥 GitHub
🟡 Доки

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 JDK, JRE и JVM

▪️ JDK (Java Development Kit) — это набор инструментов для разработки приложений на Java. Включает компилятор, библиотеки и утилиты, необходимые для написания и сборки кода.

▪️ JRE (Java Runtime Environment) — среда выполнения, которая позволяет запускать Java-приложения. Включает в себя JVM и стандартные библиотеки, но без инструментов разработки.

▪️ JVM (Java Virtual Machine) — виртуальная машина, которая исполняет байт-код, сгенерированный при компиляции. Именно JVM делает Java переносимой, так как позволяет запускать программы на разных платформах.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Абстракция в Java

Абстракция — это способность выделять существенные характеристики объекта и упускать несущественные.
Абстракция позволяет сосредоточиться на важных свойствах и поведении объекта, скрыв детали реализации.

В Java абстракция реализуется с помощью абстрактных классов и интерфейсов.

Абстрактный класс содержит абстрактные методы без реализации. Подклассы обязаны реализовать эти методы.
Интерфейс задает «контракт», описывая поведение классов без деталей реализации. Классы реализуют интерфейс.

Реализация абстракции требует тщательного анализа предметной области и выделения общих свойств объектов.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM