Обновить
18
0
Юрий Павлов @sparhawk

Ведущий разработчик Java

Отправить сообщение

Java, реактивное программирование, Reactor, Spring Cloud Function, Streams, etc…

Время на прочтение23 мин
Количество просмотров24K


Реактивное программирование в Java — полезный инструмент со множеством применений. Его суть в асинхронной обработке поступающих сообщений, и есть несколько вариантов реализации этого механизма.


И Java в целом, и Spring Framework в частности подразумевают несколько аспектов реактивного программирования. Это касается Spring WebFlux в качестве замены Spring MVC. Также можно использовать Project Reactor в Java непосредственно, без Spring Framework. Однако Spring предоставляет средства декларативного определения функции Spring Cloud Function и средства интеграции приложений с использованием внешних очередей в рамках проекта Spring Cloud Stream. В комплексе эти средства позволяют широко использовать реактивное программирование, упрощая создание, размещение, масштабирование и обслуживание приложений.


Помимо создания новых приложений, Spring Cloud Function/Stream позволяют модифицировать и существующие приложения, облегчая жизнь разработчикам в реализации горизонально масштабируемых сервисов.


Статья является кратким обзором компонентов Spring Framework, позволяющих реализовывать программы в терминах функций асинхронной обработки сообщений. И ориентирована на разработчиков, уже знакомых со Spring Framework, но ещё не имеющих опыта построения реактивных приложений с декларативным управлением функциями-компонентами.

Читать дальше →

Spring Modulith: достигли ли мы зрелости модульности

Время на прочтение6 мин
Количество просмотров11K

Одной из основных причин разработки микросервисов является то, что они обеспечивают четкие границы модулей

Однако минусы микросервисов настолько огромны, что это все равно, что отрубить себе правую руку, чтобы научиться писать левой; есть более управляемые (и менее болезненные!) способы достижения того же результата.

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

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

Читать далее

Spring Modulith: проверяем границы модулей в монолите и события домена

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.8K

Привет, Хабр!

Еще в C++20 появилась явная поддержка модулей в языке. Интересно, но в Java тоже давно искали похожее решение для упорядочивания больших монолитных проектов. Spring предлагает свой ответ – проект Spring Modulith, цель которого дать разработчику инструмент для построения модульного монолита. Он не делает всю работу, но помогает структурировать код по модулям, проверять архитектурные правила и организовывать взаимодействие между этими модулями.

Читать далее

Java Digest #28

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.2K

Всем привет! 👋👋👋👋👋

Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

Соскучились по AoT-компиляции? Даже если нет, упоминаний о ней не избежать. Java 25, Spring 7, Spring Boot 4, Gradle 9.0.0, Intellij IDEA 2025.2, Amplicode 2025.2, что-то релизнулось, что-то только собирается, но обо всем уже нашли статьи и собрали для вас. 

А теперь к громким новостям. Нидерландские ученые убили SQL — именно так мог бы звучать заголовок к научной статье о том, как 2,5 млн строк кода на PL/SQL переводили на Java с помощью LLM.

Читать далее

Java Digest #23

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.1K

Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин, Константин и Роман. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске будет много релизов, один из них — новый майлстоун Spring 7.0.0, а еще — новые версии Quarkus и Kora. Снова узнаем, как сделать Spring быстрее, вспомним старые хорошие доклады в новом формате и посмотрим на фичи Java 24 на примере крестиков-ноликов.

Читать далее

Состояние Spring в 2024 году

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров14K

Команда Spring АйО перевела важнейший документ для Spring-разработчиков!

В начале июня компания VMWare, владеющая Spring, опубликовала результаты исследования, в котором приняло учатие более 1,500 разработчиков по всему миру. Отчёт получился действительно интересным и всеобъемлющим. Были рассмотрены как базовые темы, такие как выбор архитектурных подходов и типов API, так и продвинутые, такие как компиляция в Native Image и использование Spring вместе с Kubernetes.

