bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

10986

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

Subscribe to a channel

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

Гексагональная архитектура со Spring Boot

Практическое руководство по внедрению Spring Boot

Гексагональная архитектура стала популярным архитектурным паттерном, помогающим отделить бизнес-логику от инфраструктуры. Такое разделение позволяет откладывать принятие решений о технологиях или легко заменять их. Кроме того, это позволяет тестировать бизнес-логику в изоляции от внешних систем.

В этой статье мы рассмотрим, как реализовать гексагональную архитектуру в Spring Boot приложении. Мы разделим бизнес-логику и инфраструктуру на отдельные модули и посмотрим, как можно изолированно реализовать и протестировать эти модули.

https://www.arhohuttunen.com/hexagonal-architecture-spring-boot/

👉@BookJava

Читать полностью…

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

♨️ Тест на знание языка Java

— Ответьте на 21 вопрос и проверьте, насколько хорошо вы знаете язык Java и готовы освоить Spring. Сможете сдать — пройдёте на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!

👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework"

Курс доступен в рассрочку.

🎁 Пройдете успешно тест, получите доступ к открытым урокам курса.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

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

Spring-потрошитель: жизненный цикл Spring Framework

Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.

Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.

https://habr.com/ru/articles/720794/

👉@BookJava

Читать полностью…

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

Потоки в Java: От рождения до смерти

В этой статье я бы хотел погрузить в мир жизненного цикла потоков начинающих программистов на Java, заранее извиняюсь за злоупотребление слова "поток" в этой статье, но я надеюсь так будет даже лучше для понимания. Поехали!

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

https://habr.com/ru/articles/776914/

👉@BookJava

Читать полностью…

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

erid: LjN8KJpzx

👋Уважаемая публика, не проходите мимо! Только у нас на вебинаре вы узнаете то, чего ещё никогда не знали!

🔥Проникнитесь невероятными лайфхаками в жанре team lead survival на бесплатном уроке «Agile Circus: как выжить в цирке гибкой разработки ПО»: регистрация
 
На занятии обсудим:
— зачем вообще нужны гибкие подходы к организации процессов разработки (и поддержки) ПО и можно ли обойтись без них.
— как правильно выбирать способ организации разработки программного обеспечения.
— что делать в ситуации, когда одна команда не справляется.

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

👉Понравился урок — берите полный курс «Team Lead разработки», его можно пройти по скидке Чёрной пятницы, и даже в рассрочку.

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

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

🔎Хотите узнать об особенных возможностях Scala?

Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.

☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.

📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.

👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

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

Сортировка слиянием через рекурсию

В этот раз мы применим рекурсию для создания алгоритма сортировки слиянием.

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

Освежим в памяти суть сортировки слиянием:

Изначальный массив делится пополам до тех пор, пока длина "половинок" не станет равна 1. Это - базовый случай. Затем элементы двух "половинок" сравниваются и заносятся в результирующий массив в порядке возрастания.

https://habr.com/ru/articles/710620/

👉@BookJava

Читать полностью…

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

Используем Neovim в качестве IDE для Java

Впервые я познакомился с Vim в университете, и с тех пор он был желанным спутником на протяжении большей части моей карьеры разработчика. Работа с программами на Python и Go казалась мне естественной с Vim, и я всегда чувствовал себя продуктивным. А вот Java была другим зверем. Когда появлялась возможность поработать с Java, я сначала пробовал Vim, но возвращался к IntelliJ и плагину IdeaVim, чтобы воспользоваться богатыми возможностями языка, которые открывает полноценная IDE.

К сожалению, у IntelliJ есть свои проблемы. В случайные, а иногда и в неподходящие моменты она просто перестаёт работать, пока не будут восстановлены все кэши, перезагружены проекты и не будет проведено полдня или больше за работой по устранению её неполадок. Пройдя через всю эту песню несколько месяцев назад, и глядя на прогресс в Vim, Neovim, спецификации протокола языкового сервера (Language Server Protocol, LSP) и их различных реализаций, я подумал, что, возможно, пришло время ещё раз взглянуть на использование Neovim в качестве Java IDE.

Возможно ли это? Да. Рекомендую ли я это делать? Возможно. Сошел ли я с ума? Возможно.

Поехали.

Rus https://habr.com/ru/articles/760234/

Eng https://sookocheff.com/post/vim/neovim-java-ide/

👉@BookJava

Читать полностью…

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

⁉️ Как Java-разработчику увеличить доход и востребованность?

Освоить один из самых популярных фреймворков на онлайн-курсе «Разработчик на Spring Framework» от OTUS.

Что даст вам курс:
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
✔️ Умение быстро проходить путь от идеи до production-grade
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5).

