Десериализация JSON в GraalVM Native Image

Одной из главных профессиональных целей, которые я ставил перед собой на этот уже уходящий 2022 год, было изучение перспективной GraalVM, в особенности сборки нативных образов (Native Image), а так же внедрение этого всего в свои проекты. В общих чертах я уже был знаком с GraalVM, и даже экспериментировал со сборкой нативных образов из проектов, основанных на Spring Boot, но ждал релиза Spring Boot 3. И, дождавшись его, начал переводить существующие проекты на новую версию стека Spring и заодно пробовать собирать нативные образы.

Читать далее Десериализация JSON в GraalVM Native Image

Spring по верхам: разработка REST-сервиса

У меня в планах уже давно есть написание нескольких циклов материалов, и я даже начинал писать некоторые из них, но всякий раз по тем или иным причинам дело не доходило до публикации. И вот я наконец созрел явить общественности свой первый цикл материалов «Spring по верхам», в котором буду поверхностно рассказывать о том, как можно использовать экосистему Spring при разработке проектов.

Читать далее Spring по верхам: разработка REST-сервиса

Java: управление потоком выполнения без исключений

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

Ветвление кода без исключений

Использование исключений для управления потоком выполнения является достаточно распространённой практикой. Однако во многих статьях и книгах, посвящённым лучшим практикам, например в замечательной книге Джошуа Блоха “Java — Эффективное программирование“ (Effective Java, Joshua Bloch), даётся рекомендация не использовать исключения как способ ветвления кода.

Читать далее Ветвление кода без исключений

Отправка SSE из JMS при помощи Spring WebFlux

Когда речь заходит о необходимости отправки сообщений клиенту от сервера по HTTP, варианты решения, как правило, ограничиваются использованием вебсокетов или событий отправляемых сервером (Server-sent Events, SSE). Если требуется отправить клиенту сообщение из JMS, то обычно реализация этой задачи сводится к использованию STOMP через вебсокеты, как это описано в официальной документации Spring Framework.

Читать далее Отправка SSE из JMS при помощи Spring WebFlux

Введение в Optional

В JDK 8 был введён новый утилитарный класс java.util.Optional, целями которого являются повышение null-safety и читаемости кода при работе со ссылками, значения которых могут быть null. Главная же цель Optional — замена null-значений, благодаря чему должна повышаться безопасность и читаемость кода.

Optional тесно связан с другими нововведениями JDK 8: Stream и лямбда-выражениями.

Читать далее Введение в Optional

Лямбда-выражения в Java

Поддержка лямбда-выражений, реализованная в Java 8, стала одним из наиболее значимых нововведений за последнее время. Будучи упрощённой записью анонимных классов, лямбды позволяют писать более лаконичный код при работе со Stream или Optional. Лямбда-выражения часто используются как совместно со многими API стандартной библиотеки Java, так и со сторонними API, среди которых JavaFX, реактивные стримы и т.д.

Читать далее Лямбда-выражения в Java

REST API с использованием Spring

Spring Framework WebMVC позволяет разрабатывать не только классические веб-приложения, но и реализовывать REST API. В этой статье я опишу процесс разработки REST API простого проекта на Java с использованием Spring Boot и Spring Framework.

Читать далее REST API с использованием Spring

Java и MongoDB: работа с кодеками

В предыдущей публикации я описал базовые операции при работе с MongoDB в Java.
Использовать org.bson.Document для работы с данными, хранящимися в коллекциях далеко не всегда удобно. Как правило, в коллекциях хранятся данные имеющие какую-то определённую структуру, соответствующую, например, POJO-классам вашего проекта.

Для реализации преобразования BSON в объекты соответствующих классов и обратно в драйвере MongoDB предусмотрены кодеки, реализующие интерфейс org.bson.codecs.Codec. В этой публикации я рассмотрю варианты разработки собственного кодека и использования готовых.

Читать далее Java и MongoDB: работа с кодеками

Java и MongoDB: базовые операции

MongoDB — одна из наиболее популярных документноориентированных систем управления баз данных с открытым исходным кодом.

Для использования MongoDB в Java-проектах потребуется синхронный или асинхронный драйвер. В этой статье я опишу работу с синхронным драйвером.

Читать далее Java и MongoDB: базовые операции