Я.Субботник

по JVM-языкам

28 марта, 12:00
Москва и трансляция

Я.Субботник по JVM-языкам — митап для разработчиков и инженеров, работающих с языками Java Virtual Machine. Встречаемся в офисе Яндекса в Москве и онлайн, чтобы вместе с JVM-сообществом обсудить практический опыт, новые подходы и реальные задачи индустрии в неформальной атмосфере.

В программе — ускорение Java-фреймворков на примере Quarkus, устройство трассирующего профайлера (Qubership Profiler), реальные подводные камни java.time и оптимизация GraphQL API на базе GraphQL Java и Spring Framework.

Трансляция

Спикеры

Андрей Кулешов

Руководитель отдела разработки

Yandex Infrastructure

Дмитрий Некрылов

Старший разработчик бэкенда

Yandex Robotics

Николай Леонтьев

Разработчик бэкенда

Яндекс Директ

Всеволод Жолобов

Разработчик

Финансовый департамент Яндекса

Программа
12:00–13:00

Регистрация, «Своя игра»  и приветственный кофе

13:00–13:05

Открытие

13:05–14:00

Ускорение Java-фреймворков через build-time: пример Quarkus

Доклад — это верхнеуровневый обзор подходов к оптимизациям, которые современные Java-фреймворки используют для ускорения работы на JVM: анализ классов на этапе сборки, генерация байткода, подготовка DI-контейнера до запуска приложения и превращение сложной CDI-логики в прямолинейный, статически оптимизируемый код. На примере Quarkus разберём, что именно он делает на build-time и почему это даёт реальный прирост по времени старта и потреблению памяти.

Почему Quarkus быстро стартует даже без GraalVM? Как ему удаётся обходиться без рефлексии и тяжёлого сканирования классов? Что именно делает ArC (реализация CDI) и при чём здесь Gizmo/ASM и индексирование классов через Jandex? Расширяя кругозор, попробуем ответить на все эти вопросы.

Также затронем последние новинки: JEP’ы, связанные с AOT Cache, Spring AOT и поддержку Project Leyden в Quarkus — то, что действительно меняет правила игры в мире Java.

Андрей Кулешов

Руководитель отдела разработки

Yandex Infrastructure

14:00–14:45

Трассирующие профайлеры в Java: как это работает на примере Qubership Profiler

В этом докладе разберём, как устроен трассирующий профайлер на примере Qubership Profiler — инструмента для детального анализа производительности отдельных вызовов — и чем такой подход принципиально отличается от sampling-профилирования.

Доклад построен в формате HOWTO. Разберём кейсы и воспользуемся профайлером для их анализа. Посмотрим внутреннюю кухню:

  • Модификацию байт-кода классов при загрузке (через Java Agent и Instrumentation API)
  • Как строится дерево вызовов
  • Какую минимально достаточную информацию нужно собирать, чтобы сохранить точность и не убить производительность
  • Как агрегируются события и куда они отправляются для последующего анализа

Отдельно обсудим различия между трассирующими, семплирующими профайлерами и другими инструментами анализа производительности: точность, overhead, влияние на latency и сценарии применения каждого подхода.

Доклад будет полезен тем, кто занимается производительностью JVM-приложений и хочет понимать не только как пользоваться профайлером, но и что именно происходит внутри, когда он «включён».

Дмитрий Некрылов

Старший разработчик бэкенда

Yandex Robotics

14:45–15:30

Обед, «Своя игра» и нетворкинг

15:30–16:15

Java Time Puzzlers

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

В докладе будут конкретные примеры кода: каждый с демонстрацией проблемы, объяснением причины на уровне API и модели времени и корректным вариантом решения. Это практический разбор для тех, кто работает с логами, биллингом, расписаниями, распределёнными системами и любыми задачами, где «просто дата» внезапно становится источником серьёзных инцидентов.

Всеволод Жолобов

Разработчик

Финансовый департамент Яндекса

16:15–17:00

Параллельность на корутинах в бэкенде Spring и GraphQL-Java

В докладе разберём, как построить параллельность в Spring, какие проблемы возникают с контекстами и ThreadLocal, как Kotlin и корутины помогают их решать и почему неблокирующий подход не всегда работает в реальном мире больших проектов. Вторая часть посвящена GraphQL Java и GraphQL SPQR с примером из продакшена, где мы заставляли их работать параллельно.

Доклад будет полезен тем, кто строит или поддерживает параллельные Spring-приложения на JVM, мигрирует Java-код на Kotlin с использованием корутин и просто тем, кто хочет параллельно и безопасно выполнить два запроса в базу.

Николай Леонтьев

Разработчик бэкенда

Яндекс Директ

17:00–17:15

Кофе-брейк и нетворкинг

17:15–19:30

Круглые столы и «Своя игра» от Яндекс Вертикалей

19:30–22:00

Афтерпати

Показать всю программу

Правила поведения

Мы хотим, чтобы все участники конференции чувствовали себя комфортно и безопасно, получили приятный опыт и хорошие впечатления. Поэтому во время всех активностей просим придерживаться простых правил: дискриминация — плохо, оскорбления — плохо, комфорт и взаимоуважение — хорошо.

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

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

Если вы столкнулись с дискриминацией или заметили, что другие участники нарушают правила, пожалуйста, свяжитесь с нами по почте events@support.yandex.ru

Q&A

Я.Субботник

по JVM-языкам

28 марта, 12:00
Москва и трансляция