Jetpack Compose

Jetpack Compose — открытый Kotlin-ориентированный декларативный UI-фреймворк для Android, разрабатываемый компанией Google. Первая предварительная версия была анонсирована в мае 2019 года, а использование фреймворка в продуктивной среде стало возможно в июле 2021 года.

В Jetpack Compose пользовательский интерфейс определяется с помощью функций с аннотацией @Composable, которые называются компонуемыми функциями и описывают состояние экрана. Jetpack Compose использует плагин компилятора Kotlin для преобразования компонуемых функций в UI-элементы[1]. Например, функция-компонент Text отображает на экране текстовую метку.

Что важно знать

Термины

  • 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].

undefined

Compose Multiplatform

Compose Multiplatform — кроссплатформенный UI-фреймворк, разрабатываемый компанией JetBrains на основе Jetpack Compose. Это порт Jetpack Compose для Windows, macOS, Linux и веба[21][22][23]. Альфа-версия 1.0 была выпущена в августе 2021 года[7]. Поддержка iOS добавлена в мае 2023 года[24].

Ограничения

  • замедленная сборка при частичной миграции;
  • меньшая зрелость экосистемы по сравнению с XML.

Примечания

Ссылки