Jetpack Compose
Jetpack Compose — открытый Kotlin-ориентированный декларативный UI-фреймворк для Android, разрабатываемый компанией Google. Первая предварительная версия была анонсирована в мае 2019 года, а использование фреймворка в продуктивной среде стало возможно в июле 2021 года.
В Jetpack Compose пользовательский интерфейс определяется с помощью функций с аннотацией @Composable, которые называются компонуемыми функциями и описывают состояние экрана. Jetpack Compose использует плагин компилятора Kotlin для преобразования компонуемых функций в UI-элементы[1]. Например, функция-компонент Text отображает на экране текстовую метку.
Что важно знать
| Jetpack Compose | |
|---|---|
| Тип | библиотека |
| Разработчик | |
| Написана на | Kotlin |
| Операционная система | Android |
| Репозиторий | github.com/androidx/andr… |
| Лицензия | Apache License 2.0 |
| Сайт | developer.android.com/de… |
Термины
- UI (User Interface, «пользовательский интерфейс») — визуальная часть приложения, сайта или программы, с которой взаимодействует пользователь.
- @Composable — это аннотация в Kotlin, которая помечает функцию как компонент пользовательского интерфейса.
- State hoisting (поднятие состояния) — паттерн проектирования, при котором управление состоянием компонента переносится из дочернего элемента в родительский.
- Live Preview (живой предпросмотр) — функция, позволяющая видеть изменения в создаваемом контенте (код, дизайн, текст, настройки фото) в режиме реального времени, без необходимости вручную обновлять страницу или сохранять файл.
- Foldables (складные устройства) — смартфоны, планшеты или ноутбуки с гибкими дисплеями, способные сгибаться или складываться пополам, не повреждая экран.
- Jetpack Glance — библиотека из состава Android Jetpack, позволяющая создавать виджеты для рабочего стола Android, используя декларативный подход и синтаксис Kotlin, аналогичный Jetpack Compose.
История
Первая предварительная версия Jetpack Compose была представлена на конференции Google I/O в мае 2019 года[2]. Превью для разработчиков было выпущено в октябре 2019 года[3], а альфа-версия появилась в августе 2020 года[4].
В феврале 2021 года Compose перешёл в бета-стадию, а первый стабильный релиз состоялся в июле того же года[5].
Возможности
Jetpack Compose поддерживает Android 5.0 и выше[6]. Для программирования используется язык Kotlin, а модель реактивна и схожа с другими UI-фреймворками, такими как Flutter, Vue.js и React Native[2]. Compose изначально спроектирован для интеграции с существующими Android-приложениями и библиотеками, что позволяет постепенно переводить приложения на Compose[5].
В Jetpack Compose интерфейс описывается функциями с аннотацией @Composable, которые задают состояние экрана[7]. Эта аннотация используется компилятором Compose для генерации шаблонного кода интерфейса. При изменении состояния компонуемые функции пересчитываются с новыми данными, что приводит к перерисовке только изменившихся виджетов (рекомпозиция), тем самым повышая эффективность интерфейса[8].
Версия 1.0 принесла поддержку функций Compose Preview, встроенной в Android Studio начиная с релиза Arctic Fox; она позволяет предварительно просматривать компоненты в разных конфигурациях без запуска приложения на устройстве[9].
Jetpack Glance — это фреймворк на базе Jetpack Compose для создания виджетов для Android[10]. Первый стабильный релиз Glance состоялся в сентябре 2023 года[11].
В сентябре 2024 года была выпущена стабильная версия 1.0 Jetpack Compose с наборами API для создания адаптивных интерфейсов с использованием Material 3[12].
Использование
К моменту релиза Jetpack Compose 1.0 Google сообщала: «Уже более 2 000 приложений в Play Store используют Compose — фактически, само приложение Play Store также использует Compose»[7]. На октябрь 2022 года 16 % из тысячи самых популярных приложений Google Play Store уже включали Compose. Среди них — приложения компаний Airbnb, Lyft и Square[13]. В мае 2024 года этот показатель достиг 40 %[14].
В 2022 году Google подробно описала, как использовала Jetpack Compose при переработке приложения Play Store, отметив, что «написание UI требует гораздо меньше кода — иногда сокращение достигает 50 %», а также удалось повысить производительность приложения[15][16]. Google также переписала часть приложения «Настройки» для Android с использованием Jetpack Compose в Android 14[17]. Meta Platforms разработала своё социальное приложение Threads за 5 месяцев с помощью Jetpack Compose[18][19]. Android-версия Instagram также написана с использованием Jetpack Compose[20].
Compose Multiplatform
Ограничения
- замедленная сборка при частичной миграции;
- меньшая зрелость экосистемы по сравнению с XML.


