День 5. Jetpack Compose
Изначально Compose разрабатывался только как Android фреймворк, но благодаря силе Kotlin Multiplatform, работе Jetbrains и @shikasd_ композ пришел и на другие платформы. Сейчас уже работает на desktop(mac, win, linux), web и есть ранние прототипы на native
Десктопная версия рендерится с помощью движка Skia, почти также как на android где skia встроена в систему. Но на desktop она поставляется вместе с приложением. Jetbrains написали к ней обертку на KMP - Skiko github.com/JetBrains/skiko
Сейчас Jetbrains и Google публикуют отдельные артефакты для Compose и они не совместимы. Первый для KMM, второй только для Android. По факту оба артефакта собираются из одних исходников, и обе команды в курсе проблемы. Так что скоро у нас будет один compose на все платформы.
В репозитории Jetbrains много отличных примеров проектов для desktop. Игры, просмотр кода, todo лист, плагин для idea и другие.
github.com/JetBrains/comp…

Compose на самом деле это не только UI фреймворк, но и библиотека для декларативной работы с любыми видами деревьев. По сути это два фреймворка под одним названием, что вносит некоторую путаницу в обсуждения. @JakeWharton написал отличную статью об этом jakewharton.com/a-jetpack-comp…
Можно создавать приложения на базе Compose runtime без привязки к Compose UI. У Джейка есть проект mosaic, для создания консольных приложений на Compose. github.com/JakeWharton/mo…
По тому же принципу работает Compose for Web. Только там Compose манипулирует деревом DOM.
compose-web.ui.pages.jetbrains.team
У Андрея Шикова есть классный доклад про то как работает Compose runtime внутри.
youtu.be/QNKfhVjPHB0
Ещё одна ключевая часть Compose это работа с состоянием и система снэпшотов. Compose автоматически обновляет экран как только изменяется стейт. При этом обновляются только части которые используют этот стейт.
У @zachklipp есть отличная серия статей об этом
dev.to/zachklipp/scop…
Также советую послушать последние выпуски ADB Podcast - там гуглеры обсуждают компилятор и систему layout в Comose.
adbackstage.libsyn.com
Рекомендую всем присоединиться в telegram чаты
Android Declarative t.me/android_declar…
Compose MPP t.me/compose_mpp
И канал #compose в котлин слаке surveys.jetbrains.com/s3/kotlin-slac…
Там можно пообщаться с авторами фреймворка и сообществом 😎