Читать далее

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

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров82K

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

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

Читать далее

Что нового в JUnit 6: ключевые изменения и улучшения

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.9K

Спустя восемь лет после JUnit 5 выходит новая версия популярного фреймворка. JUnit 6 — это не просто обновление, а переход к современной экосистеме Java и Kotlin. В новом переводе от команды Spring АйО узнаем, что новая версия требует Java 17+, унифицирует версии компонентов, удаляет deprecated API и внедряет поддержку JSpecify для строгого null-safety.

Читать далее

Много спрашиваю и откладываю встречи на последний момент: мой опыт прохождения собеседований

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров9.7K

Любое собеседование — это стресс, особенно если ты джун без опыта в небольшом городе. Никто не застрахован от неудачных интервью, токсичных работодателей и собственных провалов. К счастью, всё это можно пережить.

Привет! Меня зовут Ярослав, я бэкенд-разработчик в компании «Синимекс» и ревьюер на курсе «Java-разработчик» в Яндекс Практикуме. Я расскажу, как проходил первые собеседования и что помогло мне получить офферы после двух интервью из трёх.

Читать далее

Использование Redis в инфраструктурных микросервисах

Время на прочтение7 мин
Количество просмотров18K
В 2019 году я писал о том, как создать хранилище событий, основанное на Redis. Я рассказывал о том, что потоки Redis хорошо подходят для организации хранения событий, так как они позволяют хранить события с использованием иммутабельного механизма, напоминающего журнал транзакций, поддерживающего только присоединение новых данных к уже имеющимся, но не изменение существующих данных. Теперь же, используя обновлённое приложение OrderShop, речь о котором шла в вышеупомянутом материале, я хочу продемонстрировать пример использования Redis для организации работы очереди событий, продолжая рассказывать о возможностях применения Redis Enterprise, выходящих за пределы кеширования.


Читать дальше →

Что значит «хороший вкус» в разработке ПО?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров8.5K

Технический вкус — это не то же самое, что технический навык. Вы можете быть технически подкованы, но иметь плохой технический вкус и наоборот. Как и любой вкус в принципе, технический вкус зачастую не зависит от наличия фактического навыка. Вы же можете отличить хорошую еду от плохой, не умея готовить? То же самое с ПО — вы вполне способны понять, нравится ли оно вам, не имея возможности его создать. И если технические навыки можно наработать через усердное изучение и повторение, то хороший вкус вырабатывается менее очевидным путём.

Читать далее

Транзакционная работа с топиками: архитектура и сравнение решений в Apache Kafka и YDB Topics

Время на прочтение14 мин
Количество просмотров5.5K

Привет, Хабр! Меня зовут Алексей Николаевский, и мы с командой делаем СУБД Яндекса. С 2013 года в Яндексе использовали Kafka для потоковой передачи данных. Но Kafka со временем перестала справляться с растущими объёмами, и в 2017 году мы перешли на своё решение.

Брокер сообщений YDB Topics во многом вдохновлялся Kafka: в нём также есть топики, партиции и аналогичные способы работы с данными. Но есть и существенные отличия, о которых в конце прошлого года я рассказал на московской конференции HighLoad. Под катом — адаптированная для Хабра статья по мотивам этого доклада: про архитектуру транзакций в обеих системах и интересные для разработчиков детали и нюансы, которые мы обсуждали на конференции.

Читать далее

Apache Pulsar как основа для системы очередей

Время на прочтение13 мин
Количество просмотров24K

Меня зовут Агалецкий Павел, я старший инженер в команде Архитектуры. Эта статья про новую для нас в Авито технологию — Apache Pulsar и построение системы очередей, Queues as a Service, на её основе.

Читать далее

Как я обнаружил в ноутбуке Dell Inspiron баг ACPI, одолевавший меня восемь лет

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров15K

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