💪 Всего за 5 месяцев вы освоите новые скиллы, добавите сильные проекты в свое портфолио, сможете повысить грейд и выйти на новый карьерный уровень.

Вы можете заранее бесплатно получить полную программу, чтобы убедиться, что она вам подходит.
🎫 Курс доступен в рассрочку.

👉 Пройдите вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом OTUS: https://vk.cc/cszeRc

🎁 Черная пятница в OTUS! Успейте получить скидку 15% на курс!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

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

💻 Профессия «Java-разработчик»

Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT. 

Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия!

COSMO чёрная пятница: успейте получить скидку 30 000р.

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

Переходите по ссылке, выбирайте скидку и забирайте подарки🎁

Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

Читать полностью…

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

Нельзя так просто взять и вычислить абсолютное значение

Кажется, задача вычисления абсолютного значения (или модуля) числа совершенно тривиальна. Если число отрицательно, давайте сменим знак. Иначе оставим как есть. На Java это будет выглядеть примерно так:

public static double abs(double value) {
if (value < 0) {
return -value;
}
return value;
}

https://bookflow.ru/nelzya-tak-prosto-vzyat-i-vychislit-absolyutnoe-znachenie/

👉@BookJava

Читать полностью…

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

В чём преимущества и недостатки Spring Boot?

Основные сущности фреймворка Spring Boot – это стартеры. Зависимости с названиями вида spring-boot-starter-xxx выполняют две основных задачи. Во-первых, они добавляют набор типичных сторонних библиотек-зависимостей; во-вторых, регистрируют типичные бины и их конфигурации. Кроме того, со Spring Boot в проекте появляется ряд таких полезностей, как embedded-сервер, конфигурация web-приложения без web.xml, метрики, properties вынесенные из кода во внешние файлы.

Например, spring-boot-starter-data-jpa даст вам готовый комплект всего необходимого для использования JPA: драйвер, совместимую с ним версию Hibernate, библиотеки Persistence API и Spring Data. В контексте приложения появятся все нужные для JPA репозиториев бины.

Таким образом Spring Boot ускоряет и упрощает разработку, дает возможность избавиться от boilerplate-кода в проекте и сфокусироваться на бизнес-задачах. Это бывает особенно важно в микросервисной архитектуре, когда создается большое количество приложений.

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

👉@BookJava

Читать полностью…

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

Какой брокер сообщений выбрать для написания асинхронной связи?

🔥 Расскажем на бесплатном открытом уроке «RabbitMQ vs Kafka» от OTUS и Евгения Непомнящего – разработчика в «IT Sense».

На вебинаре:

✅ изучим особенности, плюсы и минусы брокеров;
✅ познакомимся с основными принципами их работы;
✅ посмотрим использование этих брокеров в live demo.

🗓 Занятие пройдёт 27 ноября в 20:00 мск и будет приурочено к старту курса «Microservice Architecture». После урока вы сможете продолжить обучение, в том числе в рассрочку.

🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://vk.cc/cst0N2

Читать полностью…

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

🌟 Открываем двери в мир Scala-разработки! 🚀

Присоединяйтесь к бесплатному онлайн-занятию «Применение механизма implicits в Scala» от OTUS: регистрация

В рамках вебинара:
— Познакомимся с историей возникновения и мотивацией за разными компонентами данного механизма.
— Разберем возможности и опасности которые таят в себе implicit преобразования
— Узнаем, как использовать и для чего служат implicit параметры
— Рассмотрим правила, по которым Scala ищет подходящего implicit кандидата и какие требования к нему предъявляются.

Вебинар подойдет тем, кто имеет первичный опыт работы со Scala и хочет разобраться, как работает механизм implicit.

💼 По завершении урока вы сможете оформить полный курс в беспроцентную рассрочку.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

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

Изучаем Java EE. Современное программирование для больших предприятий
Себастьян Дашнер (2018)

Java EE 8 - современная версия популярной платформы для программирования корпоративных приложений на языке Java. Новая версия платформы оптимизирована с учетом многочисленных технологических нововведений, среди которых - работа с контейнерами, улучшенные API для обеспечения безопасности, возможности работы с облачными хранилищами и микросервисной архитектурой. Java EE обеспечивает широкие возможности предметно-ориентированного проектирования (DDD), непрерывную интеграцию, работу по принципу DevOps, взаимодействие с Docker и Kubernetes.

Скачать

👉 @java_360

Читать полностью…

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

Совет SpringBoot

Вы можете запустить метод в Spring @Service сразу после запуска приложения, аннотируя его с помощью
@EventListener (ApplicationReadyEvent.class). Метод не может иметь параметров. Иногда я неправильно использую его, чтобы быстро протестировать определенный метод Spring Service.

👉@BookJava

Читать полностью…

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

