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.

Примечания

  1. Panjuta, Denis. Basic Jetpack Compose Elements / Denis Panjuta, Loveth Nwokike. — Chapman and Hall/CRC, 2023-12-12. — P. 233–257. — ISBN 978-1-032-62253-8.
  2. 1 2 Lardinois, Frederic Google launches Jetpack Compose, an open-source, Kotlin-based UI development toolkit (англ.). TechCrunch (7 мая 2019). Дата обращения: 14 апреля 2024. Архивировано 27 февраля 2024 года.
  3. Protalinski, Emil Google launches Jetpack Compose developer preview and Android Studio 4.0 Canary. VentureBeat (23 октября 2019). Дата обращения: 14 апреля 2024. Архивировано 3 декабря 2022 года.
  4. Bradshaw, Kyle Jetpack Compose reaches Alpha ahead of full release next year. 9to5Google (26 августа 2020). Дата обращения: 14 апреля 2024. Архивировано 30 марта 2023 года.
  5. 1 2 Bradshaw, Kyle Google launches Jetpack Compose 1.0, making Android UI design easier w/ Kotlin. 9to5Google (28 июля 2021). Дата обращения: 14 апреля 2024. Архивировано 6 апреля 2023 года.
  6. Set up your Android project. Android Developers. Дата обращения: 14 апреля 2024. Архивировано 28 апреля 2024 года.
  7. 1 2 3 Anderson, Tim Does the world need another cross-platform framework? Tough, here's JetBrains with Compose Multiplatform (англ.). The Register (6 августа 2021). Дата обращения: 14 апреля 2024. Архивировано 7 марта 2024 года.
  8. Thinking in Compose (англ.). Android Developers. Дата обращения: 12 апреля 2025. Архивировано 25 сентября 2025 года.
  9. Krill, Paul Jetpack Compose for Android turns GA. InfoWorld (30 июля 2021). Дата обращения: 14 апреля 2024. Архивировано 4 декабря 2023 года.
  10. Jetpack Glance (англ.). Android Developers. Дата обращения: 31 августа 2025. Архивировано 24 сентября 2025 года.
  11. Glance (англ.). Android Developers. Дата обращения: 31 августа 2025. Архивировано 6 октября 2025 года.
  12. Vanyo, Alex Jetpack Compose APIs for building adaptive layouts using Material guidance now stable (англ.). Android Developers Blog (9 сентября 2024). Дата обращения: 12 апреля 2025. Архивировано 7 октября 2025 года.
  13. Nikolov, Lazar Build better Jetpack Compose apps with Sentry. InfoWorld (19 апреля 2023). Дата обращения: 14 апреля 2024. Архивировано 7 декабря 2023 года.
  14. Developer Keynote (Google I/O '24).
  15. Flynn, Andrew; Boekenoogen, Jon Play Time with Jetpack Compose (англ.). Android Developers Blog (10 марта 2022). Дата обращения: 31 августа 2025. Архивировано 3 октября 2025 года.
  16. Li, Abner Google rewrote the Play Store’s UI with Jetpack Compose for up to 50% less code, faster rendering. 9to5Google (10 марта 2022). Архивировано 10 сентября 2025 года.
  17. Bradshaw, Kyle Google is gradually rewriting Android’s Settings app with Jetpack Compose. 9to5Google (14 февраля 2023). Дата обращения: 14 апреля 2024. Архивировано 20 апреля 2023 года.
  18. Evjen, Yasmine; Muntenescu, Florina Meta built threads in only 5 months using Jetpack Compose. Android Developers Blog (27 октября 2023). Дата обращения: 15 мая 2024. Архивировано 26 февраля 2024 года.
  19. Li, Abner Google on how Meta sped up its Android 14 app updates. 9to5Google (4 марта 2024). Дата обращения: 15 мая 2024. Архивировано 5 марта 2024 года.
  20. Hartig, Pascal Bringing Jetpack Compose to Instagram for Android (англ.). Engineering at Meta (24 января 2025). Дата обращения: 13 апреля 2025. Архивировано 17 июля 2025 года.
  21. Compose Multiplatform – Beautiful UIs Everywhere (англ.). JetBrains. Дата обращения: 14 июня 2025. Архивировано 5 октября 2025 года.
  22. What's new in Compose Multiplatform 1.8.1 (англ.). Kotlin Multiplatform Help. Дата обращения: 14 июня 2025. Архивировано 1 октября 2025 года.
  23. Compatibility and versions (англ.). Kotlin Multiplatform Help. Дата обращения: 14 июня 2025. Архивировано 1 октября 2025 года.
  24. Krill, Paul JetBrains adds iOS support to cross-platform UI framework (англ.). InfoWorld (19 мая 2023). Дата обращения: 14 апреля 2024. Архивировано 13 февраля 2024 года.

Ссылки