🔥

Тред #5


День 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…
notion image

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… Там можно пообщаться с авторами фреймворка и сообществом 😎