В течение восьми лет такой была реальность моего взаимодействия с Dell Inspiron 5567. Этот необъяснимый баг возникал в каждой установленной ОС. В статье я расскажу историю о том, как погрузился в исходный код прошивки и обнаружил единственную команду-виновницу.

Читать далее

Почему асинхронный Python не такой популярный?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров12K

Недавно на Youtube появилась документалка о Python. Примерно в середине ленты есть драматический эпизод о том, как переход от Python 2 к 3 разделил сообщество (спойлер: в конечном итоге этого не случилось).

Первые версии Python 3 (3.0-3.4) в основном делали упор на стабильность и упрощение перехода пользователей с версии 2.7. В 2015 была выпущена версия 3.5 с новой фичей: ключевыми словами async и await для выполнения корутин.

Миновало десять лет и девять релизов, через считанные недели выпустят финальную версию Python 3.14.

Пока все отвлеклись на фичи разноцветного REPL в 3.14, в release notes появились серьёзные заявления, связанные с конкурентностью и параллелизмом.

Читать далее

YDB в мире Java: от нативного клиента до ORM’ов за 1 год

Время на прочтение6 мин
Количество просмотров4.8K

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

Меня зовут Кирилл Курдюков, в 2024 году я выступил в Питере на Joker — конференции для Java-разработчиков — с историей о том, как мы с командой делаем СУБД Яндекса удобной для джавистов.

Под катом статья, написанная по мотивам доклада. Это история о том, как маленькими шагами пройти путь от нативного клиента на Java до поддержки Hibernate, Liquibase, jOOQ и других популярных в мире Java-разработки решений.

Читать далее

9 причин работать медленнее, чтобы успевать больше

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров18K

Привет Хабр! Я отвечаю за производственный процесс от бэклога до выпуска релиза клиенту в одном из трёх крупных банков, и мой календарь в среднем выглядит вот так. Если твой календарь выглядит похоже, то тебе тоже есть, что менять. Я расскажу о своих девяти правилах, которые помогают справиться с нагрузкой, оптимизировать календарь, перестать уставать и выгорать на работе.

Читать далее

Смирись: ты ненормальный

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров100K

Я встречал много людей, которым не нравится их работа. И когда я их спрашиваю, чем бы они занимались вместо, около 75% из них отвечают что‑то вроде: «Хммм, не знаю. Я бы хотел открыть свою небольшую кофейню!» Если в тот день я в хорошем настроении, я задаю им встречный вопрос: «Тогда где бы ты взял кофейные зерна?»

Если они не знают что ответить, то я задаю ещё пару наводящих вопросов:

Читать далее

Вы не знаете TDD

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров9.1K

Кажется, про TDD давно всё известно: сперва тест — потом код — получаем покрытие. Но на деле его суть понимают неправильно — как критики, так и сторонники.

Эта статья — не инструкция и не религиозная проповедь. Это разбор заблуждений. Причём речь пойдёт не только о критиках TDD, но и о его сторонниках.

TDD часто воспринимают как способ добиться максимального покрытия или как дисциплину «писать тесты вперёд». Но настоящая цель — не в тестах, а в итеративном проектировании поведения и архитектуры.

Если вам кажется, что TDD — это занудно, медленно, не подходит к реальному коду или убивает гибкость — возможно, вы всё делали правильно.
Но с совершенно другими целями.
Именно поэтому вам не понравилось.

Разберёмся, что такое TDD на самом деле — и почему вы, скорее всего, не знаете TDD.

Читать далее

Работа над ошибками

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров1.1K

Достаточно большой период времени занимался технической поддержкой СУБД Oracle. Накопилось некоторое количество историй и заметок на полях по этому поводу, не могу не поделиться ими с вами. В общем — садимся по удобнее, берем попкорн, чашку горячего чая или кофе.. Дело было так.

Читать далее

Информация

В рейтинге
5 646-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность