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.
Примечания
- ↑ 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.
- ↑ 1 2 Lardinois, Frederic Google launches Jetpack Compose, an open-source, Kotlin-based UI development toolkit (англ.). TechCrunch (7 мая 2019). Дата обращения: 14 апреля 2024. Архивировано 27 февраля 2024 года.
- ↑ Protalinski, Emil Google launches Jetpack Compose developer preview and Android Studio 4.0 Canary. VentureBeat (23 октября 2019). Дата обращения: 14 апреля 2024. Архивировано 3 декабря 2022 года.
- ↑ Bradshaw, Kyle Jetpack Compose reaches Alpha ahead of full release next year. 9to5Google (26 августа 2020). Дата обращения: 14 апреля 2024. Архивировано 30 марта 2023 года.
- ↑ 1 2 Bradshaw, Kyle Google launches Jetpack Compose 1.0, making Android UI design easier w/ Kotlin. 9to5Google (28 июля 2021). Дата обращения: 14 апреля 2024. Архивировано 6 апреля 2023 года.
- ↑ Set up your Android project. Android Developers. Дата обращения: 14 апреля 2024. Архивировано 28 апреля 2024 года.
- ↑ 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 года.
- ↑ Thinking in Compose (англ.). Android Developers. Дата обращения: 12 апреля 2025. Архивировано 25 сентября 2025 года.
- ↑ Krill, Paul Jetpack Compose for Android turns GA. InfoWorld (30 июля 2021). Дата обращения: 14 апреля 2024. Архивировано 4 декабря 2023 года.
- ↑ Jetpack Glance (англ.). Android Developers. Дата обращения: 31 августа 2025. Архивировано 24 сентября 2025 года.
- ↑ Glance (англ.). Android Developers. Дата обращения: 31 августа 2025. Архивировано 6 октября 2025 года.
- ↑ Vanyo, Alex Jetpack Compose APIs for building adaptive layouts using Material guidance now stable (англ.). Android Developers Blog (9 сентября 2024). Дата обращения: 12 апреля 2025. Архивировано 7 октября 2025 года.
- ↑ Nikolov, Lazar Build better Jetpack Compose apps with Sentry. InfoWorld (19 апреля 2023). Дата обращения: 14 апреля 2024. Архивировано 7 декабря 2023 года.
- ↑ Developer Keynote (Google I/O '24).
- ↑ Flynn, Andrew; Boekenoogen, Jon Play Time with Jetpack Compose (англ.). Android Developers Blog (10 марта 2022). Дата обращения: 31 августа 2025. Архивировано 3 октября 2025 года.
- ↑ 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 года.
- ↑ Bradshaw, Kyle Google is gradually rewriting Android’s Settings app with Jetpack Compose. 9to5Google (14 февраля 2023). Дата обращения: 14 апреля 2024. Архивировано 20 апреля 2023 года.
- ↑ Evjen, Yasmine; Muntenescu, Florina Meta built threads in only 5 months using Jetpack Compose. Android Developers Blog (27 октября 2023). Дата обращения: 15 мая 2024. Архивировано 26 февраля 2024 года.
- ↑ Li, Abner Google on how Meta sped up its Android 14 app updates. 9to5Google (4 марта 2024). Дата обращения: 15 мая 2024. Архивировано 5 марта 2024 года.
- ↑ Hartig, Pascal Bringing Jetpack Compose to Instagram for Android (англ.). Engineering at Meta (24 января 2025). Дата обращения: 13 апреля 2025. Архивировано 17 июля 2025 года.
- ↑ Compose Multiplatform – Beautiful UIs Everywhere (англ.). JetBrains. Дата обращения: 14 июня 2025. Архивировано 5 октября 2025 года.
- ↑ What's new in Compose Multiplatform 1.8.1 (англ.). Kotlin Multiplatform Help. Дата обращения: 14 июня 2025. Архивировано 1 октября 2025 года.
- ↑ Compatibility and versions (англ.). Kotlin Multiplatform Help. Дата обращения: 14 июня 2025. Архивировано 1 октября 2025 года.
- ↑ Krill, Paul JetBrains adds iOS support to cross-platform UI framework (англ.). InfoWorld (19 мая 2023). Дата обращения: 14 апреля 2024. Архивировано 13 февраля 2024 года.