![](https://habrastorage.org/getpro/habr/upload_files/5ad/b12/256/5adb12256c3ea136ca2dc52d5c9d34c2.png)
Недавно Java дошла до юбилейной 20-й версии, а у нашей Java-конференции JPoint своя круглая дата: впервые она прошла 10 лет назад. Каких именно докладов о языке-юбиляре ожидать на конференции-юбиляре в апреле?
Как водится, в программе есть разные тематические блоки:
— и об инструментах («Как познавать Spring Boot 3 с помощью TDD»),
— и о производительности (тут научат пользоваться профайлером perf для JVM-задач),
— а также об архитектуре, тестировании, «реактивщине», работе с данными.
А полный список докладов с описаниями — далее в посте.
Оглавление
Кейноут
Обычно на конференциях несколько докладов идут параллельно, и каждый участник сам выбирает, что актуальнее для него. Но закрывающий доклад объединяет всю аудиторию, так что там не поговорить о нюансах Akka Streams, нужно что-то универсальное для всех. И в этот раз он такой:
Кооперация против конкуренции: как на самом деле выживали сообщества
![](https://habrastorage.org/getpro/habr/upload_files/edb/f10/fe3/edbf10fe3ae6eba0628609e5f7bd1132.jpeg)
Станислав Дробышевский
МГУ
Люди — общительные и общественные. Без взаимодействия человек — не человек. Но взаимодействия бывают сильно разными. Одни наши предшественники предпочитали брутальную версию общения, другие были добры. Какая стратегия оказалась выигрышной? Кто в итоге вымер, а кто оказался нашим предком? Какие поведенческие ловушки уготовила нам наша эволюция?
Про кейноуты поняли, теперь поговорим про «обычные» доклады:
Инструменты
Как анализаторы кода ищут ошибки и дефекты безопасности
![](https://habrastorage.org/getpro/habr/upload_files/3cb/0bf/b56/3cb0bfb5609e7c1d893c2ad0a99ed5e9.png)
Сергей Васильев
PVS-Studio LLC
В нашем коде ошибок нет — это известная истина. А вот у того, кто писал этот legacy... ух, ему бы анализатор, чтобы все проблемы подсветил. Кстати, а как это работает? Как анализаторы проверяют код и находят в нем ошибки и дефекты безопасности? Какие есть типы анализа, как они дополняют друг друга и в чем их недостатки?
На докладе разберем эти вопросы, посмотрим на примеры ошибок из реальных проектов и затронем тему внедрения анализаторов в процессы.
Пирамида потребностей Маслоу для Java/Kotlin-разработчика
![](https://habrastorage.org/getpro/habr/upload_files/457/0de/6fc/4570de6fc1445dc4ac44dcf220c6cfde.jpeg)
Дмитрий Иванов
Huawei
Андрей Кулешов
Huawei
Применение концепции пирамиды Маслоу к программистам: из каких слоев состоит пирамида потребностей у разработчика, как можно удовлетворить их с помощью тех или иных технологий. Спикеры сделают небольшой обзор технологий, стека и DevTools, которые используются для создания современных проектов. Переходя от базовых потребностей выше, Андрей и Дмитрий постараются рассказать начинающим и напомнить опытным разработчикам о том, что нужно любому проекту и как разработку проекта можно улучшить, перейдя на следующий уровень развития.
DSL-конструкции языка Kotlin и архитектура как код
![](https://habrastorage.org/getpro/habr/upload_files/013/371/af2/013371af221be51779e12394e19b2a57.jpeg)
Николай Поташников
КУРС-ИТ
Подход «как код» для описания архитектуры программы, системы или даже организации получает все большее распространение. Он позволяет управлять версиями архитектуры, тестировать архитектурные описания на внутреннюю консистентность, соответствие реализации, соответствие внешним условиям. Возможности Kotlin по построению типобезопасных строителей (DSL-конструкции) делают его очень удобным языком для создания архитектурных описаний и представлений архитектуры для всех заинтересованных лиц.
Fully Multiplatform Pure Java Development for Desktop, Web, Android and iOS
![](https://habrastorage.org/getpro/habr/upload_files/0d8/145/040/0d8145040c4efc4e3c49e86c65585c77.jpg)
Кирилл Праздников
Huawei
Почти все Java-программисты знают, что на Kotlin можно написать код, который будет исполняться как на JVM, так и в браузере и в iPhone. А можно ли написать такое мультиплатформенное решение на чистой Java? И чтобы удобно, быстро и все нравилось... Рассказ о технологии и опыте запуска Java-программ на широком классе устройств и систем: Web, Desktop, iOS, Android с использованием AOT-компиляторов GraalVM и TeaVM.
Моментальная аналитика с помощью Spring + Redis. Это возможно?
![](https://habrastorage.org/getpro/habr/upload_files/8a9/89d/260/8a989d26092217421038851ac787e2b9.jpeg)
Артем Артемьев
ИТ-НЛМК
В каждой крупной компании есть аналитические сервисы, и компания спикера — не исключение.
Артем вкратце расскажет об одном из аналитических сервисов своего проекта и о некоторых сложностях, с которыми его команда столкнулась в процессе разработки. Сломает стереотип о том, что Redis — это просто база для кэша. Поговорит о возможностях Redis в качестве БД для аналитики, а также о том, как с ним работать на стеке Java + Spring. Покажет схему работы с двумя БД, примеры кода и демо проекта.
В заключении спикер расскажет о том, что в команде получили на выходе (производительность), и о подводных камнях, с которыми столкнулись.
Генерация GS1 DataMatrix средствами Java
![](https://habrastorage.org/getpro/habr/upload_files/801/526/cc6/801526cc65b834039d2a81ee30080f1c.png)
Виктор Барсуков
LaTech
В докладе рассматривается проблема генерации GS1 DataMatrix средствами Java-библиотек для генерации двумерных штрих-кодов. Поговорим о том, почему нельзя просто взять и добавить FNC1 в начало кодируемой строки: почему для этого требуются манипуляции с библиотеками.
Однажды в байт-коде: инструменты анализа
![](https://habrastorage.org/getpro/habr/upload_files/807/5d9/7f9/8075d97f939406a2ddfb2c648f4f618a.jpg)
Алексей Волков
Huawei Technologies
![](https://habrastorage.org/getpro/habr/upload_files/a3f/a79/0ba/a3fa790baaee4c25a1a9ba3f3e7af16e.jpg)
Денис Фокин
Huawei Technologies
Как мы работаем с программой? Открываем любимый редактор кода, пишем код, исправляем и снова пишем. Когда хочется лучше понять, что происходит во время исполнения программы, мы запускаем отладчик.
А как программу анализирует программа? Речь не только об инспекциях в IDE. Спикеры несколько лет работают над инструментом UnitTestBot, который неоднократно участвовал в международных соревнованиях по генерации тестов. В этом году был признан лучшим с точки зрения читаемости сгенерированных тестов.
В докладе спикеры поделятся опытом написания инструментов анализа кода, более конкретно — инструментами для анализа байт-кода. Также они расскажут про собственное решение, поделятся проблемами, с которыми столкнулись, и результатами.
Производительность
![](https://habrastorage.org/getpro/habr/upload_files/e6c/e25/3bd/e6ce253bd0b0295360f34c105b71e5cd.jpeg)
Алексей Рагозин
Профайлер perf, встроенный в ядро Linux, обладает рядом уникальных возможностей, недоступных заточенным под JVM конкурентам. На мастер-классе вы научитесь запускать perf и собирать данные с JVM-процесса, сравните результаты perf с Java Flight Recorder и сэмплированием дампов потоков, а также познакомитесь со «сверхспособностью» perf — работой с аппаратными счетчиками производительности (hardware performance counter).
Для практической части мастер-класса вам потребуется Linux (желательно физический) и JVM.
Cloud Native JVM. Cloud Runtime
![](https://habrastorage.org/getpro/habr/upload_files/db8/192/399/db8192399510e99e52e5329a0be2cadd.png)
Владимир Воскресенский
Azul Systems
Что делают JVM Runtime? Почему у Java-приложений есть warmup и что делают в Java-мире, чтобы от него избавиться? Почему Java-приложения имеют outliers?
Микросервисы или распределенные приложения выполняются множеством JVM на множестве нод. Могут ли JVM помогать друг другу? Что получится, если Runtime вынести в облако в виде JVM Cloud Runtime Service?
Сиквел блокбастера «Cloud Native JVM. Cloud Compiler» (для получения удовольствия и понимания сюжета знакомство с первой частью не требуется).
YDB Java SDK: борьба за производительность
![](https://habrastorage.org/getpro/habr/upload_files/98f/873/a3e/98f873a3eaf188c4bf24f8ab4586eb37.jpeg)
Александр Горшенин
Яндекс
Доклад посвящен работе над YDB Java SDK, в которой команда спикера пытается достичь максимальной производительности, учитывая распределенный характер этой базы данных.
Александр даст краткий обзор архитектуры YDB, опишет особенности распределенных систем и покажет необходимость сложной балансировки запросов на клиенте. Также сравнит несколько вариантов решения проблем балансировки и пула сессий, представив теоретическое обоснование того, почему те или иные решения должны работать лучше.
Вы увидите различные метрики, собранные с помощью тестового приложения, которые могут подтвердить или опровергнуть сделанные предположения. Дополнительно в рамках этих измерений спикер покажет, насколько разнятся между собой синхронный и асинхронный код работы с YDB и каких максимальных результатов можно добиться в обоих вариантах.
Доклад адресован интересующимся распределенными базами данными и сконцентрирован на вопросе создания высокопроизводительных приложений, использующих такие БД.
Разгоняем Ignite в облачной инфраструктуре
![](https://habrastorage.org/getpro/habr/upload_files/2da/ddd/937/2daddd937d47db7a2743969cb6776d28.jpeg)
Семен Попов
Сбер
![](https://habrastorage.org/getpro/habr/upload_files/8a3/d89/52c/8a3d8952ce4e75aaeeae164c6d5768af.jpeg)
Дмитрий Пшевский
Сбер
В масштабах Сбера, который управляет данными более 100 миллионов клиентов, эволюция систем в облачную инфраструктуру — настоящий челлендж для разработчиков. Их высоконагруженная mission critical-система используется для хранения клиентских данных и участвует в большинстве бизнес-процессов обслуживания клиентов Сбера. В разработке они используют Apache Ignite, Java, Kafka, OpenShift. При миграции их решения в cloud команда столкнулась с проблемами в производительности. Семен и Дмитрий расскажут, какие именно проблемы возникли, как их избежать, а также поделятся советами, как провести миграцию максимально успешно.
Вчера SAP за 10 млн $, сегодня Java-микросервисы за 10 млн ₽
![](https://habrastorage.org/getpro/habr/upload_files/9e8/363/5b2/9e83635b2125696c46769a9b20dd0438.jpg)
Алексей Топчий
X5 Tech
Алексей покажет, как они спроектировали «на лету» и реализовали сложный business critical-сервис с высокими требованиями и огромным объемом данных. Вы узнаете, какие сложности возникают, когда данных очень много, а времени на работу с ними мало. Алексей расскажет, как с помощью профилировщика можно ускорить алгоритм в сотни и тысячи раз, как добиться выигрыша по памяти в разы и как обрабатывать десятки и сотни миллионов записей и экономить RAM.
Не happens-before единым: нестандартные семантики
![](https://habrastorage.org/getpro/habr/upload_files/be3/bc5/daf/be3bc5dafd86dd3f42bc24ee5d086dd9.jpg)
Александр Ланцов
Метод AtomicLong::setOpaque вызывает недоумение, чтение исходников Disruptor пугает, а документация lazySet приводит в отчаяние? Александр поможет разобраться и найти точки опоры в удивительном мире многопоточности за пределами JMM.
Тестирование
Как познавать Spring Boot 3 с помощью TDD
![](https://habrastorage.org/getpro/habr/upload_files/f9a/09e/078/f9a09e078f18ae94f285ecb5fcc0eb63.jpg)
Кирилл Толкачев
JUG Ru Group
Как познавать Spring Boot 3 с помощью TDD? Кирилл расскажет, как использовать TDD, чтобы получать от этого пользу и удовольствие, и попробует найти рациональное зерно в этой практике. Чтобы было интереснее, сделаем это с помощью популярнейшего Spring Boot 3.
Using a Martial Art to Do Tests
![](https://habrastorage.org/getpro/habr/upload_files/96e/ba6/32f/96eba632fced2d76a9d19c5667d3a1d1.jpg)
Andres Sacco
Prisma Medios de Pago
Большинство разработчиков создают модульные тесты, чтобы проверять различные разделы приложения. Но не все проверяют, правильно ли работает весь API, потому что для фреймворков бывает сложно написать тесты.
Андрэс расскажет, как применять платформу Karate, в которой используется подход «черного ящика», чтобы тестировать весь API.
Test-Driven: from Zero to Hero
![](https://habrastorage.org/getpro/habr/upload_files/17d/5a0/014/17d5a001453710124d52cbfd801f599e.jpeg)
Marco Schulz
Marco Schulz Consulting
Принято считать, что кодовая база обладает достаточной автоматизацией тестирования. Однако в реальности это совсем не так: почти в каждом проекте, в котором работал Марко Шульц, не было ни строчки тестового кода.
Спикер расскажет, как можно с легкостью внедрить Test-Driven подход даже в огромных проектах.
Кэширование контекста Spring в тестах: как ускорить процесс тестирования
![](https://habrastorage.org/getpro/habr/upload_files/f3b/a82/eaa/f3ba82eaafb8f197cdb4add6cc630cee.jpg)
Илья Чернов
Wrike
В Wrike в тестах используют несколько больших Spring-контекстов. В CI/CD малое количество таких больших контекстов скорее полезно, так как это позволяет сэкономить время с помощью кэширования. Однако при локальной разработке такие контексты только мешают, потому что время их инициализации велико и необходимо их поднимать каждый раз, когда мы хотим запустить тесты. Можно ли как-то решить эту проблему?
Можно так же переиспользовать Spring-контекст при локальной разработке. Но как обновлять код во время разработки? С помощью hotswap! DCEVM с HotSwap Agent будут использоваться для расширения возможностей hotswap.
Илья расскажет про плагин для IntelliJ IDEA, который позволяет делать все это и экономить время. Он также продемонстрирует, как можно писать плагины для HotSwap Agent самим.
Архитектура
Архитектура и инструменты избранных случаев интеграций по данным
![](https://habrastorage.org/getpro/habr/upload_files/dab/aa9/d50/dabaa9d50f5318da7f3b9e16baba2f6a.jpg)
Владимир Красильщик
JUG Ru Group
В профессиональной жизни разработчика и архитектора задачи интеграции различных систем по данным в том или ином виде встречаются на каждом шагу. В докладе рассмотрим несколько реальных примеров интеграции по данным из опыта спикера и разберем соответствующие им требования и инструменты реализации. Посмотрев доклад, вы узнаете о достоинствах и неудобствах таких протоколов интеграции, как JDBC, HTTP и S3, о вариантах применения готовых продуктов Debezium и StreamSets, а также о возможностях оптимизации затрат на разработку со Spring Rest и PostgREST. Особый акцент будет сделан на задаче версионирования и аудита данных и разобраны рабочие решения, основанные на триггерах и Hibernate Envers.
Единая точка входа или точка отказа: путь к non-blocking API Gateway
![](https://habrastorage.org/getpro/habr/upload_files/553/77d/84f/55377d84ff4cba60f7c14fcb1d351ab0.jpg)
Никита Летов
Росбанк
Поговорим о выборе API Gateway на вашем проекте. О том, когда появляется необходимость использования Gateway вообще и об его основных задачах. Что сейчас представлено на рынке, в open source и что используют большинство компаний.
Разберем на реальном примере кейс с эволюцией Gateway в компании от Nginx + монолит до Spring Boot + Neflix Zuul + Microservices до реактивного Spring Cloud Gateway. В реальном времени напишем проект Gateway на базе Zuul и реализуем бизнес-фичи с использованием стека сервлетов, параллельно разбирая ошибки разработчиков. Оценим производительность и разберем проблемы, связанные с блокирующим API. Перепишем проект на Spring Cloud Gateway без потери функциональности, а также расширим его, используя фишки современного Gateway. Разберемся, как теперь писать фильтры без ServletRequest и ServletResponse. Подключим Resilience4J Сircuit Breaker и оценим результаты.
Кэширование в асинхронном Spring-приложении
![](https://habrastorage.org/getpro/habr/upload_files/214/5a1/36e/2145a136e09a105239f89a4fd59c6f34.png)
Август Вилакия
Альфа-Банк
Что такое кэш, какие у него существуют виды, для чего его используют и какие есть инструменты для построения системы с использованием распределенного кэша? Август расскажет про преимущество асинхронных запросов, инструменты для этого и возможности Spring для их кэширования. Также обсудим проблемы, возникающие при кэшировании Spring WebFlux и Kotlin Coroutines, и покажем, как их можно решить с помощью готовых решений из Project Reactor и GitHub.
![](https://habrastorage.org/getpro/habr/upload_files/303/729/bb0/303729bb0f5cdca777c8392df57525fc.jpg)
Максим Морев
Газпромбанк
Максим поделится руководством с примерами на Kotlin по внедрению предметно-ориентированного проектирования (Domain Driven Design) в команду и обращения ее в безумную машину по доставке чистого кода. Рассмотрим пример приложения с тестами на бизнес-логике и полезные рекомендации, которые работают.
Spring Cloud в микросервисной архитектуре, или История одного внедрения
![](https://habrastorage.org/getpro/habr/upload_files/595/f12/a50/595f12a50da23924d126781043103451.jpg)
Олег Клименко
Домклик
Вы узнаете, как команда Олега внедряла Spring Cloud в микросервисную архитектуру и с чем столкнулась. Это история о внедрении основных компонентов в микросервисной архитектуре и пройденном пути полноценного внедрения. Спикер расскажет о возникших вопросах и опыте их решения. Рассмотрит бенефиты и подведет итог своей работы со Spring Cloud за последние 4 года, расскажет о том важном, в чем он помог.
Spring Data REST. Конструктор быстрой разработки REST API
![](https://habrastorage.org/getpro/habr/upload_files/fc1/49b/e30/fc149be301abd9bfee78edc388c3bf70.jpg)
Рустам Курамшин
ИнфраТех
У вас в проекте много REST-сервисов? Устали писать boilerplate-код и поддерживать зоопарк реализаций CRUD API? Тогда Spring Data REST это то, что вам нужно!
Рустам расскажет, что такое Spring Data REST и как он значительно сокращает время разработки REST API. Возможно, вы никогда не слышали об этом проекте из Spring Data или думаете, что он недостаточно гибкий для вашего проекта.
Спикер детально разберется с возможностями Spring Data REST и посмотрит, как тот может кастомизироваться для решения задач проекта. Дело в том, что официальная документация не раскрывает всех возможностей Spring Data REST, не пишут о нем и на Хабре. Поэтому появляется отличная возможность хорошо покопаться в этом инструменте быстрой разработки.
В команде Рустама крепко подружились со Spring Data REST и раскрыли большую часть его сильных сторон. О них и пойдет речь в докладе.
От REST к GraphQL: приключение на 20 минут
Юрий Самсонов
Яндекс
Каждый день мы сталкиваемся с тонкими или толстыми REST-эндпоинтами, а также необходимостью их дорабатывать под всё новые потребности клиентов. А что, если достаточно иметь модель данных и запросы над ней, причем универсальные для всех клиентов? Такой подход есть – GraphQL. Является он серебряной пулей или нет?
Спикер постарается ответить на этот вопрос. Поговорим о проблемах в API Кинопоиска, посмотрим, как их можно решить при помощи различных технологий, обсудим плюсы и минусы GraphQL. Затем поговорим о том, как организовать процесс перехода большого проекта с одного технологического стека на другой. Естественно, в процессе перехода не обошлось без проблем и технических челленджей, которые приходилось решать, они также будут затронуты в докладе. В конце подведем итоги, обсудим текущее состояние системы и пути ее дальнейшего развития.
Рациональный подход к декомпозиции систем на модули или микросервисы
![](https://habrastorage.org/getpro/habr/upload_files/a01/ed3/f84/a01ed3f8472f20dadab1016d14a24065.jpg)
Алексей Жидков
НГУ
Для многих команд поиск оптимальной декомпозиции представляет собой смесь искусства и ремесла с плохо предсказуемыми трудозатратами и результатами. Чтобы повысить предсказуемость, качество и скорость декомпозиции в своих командах, Алексей разработал специальную методику — декомпозицию на базе эффектов. А потом нашел научное подтверждение тому, что такой подход позволяет в несколько раз быстрее получить результаты, сопоставимые с использованием DDD. В докладе спикер представит методику и продемонстрирует её применение в коммерческом проекте.
Работа с данными
Spring, Hibernate, паттерн Value Object и границы его применения
![](https://habrastorage.org/getpro/habr/upload_files/b1e/56d/1ee/b1e56d1ee77b3be10f1af7601be58e01.jpg)
Семен Киреков
МТС Диджитал
При разработке ПО всегда заходит вопрос о валидации и корректной работе с данными. Если выполнить бизнес-операцию с неверными входными данными, которые передал пользователь, последствия могут быть плачевными. Семен расскажет, что такое паттерн Value Object, как его внедрить в стеке Spring/Hibernate и когда его применение может помешать дальнейшей разработке.
![](https://habrastorage.org/getpro/habr/upload_files/224/8fa/78b/2248fa78b39ce4593cffe45355ba04cb.jpeg)
Андрей Беляев
Haulmont
DTO — один из самых простых паттернов проектирования. Но в реальном мире аббревиатурой DTO называют разные виды объектов. В докладе рассмотрим, зачем нужны DTO, где их можно использовать и какие средства работы с ними бывают. Разберемся, сколько трансформаций могут пройти данные на пути от базы до API и обратно, какие бывают особенности маппинга данных при помощи разных структур и сколько видов проекций есть в ORM.
Apache Spark для распределенной базы данных. Внутреннее устройство коннектора
Алексей занимается разработкой коннектора Apache Spark для Tarantool. В докладе он собирается осветить особенности устройства коннекторов для различных баз данных и порассуждать о том, насколько Spark актуален для распределенных (многоузловых) баз данных, и какие могут быть альтернативы. Он также рассмотрит вопросы согласования настроек кластера Spark и кластера базы данных для достижения оптимальной производительности. Доклад будет интересен разработчикам драйверов и коннекторов к базам данных, а также программистам на Scala.
Когда всё пошло по Кафке 3: где заканчивается Apache Kafka и начинает работу Consumer
![](https://habrastorage.org/getpro/habr/upload_files/5c9/df0/f8c/5c9df0f8c1f28a1a0ac639d0e50252bb.jpg)
Григорий Кошелев
Контур
Третий доклад из серии, в котором поговорим об устройстве и работе Consumer. Подробно разберем KIP, которые в значительной степени повлияли на работу Consumer. Покрутим настройки Kafka и Consumer.
Доклады серии:
2. Когда всё пошло по Кафке 2: Разгоняем продьюсеров
Offset и keyset: почём пагинация для продакшена?
![](https://habrastorage.org/getpro/habr/upload_files/86a/e0c/ee1/86ae0cee1330272ece21201628be734c.jpg)
Илья Сазонов
Всегда.Да
![](https://habrastorage.org/getpro/habr/upload_files/af0/e57/b20/af0e57b206a648fa412a238756ea4365.jpeg)
Федор Сазонов
Сбер
«Пагинация в Spring — полный отстой! Не используйте ее никогда! Она слишком дорого обходится вашей СУБД!» Наверняка вы слышали подобное или даже говорили сами. В чем проблема с пагинацией? Если всё так плохо, то почему в самом крутом фреймворке современности не смогли сделать нормальное разбиение результатов SQL-запросов на страницы?
Спикеры постараются найти ответы на все вопросы. Вы узнаете, в чем сложности с пагинацией, что не так с конструкцией offset, почему от нее так сложно отказаться, при чем тут дизайнеры и как спроектировать API так, чтобы свести ущерб от грядущих правок к минимуму.
B-Tree индексы в базах данных на примере Spring Boot-приложений, PostgreSQL и JPA
![](https://habrastorage.org/getpro/habr/upload_files/5e2/7a6/e7e/5e27a6e7e22b96159e9fdf69359f2cbe.jpg)
Владимир Ситников
Как индекс ускоряет поиск, в каком порядке указывать колонки в индексе и как работать с несколькими критериями поиска? Владимир расскажет, как в PostgreSQL работают обычные™ индексы. Если доклад попадет в золотые подборки «обязательно посмотреть на онбординге разработчика», то цель достигнута. Спикер объяснит, нужно ли индексировать foreign keys, условия where и order by, а также рассмотрит случаи, когда индекс замедляет работу, и как снизить влияние индекса на приложение.
Асинхронная система сбора данных: сделай сам!
![](https://habrastorage.org/getpro/habr/upload_files/32e/1fa/d91/32e1fad91fd1a153e24dfb776ac4d9d0.jpg)
Александр Нозик
МФТИ
Системы сбора данных и управления оборудованием (SCADA) давно уже не являются какой-то экзотикой. Любое крупное производство использует их. Не говоря уже о всяких «умных» домах. Но интересный факт заключается в том, что большинство таких систем (как минимум открытых) разработаны около 20 лет назад и сейчас — «идейно отсталые».
Спикер разберет архитектуру работы систем сбора данных разной степени устарелости, обсудит, как в его команде сделали полностью асинхронную систему сбора данных (Controls-kt) на реактивных потоках (корутинах), а также расскажет, какие в этом есть плюсы и минусы.
Hibernate — проблема декартова произведения при запросах с пагинацией
![](https://habrastorage.org/getpro/habr/upload_files/09b/01f/8cc/09b01f8ccc578fd0617157714c57836d.jpeg)
Артём Гордиенко
Росбанк
Мы можем столкнуться с проблемой декартова произведения при использовании Hibernate, даже не замечая этого. Особенно явно она проявляет себя при запросах с пагинацией. Артём расскажет:
Когда можно столкнуться с этой проблемой.
Как с виду очевидное решение не всегда оказывается самым производительным.
Какой баг он нашел при переходе на Hibernate 6.
Как решить проблему декартова произведения.
Грузим в Kafka из базы: с CDC и без
![](https://habrastorage.org/getpro/habr/upload_files/953/4ff/30d/9534ff30df17505f8d52f4f794d3714d.jpg)
Андрей Серебрянский
Райффайзен Банк
Андрей — Platform Owner платформы потоковой обработки данных в Райффайзен Банке и дата-инженер. Он поделится нюансами построения внутреннего PaaS-решения на больших объемах и расскажет об использовании Kafka Connect для забора данных из БД как с доступным CDC, так и без него. Обсудим, как работать с Kafka Connect на enterprise-уровне: как унифицировать метаданные, как деплоиться и откатываться из CI, как предоставлять такой сервис в виде PaaS, как управлять доступом.
Reactive
Akka Streams в реальных задачах
![](https://habrastorage.org/getpro/habr/upload_files/f32/b62/8b9/f32b628b97f29be1b085fb2965c5b9ac.jpg)
Евгений Ненахов
МТС Digital
Евгений расскажет, как применить реактивную сторону фреймворка Akka из модуля Akka Streams на практике. В частности, он покажет как они решили задачу потоковой обработки данных, используя Java и Akka Streams: с какими проблемами столкнулись и как эти проблемы устраняли.
MDC для реактивного приложения
![](https://habrastorage.org/getpro/habr/upload_files/38e/e79/df4/38ee79df4315b8a4a7b7c55d4e9659f1.jpg)
Лев Безбородов
Газпромбанк
Project Reactor — не просто хайповый тренд, а способ построить масштабируемое и устойчивое к высокой нагрузке приложение. MDC — ключевой инструмент диагностики и мониторинга, позволяющий легко и удобно обогащать блоки кода метаданными, заданными в другом месте. К сожалению, между собой они полноценно «не дружат». Официальное решение, предлагаемое в Readme фреймворка Project Reactor, позволяет использовать MDC для логирования собственных событий между реактивными операторами. Однако это не затрагивает находящиеся внутри реактивных операторов вызовы сторонних библиотек, которые также могут логировать свою работу.
В подразделении спикера была разработана альтернативная реализация MDC, работающая в реактивном приложении полноценно, без указанного ограничения. Также приятным побочным эффектом использования этой реализации стало снятие ограничения на тип значения в MDC: теперь не только строковый. О деталях реализации и кратко о пути к ней спикер расскажет в докладе.
Вызов блокирующего API в Spring WebFlux: почему это плохо и что с этим делать
![](https://habrastorage.org/getpro/habr/upload_files/aa4/ac0/d1e/aa4ac0d1e361dc55326ce99a5a7041fa.jpg)
Сергей Петрелевич
Мир Plat.Form
В реактивных приложениях на Spring WebFlux по разным причинам может использоваться блокирующий API. На примере посмотрим, к чему может привести использование блокирующих вызовов. Разберемся, с помощью каких инструментов проблему можно найти и исправить.
Реактивщина с Apache Thrift + Project Armeria: как WebFlux прикручивали без REST
![](https://habrastorage.org/getpro/habr/upload_files/309/a89/6e1/309a896e1ed6ff804dbd52e7788cd9f6.jpeg)
Виктор Евдокимов
Альфа-Банк
В команде Виктора около 200 микросервисов на Apache Thrift. Изначально они сделаны синхронно. С эволюцией продукта нагрузка росла, и они столкнулись с проблемой: некоторые сервисы с ней не справляются. Виктор расскажет, почему в данной ситуации масштабирование не помогает, чем поможет Project Armeria и когда стоит использовать реактивный подход. Спикер опишет пройденный опыт и результаты команды.
Прочее
![](https://habrastorage.org/getpro/habr/upload_files/b69/59e/d0c/b6959ed0c1d9df7b47dc9cd9b0ae5fea.jpg)
Владимир Кемпик
Syntacore
В OpenJDK 19 появилась поддержка архитектуры RISC-V. Мы познакомимся с RISC-V и посмотрим, в каком объеме OpenJDK его поддерживает. Владимир оценит производительность порта JDK под RISC-V и ответит на вопрос «А с чем его можно сравнить?»
Вы увидите, как ищут проблемы с производительностью JVM под RISC-V, и посмотрите несколько примеров найденных и решенных проблем.
Как нейросети лишат вас работы (или нет)
![](https://habrastorage.org/getpro/habr/upload_files/c10/c83/6cb/c10c836cb4c18e9de56ef812dcbb2434.jpeg)
Ян Чикнизов
Альфа-Банк
Ян рассмотрит, как работать с ChatGPT, Copilot, Dalle-2 в JVM-среде и как их можно использовать в качестве инструмента или фреймворка. На демо разберем интеграции ИИ в Telegram-ботов и создание проектов на базе AI. Рассмотрим возможность выполнения ИИ рутинных задач для разработчиков на примере реальных кейсов.
Матрица компетенций и оценка Java-разработчиков
![](https://habrastorage.org/getpro/habr/upload_files/2ce/f7b/d7f/2cef7bd7fd370640cc06f88e083f4758.jpg)
Александр Логинов
X5 Tech
В X5 Tech активно вкладываются в развитие людей и ставят им цели благодаря матрице компетенций. Цели сотрудников позволяют команде понять, какие компетенции наиболее востребованы, и закрывать их собственными учебными материалами. Александр расскажет, как они составляли матрицу компетенций для Java-разработчиков и как сотрудники с ней взаимодействуют.
Искусство System Design. Как построить распределенную систему и пройти собеседование
![](https://habrastorage.org/getpro/habr/upload_files/53b/0fb/878/53b0fb8786da80257b660d9d7a879061.jpg)
Владимир Маслов
X5 Tech
System Design давно и прочно вошел в практику собеседований в популярные западные компании и стартапы. Сейчас этот вид собеседований начинают активно применять крупные российские компании — здесь его называют архитектурной секцией, или дизайном систем. System Design позволяет оценить навыки кандидатов уровня Senior и выше по части практического опыта, общих знаний и технологического кругозора, а также умения проектировать сервисы и работать с требованиями.
В докладе Владимир раскроет принципы, по которым строятся собеседования по System Design в Big Tech, и даст рекомендации, которые помогут кандидатам успешно пройти этот раунд. Эти знания пригодятся разработчикам и в работе, особенно если они занимаются высоконагруженными проектами.
Заключение
Конференция — это не только доклады. Например, ещё будет серия тематических обсуждений Java Technology Radar: поговорим о текущем положении дел в Spring, JVM, перформанс-инструментах и не только. Будут и активности компаний-партнёров, и многое другое.
Информация об этом ещё будет дополняться, самую полную и актуальную всегда можно найти на сайте JPoint (билеты — там же).
Но во многом конференция — это общение. Те, кто лично соберётся на московской площадке 18–19 апреля, наверняка примутся общаться. А те, кто подключатся удалённо, вряд ли будут столько говорить друг с другом, но тоже смогут как следует расспросить спикеров: или по видеосвязи после доклада, или присылая вопросы в чат (кому как удобнее).
И вот про эту важнейшую часть мы не можем заранее расписать ни в хабрапосте, ни на сайте. Потому что какие именно диалоги завяжутся — зависит не от нас, а от вас. Можем только сказать, что по нашему опыту, двухдневный офлайн — это всегда повод пообщаться как следует. Так что увидимся в апреле и наговоримся!