Доклад

Kotlin Flow под капотом

Kotlin Flow кажется простым инструментом: мы создаем Flow, собираем значения и используем готовые операторы. Но что на самом деле происходит под капотом?

В этом докладе разберем устройство Kotlin Flow на уровне реализации и пройдем путь от самых простых конструкций к самым сложным. Начнем с обычных Flow и разберем нюансы их внутреннего устройства, которые легко не заметить при повседневном использовании. Затем перейдем к ChannelFlow — механизму, который редко используют напрямую, но с которым фактически постоянно сталкиваются внутри Flow.

После этого разберем самый сложный случай — SharedFlow. Посмотрим, как устроена его внутренняя структура, почему реализация получилась настолько нетривиальной и какие алгоритмические решения позволяют ей работать очень быстро. Отдельно поговорим о backpressure и о том, как Kotlin Flow решает связанные с ним проблемы.

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

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

Спикеры

Доклады