Отличается ли List<?> от List<? extends Object>?

Все классы без исключения наследуются от Object. Поэтому неограниченный wildcard <?> всегда подразумевает его в качестве верхней границы. Оба этих типа в рантайме сотрутся в List<Object>, функциональных отличий нет.

Не смотря на одинаковое поведение, существует одно синтаксическое различие. Неограниченный дженерик – reifiable тип. Это значит, что он представлен в рантайме. Такой тип можно использовать в операторе instanceof, тогда как синтаксическая конструкция x instanceof List<? extends Object> приведет к ошибке компиляции.

Тип List без параметра имеет больше отличий, мы уже говорили о них ранее, в публикациях про raw types и проблему heap pollution.

👉@BookJava

Читать полностью…

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

🤔 С чего начать обучение на Java-разработчика?

💡 С бесплатного открытого урока «HashMap под капотом» от OTUS и Михаила Ронжина – старшего Kotlin/Java developer в Tinkoff.

HashMapэто структура данных, представляет собой хэш-таблицу.

На вебинаре мы:
- познакомимся с коллекцией HashMap;
- рассмотрим основные методы;
- узнаем, как она ведет себя под капотом.

📢📢 Занятие пройдёт 5 декабря в 20:00 мск и будет приурочено к старту курса «Специализация Java-разработчик». На нем вы сможете освоить профессию с нуля до уверенного Middle.

👉 Для бесплатного участия и получения записи урока регистрируйтесь прямо сейчас: https://vk.cc/csIUCW

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

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

Java Programming Made Easy: Unlock Your Coding Potential from Scratch
Автор: Ryan Campbell (2023)

Что вы узнаете:

- Понимание основ языка Java и принципов ООП.
- Работа с классами, объектами, наследованием, полиморфизмом и интерфейсами.
- Использование возможности структур данных, массивов и коллекций для эффективного управления данными.
- Реализация файлового ввода-вывода для взаимодействия приложений с внешними данными.
- Обработка событий и создание интерактивных приложений.
- Взаимодействие с базами данных с помощью JDBC и SQL.
- Мир параллельного программирования с помощью многопоточности.
- Ознакомьтесь с такими продвинутыми темами, как дженерики, лямбда-выражения и потоки.
- Научитесь искусству написания надежного кода с помощью модульного тестирования и отладки.

Скачать

👉 @java_360

Читать полностью…

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

Микросервисы на основе событий с Kafka Streams и Spring Boot

Всем привет! Это моя первая статья на Habr, так что не судите строго за стиль, а вот по содержанию буду рад любой конструктивной критике.

Статья основана на публикациях Confluent о том, как можно реализовать микросервисную архитектуру на основе событий с помощью Kafka Streams и KSQL.

https://habr.com/ru/articles/775900/

👉@BookJava

Читать полностью…

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

Как измерить производительность метода?

Если вы собираетесь оптимизировать код, или же выбрать лучшее с точки зрения производительности готовое решение, выбор необходимо подтвердить тестом производительности до и после. Такие тесты называются benchmark.

Первый вариант который приходит в голову – измерить время до, выполнить метод, посмотреть сколько времени прошло. У такого подхода есть ряд нюансов. Каждый последующий замер может случайным образом сильно отличаться от предыдущего. В реальном приложении результат будет совсем отличным от тестового, потому что виртуальная машина будет «прогретой»: заполнятся различные системные кэши, произойдут JIT-оптимизации горячего кода, память наполнится мусором.

Наивный подход может показать приблизительную производительность долгих операций: ввода-вывода, системных вызовов, или пользовательских сценариев на развернутом тестовом стенде. При тестировании кусков Java кода (в микробенчмарках) время выполнения очень мало, поэтому упомянутые нюансы вносят значительный вклад в результат.

Самое правильное решение – использовать готовый инструмент из JDK, JMH. Для этого его библиотеки добавляются в зависимости, а тестовый метод помечается аннотацией @Benchmark. Тесты можно запускать в виде исполняемого jar-файла, либо вызовом специальных программных методов библиотеки. Итоги тестирования будут выведены в виде таблицы в консоль.

👉@BookJava

Читать полностью…

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

🔎Хотите узнать об особенных возможностях Scala?

Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.

☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.

📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.

👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

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

14 советов по высокопроизводительной персистентности в Java

В этой статье я расскажу вам о различных советах по оптимизации высокопроизводительной Java Persistence, которые помогут вам получить максимальную отдачу от уровня доступа к данным.

Для создания высокопроизводительного уровня доступа к данным требуется много знаний о внутреннем устройстве баз данных, JDBC, JPA, Hibernate, и в этой статье обобщены некоторые из наиболее важных приемов, которые можно использовать для оптимизации корпоративного приложения.

