📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
Как готовить свой код к виртуальным потокам
Олег Естехин
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так уж и много. То ли все очень просто, и все (кроме нас) уже давно переключились, и там нечего рассказывать. То ли все очень сложно, и все просто стесняются рассказать о своих фейлах. А нам бы очень не помешали подсказки — что и зачем менять в коде, чтобы он мог работать на виртуальных потоках.
Разобираемся, почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать. Подсматриваем, что делали в JDK и известных фреймворках и библиотеках, чтобы их можно было использовать с виртуальными потоками. Примеряем эти решения на свой код.
Решаем, надо ли вообще что-то менять.
https://www.youtube.com/watch?v=dVh88WVS6NU
👉@BookJava
How to Use LazyConnectionDataSourceProxy with Spring Data JPA
Небольшая заметка о LazyConnectionDataSourceProxy — инструменте, который позволяет получать коннект к БД в Lazy-режиме, то есть в момент непосредственного выполнения запроса, что улучшает утилизацию коннектов и позволяет увеличить пропускную способность приложения.
https://vladmihalcea.com/lazyconnectiondatasourceproxy-spring-data-jpa/
👉@BookJava
👩💻 Java — один из самых востребованных языков, но не каждый разработчик умеет использовать его возможности по максимуму.
На курсе «Java Developer. Professional» вы научитесь создавать современные Java-приложения, освоите Spring WebFlux и Kafka, а также разберётесь в работе JVM изнутри.
Вас ждёт практическая работа с кодом, детальные разборы, ревью от экспертов и подходы, позволяющие писать эффективный и чистый код.
Начните свой путь к уровню Middle+! Используйте Java на 100%.
➡️ Пройти вступительный тест курса: https://vk.cc/cEUQh1
🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Совет по Java 💡☕️
Как легко просуммировать все числа в Java-списке? Для этого мы можем использовать метод Java Stream reduce
👉@BookJava
RESOURCE_LOCAL JPA Transaction Type
Небольшая статья от Vlad Mihalcea, посвященная типу транзакции RESOURCE_LOCAL в JPA. Тип транзакции RESOURCE_LOCAL используется как стандартный в Spring Data JPA. Советуем ознакомится со статьей, если еще не слышали про такой тип транзакции.
https://vladmihalcea.com/resource_local-jpa-transaction-type/
👉@BookJava
Podlodka Java Crew возвращается с новой темой — Асинхронной архитектурой, чтобы помочь Java-разработчикам освоить самые востребованные подходы и инструменты.
Полезный нетворкинг, пять дней насыщенной программы, сессии утром и вечером.
Погружаемся в асинхронность вместе:
- Рулетка кейсов: "Spring, Micronaut, Quarkus и Helidon" — Григорий Кошелев и Андрей Когунь о плюсах и минусах каждого фреймворка 🛠️
- "Проектирование Event Driven-систем с DDD и Event Storming" — Кирилл Ветчинкин расскажет, как создавать масштабируемые и управляемые системы 📈
- Воркшоп "Apache EventMesh на практике" — Павел Бодячевский поможет внедрить Event Mesh в проект 🎯
- "Debezium: окно в асинхронный мир данных" — Евгений Ефименко раскроет секреты работы с данными в реальном времени 🔄
Присоединяйтесь, чтобы освоить асинхронность на практике: https://podlodka.io/javacrew
👩💻 Мечтаете научиться программировать на Java? Пора начинать!
🗓 20 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик» от Otus.
Приходите на открытый урок, где мы шаг за шагом создадим игру «Угадай число» с нуля.
Вы познакомитесь с основами языка, поймете, как изменять код и менять функционал программы, освоите первые блоки, которые нужны для старта.
Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
Хотите научиться создавать приложения? Узнать, как строятся программы на Java? Этот урок — ваш первый шаг в IT!
🔗 Ссылка на регистрацию: https://vk.cc/cEARfVРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Jextract — The Native Library Binding Extraction Tool
Проект Panama разработан для поддержки доступа к нативным библиотекам на Java. Foreign Function and Memory API (FFM API) упрощает взаимодействие между JVM и чужими API-интерфейсами. FFM API добавлена в JDK 22 для поддержки доступа к внешней памяти и вызова внешних функций. Инструмент Jextract анализирует заголовочные файлы нативных библиотек и генерирует Java-код для использования внешних функций и API памяти. О том, как использовать этот инструмент, подробно в гайде.
https://dev.java/learn/jvm/tools/complementary/jextract/
👉@BookJava
Java Language Futures - Fall 2024 Edition
0:00 - Intro
3:54 - Records
9:14 - Sealed classes
11:22 - Pattern matching
20:00 - Data Oriented Programming
29:00 - Implicitly declared classes & instance main methods
33:20 - with Expressions
38:20 - Flexible constructor bodies
48:10 - What's next
50:53 - Conclusion
https://www.youtube.com/watch?v=NNPN5tvjzqA
👉@BookJava
Определение и отличие IP адресов LAN, PPP в Java. Использование DatagramSocket для нестандартных ситуаций
В некоторых случаях, например, при работе с Linux-системами, InetAddress.getLocalHost() может давать неожиданный результат. В таких ситуациях может быть полезно использовать другой способ — через DatagramSocket, отправляя запрос в сеть:
import java.net.*;
public class GetPreferredIP {
public static void main(String[] args) throws SocketException {
try (final DatagramSocket socket = new DatagramSocket()) {
socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
System.out.println(socket.getLocalAddress().getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
⚡ Пишем веб-сервис на Java, а затем преобразуем его в Kotlin!
📅 Дата: 12 ноября в 19:00 МСК
Записаться на урок: 👉 https://otus.pw/KiBHk/?erid=2VtzqvgwWxu
Будет интересно: Java-разработчикам и бэкенд-разработчикам на Kotlin.
В первой части занятия познакомимся с основными концепциями:
✅ null-безопасность
✅ сокращение шаблонного кода
✅ лямбда-выражения
Во второй части – напишем веб-сервис с CRUD-операциями на Java, а затем преобразуем его в Kotlin. Так вы увидете, как синтаксис Kotlin упрощает код.
👨🏫 Вебинар проведёт Сергей Прощаев, ведущий инженер и Java-разработчик в крупной компании.
После вебинара вы сможете приобрести курс «Kotlin Backend Developer. Professional» по специальной цене и даже в рассрочку!
🔗 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/KiBHk/?erid=2VtzqvgwWxu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Подборка Telegram каналов для программистов
/channel/piterspb Канал о Санкт-Петербурге 🌇❤️💙
Системное администрирование 📌
/channel/sysadmin_girl Девочка Сисадмин 👩
/channel/srv_admin_linux Админские угодья
/channel/linux_srv Типичный Сисадмин
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
/channel/Excel_lifehack
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Приглашаем на пятый юбилейный митап IT Talk by Sber в Новосибирске! ⚡️
В этот раз мы вернёмся к истокам — поговорим про Java и всё, что с ним связано. Гарантируем, что на митапе тебе будет что и кого послушать и с кем пообщаться!
Когда и где: 14 ноября, Новосибирск, лофт-парк «Подземка».
Темы и спикеры:
✅Разделяй и властвуй: Практический подход к горизонтальному масштабированию реляционных баз данных в Java (Дмитрий Дрожжин, Lead Java-разработчик)
✅Различия и особенности локального запуска и запуска в контейнере (Вячеслав Гуров, Senior Java-разработчик)
✅Использование коллекций java.util.concurrent для разных моделей Producer-Consumer с различной интенсивностью операций добавления, удаления, поиска и количеством участников (Роман Бондарь, Lead Java-разработчик)
Как попасть на мероприятие? Регистрируйся и приходи 14 ноября!💚
👩💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cEdAyT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Хотите упростить JPA-запросы в Spring Data?
Ознакомьтесь с демонстрацией Query By Example (QBE)! Создавайте динамические, безопасные для типов запросы без шаблонов.
Идеально подходит для гибких форм поиска
Java 23 + Spring Boot + Spring Data JPA
https://github.com/danvega/qbe
👉@BookJava
👩💻 Приглашаем вас принять участие в открытом уроке, который посвящён теме «Интернационализация и локализация в приложениях Spring». Вы узнаете, как эффективно реализовать процесс локализации в Spring-приложениях.
Мы рассмотрим работу с классом Locale, использование MessageSource в Spring Boot и без него, способы хранения и смены локали в веб-приложениях, а также локализацию в шаблонах Thymeleaf и сообщений Bean Validation.
Более того, обсудим, почему не стоит локализовывать исключения, и проанализируем исходный код для лучшего понимания процессов.
🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.
Программа вебинара:
✔️ Основы локализации в Spring.
✔️ Инициализация и конфигурация MessageSource.
✔️ Управление локалью в веб-приложениях.
✔️ Практические аспекты локализации.
Этот урок будет полезен Java-разработчикам с опытом 1–3 года, а также Kotlin-разработчикам.
🔗 Ссылка на регистрацию: https://vk.cc/cEWrao
🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Null Object Pattern to Avoid Null Pointer Exception with JEP-45
Небольшая заметка об использовании Null Object Pattern в контексте добавления поддержки примитивных типов в Pattern Matching в JEP-455.
https://foojay.io/today/exploring-new-features-in-jdk-23-null-object-pattern-to-avoid-null-pointer-exception-with-jep-455/
👉@BookJava
CompletableFuture Example: Crawler
Статья посвященная использованию Completable Future и содержит интересный пример его использования. Описана реализация веб-сканера (web crawler), который, начиная с Reddit/r/Java, будет по ссылкам искать новости, посвященные хакингу.
https://concurrencydeepdives.com/java-completablefuture-example/
👉@BookJava
👩💻 Открытый урок «Знакомство с виртуальными потоками Java»
🗓 21 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от Otus.
Легковесные потоки были введены во многих языках программирования, таких как Go, Kotlin и другие. Теперь Java догнала другие языки по этой функциональности.
На вебинаре разберем:
✔️что такое виртуальные потоки;
✔️ чем они отличаются от обычных потоков;
✔️в чём плюсы и минусы их использования.
🔗 Ссылка на регистрацию: https://vk.cc/cEEAfJРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Илья Спицын, X5 Tech — jOOQ. Лекарство от Hibernate?
Поговорили об SQL-driven работе с БД. Спикер кратко сравнил инструменты и рассказал о преимуществах jOOQ для построения сложных запросов. Показал несколько примеров, где jOOQ может пригодиться разработчику.
Доклад будет полезен разработчикам, которые задумываются о поиске альтернативных инструментов для работы с БД.
https://youtu.be/SCSLoi4iiXA?si=D3Ez3kFFKFLB4zmK
👉@BookJava
Five Ways to Speed up Your Maven Builds
Как ускорить ваши Maven-сборки? «Поставить Gradle», — скажет кто-то. Ребята из Gradle считают иначе и даже подготовили статью на эту тему. По их мнению, в случае проблем со скоростью ваших сборок стоит присмотреться к профилям: возможно, некоторые плагины сильно замедляют сборку. С помощью профилей можно отключить часть плагинов для локальной или CI-сборки в зависимости от того, что вам нужно ускорить.
https://gradle.com/blog/five-ways-to-speed-up-your-apache-maven-builds/
👉@BookJava
Advancing AI by Accelerating Java on Parallel Architectures
Статья рассказывает про эволюцию платформы Java в контексте растущих требований к машинному обучению и параллельной обработке. Java, известная своей надежностью и масштабируемостью, адаптируется для создания высокопроизводительных, ориентированных на данные приложений. Это подробное исследование предназначено для опытных разработчиков Java, архитекторов программного обеспечения и энтузиастов, которые заинтересованы в использовании возможностей Java для внедрения инноваций в быстро растущих областях искусственного интеллекта и высокопроизводительных вычислений.
https://inside.java/2024/10/23/java-and-ai/
👉@BookJava
⁉️ Открытый урок «Интернационализация и локализация в приложениях Spring»
🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.
Узнайте, как эффективно реализовать интернационализацию и локализацию в Spring-приложениях.
На вебинаре разберем:
✔️работу с классом Locale, использование MessageSource в Spring Boot и без него;
✔️ способы хранения и смены локали в веб-приложениях;
✔️ локализацию в шаблонах Thymeleaf и сообщений Bean Validation;
✔️ обсудим, почему не стоит локализовывать исключения;
✔️ проанализируем исходный код для лучшего понимания процессов.
🔗 Ссылка на регистрацию: https://vk.cc/cEyGrBРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Т-Банк ищет Java-разработчиков уровня middle и senior
23 и 24 ноября можно пройти собеседование за выходные и получить оффер, если всем все понравится.
Вот что вас ждет в компании:
— Выстроенный процесс разработки и запуска проектов.
— Современный стек технологий — здесь быстро внедряют новое в работу.
— Разработка на актуальной версии Java.
— Баланс между использованием самописных и стандартных инструментов.
— Сильное комьюнити и обмен опытом на конференциях и митапах.
Узнайте больше и оставьте заявку до 20 ноября
Определение и отличие 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());
}
}
}
}
}
Mastering Java Streams: Полное руководство для разработчиков
Java Streams, представленные в Java 8, — одно из самых мощных дополнений к языку. Они позволяют выполнять операции в функциональном стиле с коллекциями и последовательностями, изменяя подход к обработке данных в Java. Streams упрощают такие задачи, как фильтрация, отображение и сбор данных, а также поддерживают параллельные операции для повышения производительности. В этой статье мы рассмотрим основы Streams, обсудим виды поддерживаемых операций и приведем примеры, которые помогут вам максимально эффективно использовать эту важную функцию.
https://dev.to/be11amer/mastering-java-streams-a-complete-guide-for-developers-495d
👉@BookJava
Примеры поведенческих шаблонов проектирования
🔴Цепочка обязанностей (Chain of responsibility) - Предназначен для организации в системе уровней ответственности.
🔴Команда (Command) - Представляет действие. Объект команды заключает в себе само действие и его параметры.
🔴Интерпретатор (Interpreter) - Решает часто встречающуюся, но подверженную изменениям, задачу.
🔴Итератор (Iterator) - Представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого + __из объектов, входящих в состав агрегации.
🔴Посредник (Mediator) - Обеспечивает взаимодействие множества объектов, формируя при этом слабую связанность и избавляя объекты от необходимости явно ссылаться друг на друга.
🔴Хранитель (Memento) - Позволяет, не нарушая инкапсуляцию зафиксировать и сохранить внутренние состояния объекта так, чтобы позднее восстановить его в этих состояниях.
🔴Наблюдатель (Observer) - Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии.
🔴Состояние (State) - Используется в тех случаях, когда во время выполнения программы объект должен менять своё поведение в зависимости от своего состояния.
🔴Стратегия (Strategy) - Предназначен для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости.
🔴Шаблонный метод (Template method) - Определяет основу алгоритма и позволяет наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
🔴Посетитель (Visitor) - Описывает операцию, которая выполняется над объектами других классов. При изменении класса Visitor нет необходимости изменять обслуживаемые классы.
👉@BookJava
Советы по Spring 💡
Чтобы выполнять действия в транзакции базы данных, вы можете использовать шаблон Spring TransactionTemplate вместо @Transactional
👉@BookJava
Лучшие книги по Java
Основы Java:
1. "Head First Java" от Кэти Сьерра и Берт Бейтс
Эта книга предлагает уникальный подход к обучению с использованием визуальных элементов и интерактивных упражнений. Она идеально подходит для тех, кто только начинает изучать Java и хочет получить прочные основы. Книга написана в легком и доступном стиле, что делает процесс обучения увлекательным и эффективным.
2. "Java: A Beginner's Guide" от Герберта Шилдта
Герберт Шилдт — известный автор учебников по программированию, и его книга "Java: A Beginner's Guide" является отличным ресурсом для начинающих. В этой книге он подробно объясняет основные концепции Java, начиная с самых простых и заканчивая более сложными. Книга написана в доступном стиле и включает множество примеров кода.
3. "Effective Java" от Джошуа Блоха
Хотя эта книга не предназначена исключительно для новичков, она является незаменимым ресурсом для тех, кто хочет писать качественный и эффективный код на Java. Джошуа Блох делится своими рекомендациями и лучшими практиками, которые помогут вам избежать распространенных ошибок и улучшить качество вашего кода.
Продвинутый уровень:
1. "Java Concurrency in Practice" от Брайана Гетца и других авторов
Эта книга является обязательной для тех, кто хочет углубиться в тему многопоточности и конкурентного программирования на Java. Она охватывает все аспекты, начиная от базовых концепций и заканчивая сложными паттернами. Книга написана командой экспертов, что делает её особенно ценной.
2. "Clean Code: A Handbook of Agile Software Craftsmanship" от Роберта Мартина
Хотя эта книга не посвящена исключительно Java, она является важным ресурсом для любого программиста. Роберт Мартин делится своими принципами написания чистого и поддерживаемого кода. Книга написана в доступном стиле и включает множество примеров кода.
3. "Java Performance: The Definitive Guide" от Скотта Оукса
Эта книга поможет вам понять, как оптимизировать производительность ваших Java-приложений. Скотт Оукс объясняет, как измерять и улучшать производительность кода. Книга написана в доступном стиле и включает множество примеров кода.
👉@BookJava
👩💻 Пройди тест по Java
Проверь насколько хорошо ты знаешь Java и готов освоить 👩💻 Spring!
Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cE5WKC
🎫 Начни обучение со скидкой, подробности у менеджеров.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru