Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Если вы пишете бэкенд на Java и хотите работать на уровне серьёзных проектов, тестирование в Spring — навык, без которого сейчас никуда.

На открытом уроке «Тестирование Spring-приложений. Интеграционные тесты с контекстом» вы разберётесь, как правильно тестировать репозитории (JDBC и JPA) и сервисы с учётом транзакций. Это ключ к тому, чтобы ваш код был не только рабочим, но и надёжным в реальных продакшн-системах.

Вы получите пошаговый разбор особенностей интеграционного тестирования и научитесь писать простые тесты для репозиториев и сервисов. Эти знания напрямую повысят вашу ценность на рынке как Java-разработчика.

Урок проходит в преддверие старта курса «Разработчик на Spring Framework», все участники получат скидку на обучение: https://vk.cc/cP0uOe

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Совет по Spring Boot💡

Spring Boot Custom Bean Validations с Jakarta Constraint Validator, группировка ограничений проверки, последовательность групп и i18n

https://gist.github.com/aoudiamoncef/9eeece142d1ef0faa4d06216a41282a2

👉@BookJava
13👍3
Шпаргалка по Java Streams API

👉@BookJava
👍72
Java

Кеширование данных в Spring Boot
Полезные советы по работе с BigDecimal в Java
Алгоритмы: бинарный поиск на отсортированном массиве (реализация на Java)
Алгоритмы: поиск простых чисел с помощью "решета Эратосфена"
Алгоритмы: проверка слов и предложений на палиндром
Алгоритм определения анаграмм
Алгоритм инвертирования массива на Java
Разбор и вычисление арифметических выражений на Java

источник

👉@BookJava
👍2
👩‍💻 Открытый урок «Создание потоковых приложений с использованием Kafka Streams».

На вебинаре разберем как с помощью Kafka Streams создавать потоковые приложения, что важно для работы с большими данными и потоками в реальном времени.

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

🎯 О чём поговорим:

✔️ Обсудим, что такое потоковые приложения и как их можно интегрировать с Kafka.
✔️ Изучим работу с библиотекой Kafka Streams и освоим основы DSL.
✔️ Разберемся в работе с состоянием потоков и его применении на практике.

👥 Кому будет интересно:
Этот вебинар будет полезен Java-разработчикам и архитекторам, которые хотят внедрять потоковые вычисления и анализ в свои приложения. Вы получите все необходимые знания, чтобы начать использовать Kafka Streams для создания высокоэффективных потоковых решений.

🎁 Дарим промокод, который дает скидку на обучение - JAVA_09

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Совет по Java Time

Обратите внимание на equals() и isEqual() в классах работы с датой и временем! ZonedDateTime, OffsetDateTime и OffsetTime ведут себя по-разному:

- equals(): Сравнивает все поля (включая зону/смещение)
- isEqual(): Сравнивает только момент времени (игнорируя зону/смещение)

Один и тот же момент времени может дать разные результаты.

👉@BookJava
👍4
Как мы в Java-проекте UDT для PostgreSQL поддерживали

PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.

В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.

https://habr.com/ru/companies/bercut/articles/940614/

👉@BookJava
👍1
⁉️ Что нового в Spark 4.0?

Apache Spark продолжает развиваться и в версии 4.0 готовит для нас несколько важнейших обновлений. Хотите узнать, как эти изменения улучшат обработку данных и повлияют на вашу работу? Присоединяйтесь к открытом вебинару 9 сентября в 20:00!

— Обзор Spark 4.0: главные нововведения и улучшения.
— Производительность и оптимизации: что ускорилось и как этим пользоваться?
— Новые API и функции: возможности для разработчиков и аналитиков.
— Интеграция с Kubernetes, облачными платформами и Data Science инструментами.
— Практические кейсы: как применять нововведения в реальных задачах.

👨‍💻🛠👨🏻‍💻 Если вы дата-инженер, аналитик, разработчик или DevOps-специалист, этот вебинар точно для вас.

➡️Присоединяйтесь и получите скидку на курс «Spark Developer»: https://vk.cc/cPiGom

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
ClassLoader Hell в Java: скрытый убийца продакшена

Когда в энтерпрайз-приложении внезапно летят ClassNotFoundException, NoSuchMethodError, LinkageError или растёт Metaspace — почти наверняка это ClassLoader Hell: побочный эффект того, как JVM грузит классы.

Откуда берётся

1. Конфликт версий: в classpath оказываются разные версии одной библиотеки (например, log4j 1.x и 2.x). Разные ClassLoader’ы подтягивают разные классы → IncompatibleClassChangeError, падения на старте.
2. Утечки ClassLoader’ов: после undeploy web-приложения его ClassLoader не собирается GC (висят ссылки/потоки) → дубли классов, рост памяти, OutOfMemoryError.

Симптомы

- ClassNotFoundException / NoClassDefFoundError
- LinkageError-ы (IllegalAccess, IncompatibleClassChange, NoSuchMethod)
- Нестабильный старт сервера, случайные ошибки, постепенный memory bloat

Как выбраться

- Держи зависимости под контролем: Maven/Gradle, mvn dependency:tree / gradle dependencies, исключай конфликтующие транзитивные, добивайся convergence версий.
- Понимай иерархию серверных загрузчиков (Tomcat/JBoss/WebLogic): изоляция по веб-приложениям; по умолчанию пакуй либы внутрь WAR/EAR, не клади «общие» JAR’ы в shared/lib без крайней нужды.
- Shading/relocation: Maven Shade Plugin → fat JAR + переименование пакетов конфликтующих зависимостей.
- JPMS (Java 9+): явные requires / exports, сильная инкапсуляция, надёжная конфигурация на старте.
- Диагностика: запускай с -XX:+TraceClassLoading, смотри JVisualVM/JConsole на живых ClassLoader’ах и metaspace.
- KISS: меньше зависимостей, регулярные апдейты ключевых библиотек.

Чек-лист на 30 секунд

- Прогоняю дерево зависимостей и фиксирую версии.
- Убираю дубли и «скрытые» транзитивные.
- Проверяю, откуда грузится проблемный класс (трассировка/инструменты).
- Решаю: изоляция на уровне сервера, shading или миграция на JPMS.

Полный разбор с примерами тут

👉@BookJava
👍53
Media is too big
VIEW IN TELEGRAM
Java for Small Coding Tasks

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

Вначале рассказывается, почему для скриптов используется Java, а не Python. Ответ банален: автор хорошо знаком с Java, она ему привычна. Но вот то, как и с помощью чего пишутся скрипты, совсем непривычно.

Например, удобная и знакомая всем Intellij IDEA не очень подойдет, потому что вам вряд ли понадобится серьезная структура пакетов и классов для небольшого скрипта. А один файл часто удобнее открыть в редакторах попроще, например nvim или VS Code.

С инструментами для сборки тоже интересно. Никто не захочет использовать Maven или Gradle, чтобы запустить небольшой однофайловый скрипт. Поэтому можно компилировать и запускать в оперативной памяти. Да, так придется компилировать на каждом запуске, зато не нужно беспокоиться об упаковке в Jar каждый раз, когда поправляешь скрипт.

Одна строка #!/usr/bin/env java --source 25 в начале файла позволит запускать скрипт в среде Linux, просто указав путь к файлу. А если все-таки нужна зависимость, можно использовать jpm, чтобы управлять Maven-зависимостями без больших инструментов для сборки.

источник

👉@BookJava
👍2