https://vladmihalcea.com/14-high-performance-java-persistence-tips/

👉@BookJava

Читать полностью…

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

Полиморфизм в java

Словарное определение полиморфизма относится к принципу биологии, в соответствии с которым организм или вид может иметь множество различных форм или стадий. Этот принцип также может быть применен к объектно-ориентированному программированию и таким языкам, как язык Java. Подклассы класса могут определять свое собственное уникальное поведение и в то же время разделять некоторые функциональные возможности родительского класса.

https://bookflow.ru/polimorfizm-v-java/

👉@BookJava

Читать полностью…

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

Совет 💡

Добавьте в JDBC URL свойство ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.

👉@BookJava

Читать полностью…

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

Как работать с базами данных еще эффективнее?

Узнайте на бесплатном открытом уроке «Индексы: структуры данных» от OTUS.

На вебинаре:

✅ рассмотрим, какие ситуации требуют использования индексов;
✅ объясним, как они помогают ускорить выполнение запросов и улучшить производительность системы;
✅ разберём структуры данных, на которых основаны индексы, включая бинарные деревья поиска, B-tree, сбалансированные деревья и хеш-таблицы;
✅ научимся использовать команду explain в PostgreSQL для анализа выполнения запросов.

Занятие пройдёт 29 ноября в 20:00 мск в рамках курса «Highload Architect».

Для бесплатного участия регистрируйтесь прямо сейчас: https://vk.cc/csxe4e

Читать полностью…

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

Совет

show-sql - это самый простой (но не самый лучший!) способ увидеть SQL, сгенерированный Hibernate. Вы можете немного улучшить его, включив форматирование, показ JPQL-запроса, сгенерировавшего запрос, и включив подсветку, которая добавляет некоторый цвет к выводу.

👉@BookJava

Читать полностью…

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

Какие бывают проблемы с арифметикой в Java?

Переполнения.
Числа примитивных типов в Java хранятся в дискретной оперативной памяти компьютера и занимают фиксированный объем. Из этого вытекает ограничение диапазона возможных значений. Когда результат арифметической операции выпадает из диапазона, значение идет по кругу – максимальное становится минимальным, либо наоборот. Такая ситуация называется переполнение (underflow/overflow).

Решение: если опасность переполнения значима, помогут методы с суффиксом *Exact из классе Math. Это безопасные аналоги арифметических операций, которые бросают исключение в случае переполнения.

Платформо-зависимые округления.
По умолчанию JVM производит арифметические вычисления насколько это возможно точно. Пределы точности могут зависеть от аппаратного обеспечения. Это неприемлемо для программ, к которым предъявляют строгие требования переносимости, когда результат вычислений должен быть одним и тем же на любом железе.

Решение: модификатор strictfp в объявлении класса или метода приводит точность вычислений к единой спецификации IEEE 754. За это может ухудшиться производительность и уменьшиться точность значений.

ArithmeticException.
Операторы могут выбрасывать исключение. Это происходит, например, при делении на ноль. Это же исключение бросают безопасные методы из Math.

Решение: неожиданное исключение обычно указывает на логическую ошибку. Лучший способ предотвратить логические ошибки – покрыть код Unit-тестами.

👉@BookJava

Читать полностью…

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

Чем отличаются JRE, JVM И JDK?

JRE кратко - для работы. Java Runtime Environment (сокр. JRE) - минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки. Состоит из виртуальной машины - Java Virtual Machine и библиотеки Java-классов.

JDK кратко - для программирования. Java Development Kit (сокращенно JDK) - бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

Java Virtual Machine (сокращенно Java VM, JVM) - виртуальная машина Java - основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования.

👉@BookJava

Читать полностью…

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

Хотите начать карьеру в Java, но не знаете как? Расскажем и покажем на бесплатном мини-курсе Skillbox. Будет полезно и тем, кто только хочет познакомиться с профессией, и тем, кто уже начал делать первые шаги в ней. Подойдёт новичкам разных возрастов.

Регистрируйтесь по ссылке
🎉 И получите первый подарок — гайд по профессии Java-разработчика.

Что будем делать на мини-курсе:

🔹 Обсудим, почему Java — один из самых востребованных языков
🔹 Познакомимся с кодом Java и рассмотрим ключевые элементы приложений на этом языке
🔹 Определим навыки для трудоустройства
🔹 Сравним Java и Python
🔹 Сделаем Java-приложения по инструкции

Как проходит мини-курс:

📌 Смотрите видео в удобное время
📌 Получаете полезные материалы
📌 Закрепляете навыки
📌 Посещаете итоговый вебинар

🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год.

Успейте записаться бесплатно!

Читать полностью…
Subscribe to a channel