Работа с null ссылками: Kotlin vs. Java
Предложенная сегодня статья напомнит про "ошибку на миллион долларов", а также сравнит между собой языки программирования Java и Kotlin с точки зрения их работы с null ссылками. 😃
Приятного чтения!
Читать статью
Предложенная сегодня статья напомнит про "ошибку на миллион долларов", а также сравнит между собой языки программирования Java и Kotlin с точки зрения их работы с null ссылками. 😃
Приятного чтения!
Читать статью
👍2🔥2
GRASP: почему настоящая архитектура начинается не с SOLID
Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.
Также не обошли меня и классические принципы проектирования — SOLID, KISS, DRY — и, думаю, каждый читатель добавит сюда свои.
Безусловно, это всё важные и фундаментальные вещи.
Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления.
Читать статью
Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.
Также не обошли меня и классические принципы проектирования — SOLID, KISS, DRY — и, думаю, каждый читатель добавит сюда свои.
Безусловно, это всё важные и фундаментальные вещи.
Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления.
Читать статью
VK
GRASP: почему настоящая архитектура начинается не с SOLID
Многие инженеры начинают своё архитектурное мышление с SOLID. Затем изучают GoF-паттерны. Но всё равно остаётся ощущение, что чего-то не..
👍3🔥3
Базовый обзор @TempDir в Java
Сегодня разберемся с @TempDir — мощным, но часто недооценённым инструментом JUnit 5 для работы с временными файлами и директориями в тестах.
Читать статью
Сегодня разберемся с @TempDir — мощным, но часто недооценённым инструментом JUnit 5 для работы с временными файлами и директориями в тестах.
Читать статью
VK
Базовый обзор @TempDir в Java
Сегодня разберемся с @TempDir — мощным, но часто недооценённым инструментом JUnit 5 для работы с временными файлами и директориями в тестах.
👍5🔥3❤1
Лучшие практики реализации equals() и hashCode() на примере JPA сущности
Всем привет!
Рано или поздно при работе с объектами и хэш-коллекциями мы сталкиваемся с вопросами: «Где моя сущность?» или «Почему они не равны?».
В контексте работы с важными данными эти вопросы становится еще более актуальными.
А самое что страшное, что нет единого ответа на вопрос: «А как сделать мне в моём проекте?».
Читать статью
Всем привет!
Рано или поздно при работе с объектами и хэш-коллекциями мы сталкиваемся с вопросами: «Где моя сущность?» или «Почему они не равны?».
В контексте работы с важными данными эти вопросы становится еще более актуальными.
А самое что страшное, что нет единого ответа на вопрос: «А как сделать мне в моём проекте?».
Читать статью
VK
Лучшие практики реализации equals() и hashCode() на примере JPA сущности
Всем привет!Рано или поздно при работе с объектами и хэш-коллекциями мы сталкиваемся с вопросами: «Где моя сущность?» или «Почему они не..
👍4🔥3❤1
Spring Reactor. Эволюция сервисов. На пути к реактивности
Это статья описывает опыт миграции традиционного приложения java spring на Spring reactor стек. О специфике разрабатываемой информационной системы, уже подробно рассказывал. Кратко о системе - смешанная сервисно-микросервисная архитектура. Чтобы получить бизнес результат, требуется вызвать микросервис, который вызывает сервис, который вызывает набор микросервисов для формирования ценностного набора данных. Получается цепочка вызовов. Сервисы и микросервисы разрабатывались на традиционном технологическом стеке, без использования реактивного подхода.
Читать статью
Это статья описывает опыт миграции традиционного приложения java spring на Spring reactor стек. О специфике разрабатываемой информационной системы, уже подробно рассказывал. Кратко о системе - смешанная сервисно-микросервисная архитектура. Чтобы получить бизнес результат, требуется вызвать микросервис, который вызывает сервис, который вызывает набор микросервисов для формирования ценностного набора данных. Получается цепочка вызовов. Сервисы и микросервисы разрабатывались на традиционном технологическом стеке, без использования реактивного подхода.
Читать статью
VK
Spring Reactor. Эволюция сервисов. На пути к реактивности
Контекст
👍4🔥1
Красивый код с Java Optional и Either
Многие из Java разработчиков, особенно начинающие, упускают из вида возможности функционального программирования. 😒
Предложенная сегодня статья научит вас последовательному соединению экземпляров Optional и Either для написания лаконичного и красивого кода.
Хорошей практики!
Читать статью
Многие из Java разработчиков, особенно начинающие, упускают из вида возможности функционального программирования. 😒
Предложенная сегодня статья научит вас последовательному соединению экземпляров Optional и Either для написания лаконичного и красивого кода.
Хорошей практики!
Читать статью
👍4🔥2
Изолированные классы в Java
Изолированные (запечатанные) классы появились в Java 15 как средство ограничения иерархии наследования класса или интерфейса.
Предложенная сегодня статья имеет практический характер и содержит достаточно много кода, чтобы раскрыть тему изолированных классов.
Хорошей практики! 😃
Читать статью
Изолированные (запечатанные) классы появились в Java 15 как средство ограничения иерархии наследования класса или интерфейса.
Предложенная сегодня статья имеет практический характер и содержит достаточно много кода, чтобы раскрыть тему изолированных классов.
Хорошей практики! 😃
Читать статью
👍4🔥1
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
Читать статью
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
Читать статью
Teletype
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть...
👍4🔥3
Лучшие практики написания кода в Spring Boot
Spring Boot — это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Практики и советы, приведенные в этой статье, помогут улучшить приложение Spring Boot и сделать его более эффективным.
Читать статью
Spring Boot — это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Практики и советы, приведенные в этой статье, помогут улучшить приложение Spring Boot и сделать его более эффективным.
Читать статью
Teletype
Лучшие практики написания кода в Spring Boot
Spring Boot — это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Практики и советы...
❤2🔥1
Шпаргалка по структурам данных в Java
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.
Читать статью
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.
Читать статью
Teletype
Шпаргалка по структурам данных в Java
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу...
❤2🔥1
Spring-потрошитель: жизненный цикл Spring Framework
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.
Читать статью
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.
Читать статью
Teletype
Spring-потрошитель: жизненный цикл Spring Framework
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя...
👍4❤2🔥2
Компилируем компилятор или ускоряем javac вдвое
Ну блин короче :-)
Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе.
Мы ускорили javac вдвое и теперь можно экономить на сборке.
Читать статью
Ну блин короче :-)
Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе.
Мы ускорили javac вдвое и теперь можно экономить на сборке.
Читать статью
VK
Компилируем компилятор или ускоряем javac вдвое
Ну, блин, короче :-)
❤4🔥3
9 ложных или устаревших представлений о Java
С момента первого выпуска Java в 1995 году многое изменилось как в программном, так и в аппаратном обеспечении. А переход на шестимесячный цикл релизов способствовал стремительной эволюции языка и инструментов Java.
В этой статье рассматриваются ложные и устаревшие представления о Java.
Читать статью
С момента первого выпуска Java в 1995 году многое изменилось как в программном, так и в аппаратном обеспечении. А переход на шестимесячный цикл релизов способствовал стремительной эволюции языка и инструментов Java.
В этой статье рассматриваются ложные и устаревшие представления о Java.
Читать статью
👍4🔥2
Производительность различных типов индексов в БД
Знаете ли вы, что композитные (многоколоночные) индексы работают в 10 раз быстрее чем комбинированные индексы? 😳
А знаете ли вы, почему при этом в Postgres выигрыш больше, чем в MySQL?
Если ваши ответы отрицательные, то предложенная сегодня восполнит эти пробелы.
Приятного чтения!
Читать статью
Знаете ли вы, что композитные (многоколоночные) индексы работают в 10 раз быстрее чем комбинированные индексы? 😳
А знаете ли вы, почему при этом в Postgres выигрыш больше, чем в MySQL?
Если ваши ответы отрицательные, то предложенная сегодня восполнит эти пробелы.
Приятного чтения!
Читать статью
👍5
Spring Data JPA: проекции в запросах
Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом, что проекции определяют атрибуты сущности и столбцы базы данных, возвращаемые вашим запросом. А возможность выбирать нужные столбцы очень важна для вашей бизнес-логики. Также это имеет решающее значение для производительности вашего приложения и поддерживаемости вашего кода. Вы можете (и должны) выбрать такую проекцию, которая минимизирует накладные расходы и предоставляет данные в наиболее удобной для использования форме.
Читать статью
Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом, что проекции определяют атрибуты сущности и столбцы базы данных, возвращаемые вашим запросом. А возможность выбирать нужные столбцы очень важна для вашей бизнес-логики. Также это имеет решающее значение для производительности вашего приложения и поддерживаемости вашего кода. Вы можете (и должны) выбрать такую проекцию, которая минимизирует накладные расходы и предоставляет данные в наиболее удобной для использования форме.
Читать статью
Teletype
Spring Data JPA: проекции в запросах
Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом...
❤4👍2🔥1
Полезные и неизвестные библиотеки Java
Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java.
Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test, то одновременно мы включаем такие библиотеки, как mockito, junit-jupiter или hamcrest. Конечно, это известные библиотеки для сообщества.
Читать статью
Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java.
Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test, то одновременно мы включаем такие библиотеки, как mockito, junit-jupiter или hamcrest. Конечно, это известные библиотеки для сообщества.
Читать статью
Teletype
Полезные и неизвестные библиотеки Java
Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное...
👍3🔥1
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
Teletype
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы...
👍3🔥2
JavaDoc: добро или необходимое зло?
Привет! Меня зовут Андрей Костров, я старший разработчик в X5 Tech.
При создании проекта А мы вложили много сил в JavaDoc. Многим казалось это излишним. Затем проект А заморозили и начали новый – проект Б. При этом переиспользовали много кода из проекта А, вместе с JavaDoc. Рассказ о том, принёс ли JavaDoc пользу (спойлер: да). А также немного слов о том, где усилия по JavaDoc всё-таки были избыточны.
Читать статью
Привет! Меня зовут Андрей Костров, я старший разработчик в X5 Tech.
При создании проекта А мы вложили много сил в JavaDoc. Многим казалось это излишним. Затем проект А заморозили и начали новый – проект Б. При этом переиспользовали много кода из проекта А, вместе с JavaDoc. Рассказ о том, принёс ли JavaDoc пользу (спойлер: да). А также немного слов о том, где усилия по JavaDoc всё-таки были избыточны.
Читать статью
Teletype
JavaDoc: добро или необходимое зло?
Привет! Меня зовут Андрей Костров, я старший разработчик в X5 Tech.
🔥4👍2
Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX
При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.
Надеюсь, что моя статья поможет кому-нибудь избежать ошибок, найти ответы на вопросы или просто сразу пойти правильным путем (например, создавать обычный maven-проект на Java-8, вручную прописывая в pom.xml зависимости и способ сборки, и всегда указывать на латинице имена учетных записей, директорий в своей операционной системе).
Читать статью
При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.
Надеюсь, что моя статья поможет кому-нибудь избежать ошибок, найти ответы на вопросы или просто сразу пойти правильным путем (например, создавать обычный maven-проект на Java-8, вручную прописывая в pom.xml зависимости и способ сборки, и всегда указывать на латинице имена учетных записей, директорий в своей операционной системе).
Читать статью
Teletype
Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX
Как я уже писала в своей предыдущей статье, недавно, после двухлетнего обучения (обещали 12 месяцев, но жизненные и геополитические...
🔥3👍1