Новости о продуктах

Празднуем 5 лет Jetpack Compose!

5 минут чтения
3 автора
Rebecca Franks, Nick Butcher, Loryn Hairston

Сегодня мы официально отмечаем пятилетие с момента выхода Jetpack Compose 1.0. Начиная с версии 1.0, анонсированной 28 июля 2021 года , и заканчивая нашей последней версией 1.11 , мы стали свидетелями значительного развития API за эти годы, и мы хотим отметить это событие.

Когда мы официально анонсировали релиз 1.0, мы обещали более простой, быстрый и интуитивно понятный способ создания нативных интерфейсов для Android. Оглядываясь назад, можно с уверенностью сказать, что Compose не только выполнил это обещание, но и полностью изменил экосистему Android: более 68% из 1000 лучших приложений сегодня используют его в продакшене.

История

За последние пять лет Compose неуклонно развивался. На заре своего существования мы демонстрировали, как создавать макеты с помощью базовых элементов Box, Row и Column. Сегодня мы расширили возможности Compose, чтобы он работал не только на мобильных устройствах, но и на других форм-факторах, таких как Compose for TV , WearOS , Glance for Widgets и даже на очках с дисплеем Jetpack Compose Glimmer .

jetpack_compose_everywhere.png

Мы записали эпизод подкаста Android Developers Backstage с Кларой Баярри , руководителем инженерного отдела Jetpack, и двумя бывшими руководителями команды, Роменом Ги и Четом Хаазе , а также Тором Норби , старшим директором по разработке. В этом эпизоде ​​они обсуждают историю Compose и ранние этапы разработки.

timeline.png
Составьте подборку самых ярких моментов за прошедшие годы.

Оглядываясь назад

Начало работы над Compose сильно отличалось от того, что вы знаете сегодня. В команде разработчиков Android параллельно велись два проекта.

В то время команда разработчиков Views Toolkit рассматривала возможность выделения UI Toolkit в отдельную библиотеку, чтобы ускорить разработку и упростить разработчикам внедрение и контроль обновлений. Тем временем другая команда работала над оригинальной идеей создания декларативных макетов путем встраивания XML в Kotlin, что выглядело примерно так:

jetpack_compose_early_code.png

Эти два направления объединились, чтобы создать то, что вы знаете сегодня — полностью декларативный инструментарий для пользовательского интерфейса, использующий возможности плагина компилятора, среды выполнения и Kotlin:

@Composable
fun Newsfeed(stories: List<Story>) {
    LazyColumn {
        items(stories) { story ->
            Card {
                val author = story.author
                Image(painterResource(author.profilePhoto),
                    contentDescription = author.name)
                Text(author.name)
                Text(story.content)
                if (story.hasCommentsEnabled()) {
                    for(comment in story.comments) {
                        Text(comment.mainContent)
                    }
                }
            }
        }
    }
}

И вы, сообщество, очень нам помогли на самом раннем этапе! До 2021 года Compose проходил стадию пре-альфа-версии, которая помогла убедиться в его пригодности для решения задач наших разработчиков.

Одно из наших самых любимых воспоминаний — это Android Dev Challenge. Мы предложили сообществу выполнить четыре разных задания с помощью Compose, заполнив наши ленты приложениями Puppy, часами и погодой, и получили массу прямых отзывов, которые помогли сформировать версию 1.0.

Compose продолжает развиваться: от запуска с набором компонентов Material 2 до поддержки Material 3 Expressive .

material2.png
Материал 2 в композиции

Взгляд в будущее

На сегодняшний день Compose 1.11 — это последняя версия, а версия 1.12 скоро выйдет и предложит гораздо больше возможностей, чем версия 1.0, выпущенная 5 лет назад. В этом году мы представили больше адаптивных API, таких как FlexBox , Grid , MediaQuery и Styles . Эти API позволяют вам перейти на следующий уровень разработки высококачественного адаптивного пользовательского интерфейса с помощью Compose.

На конференции Google I/O 2026 мы объявили, что теперь ориентируемся на Compose , а это значит, что вся будущая разработка пользовательского интерфейса будет осуществляться исключительно с помощью Compose, в то время как инструментарий Views перейдет в режим поддержки. Material Design также полностью переключает фокус на Compose, что сигнализирует о завершении findViewById era .

Сообщество лежит в основе Compose.

За эти годы вы вдохновляли нас креативными примерами использования Compose, и мы хотели бы рассказать еще о нескольких интересных примерах вашей работы. Компания JetBrains стала отличным партнером Google в разработке Compose, расширив возможности Compose для работы на разных платформах с помощью Compose Multiplatform и позволив разработчикам настольных приложений, iOS и веб-приложений также пользоваться преимуществами Compose.

Нам очень понравилось следить за нашими самыми популярными новостными рассылками, от Dispatch от JetpackCompose.app и AndroidWeekly до jetc , которые помогают разработчикам Android оставаться в курсе последних новостей в мире Compose и Android.

Ещё одним выдающимся участником является sinasamaki . Он создал множество замечательных вещей с помощью Compose, например, этот забавный модификатор ленты и эффект глитча:

Ribbon_modifier_sinasamaki.gif

Сакет Нараян всегда был источником вдохновения при создании полезных инструментов для Compose, таких как telephoto — библиотека с поддержкой жестов панорамирования и масштабирования, а также автоматической субдискретизацией больших изображений, или новейшая библиотека Touch Robot , которая позволяет легко тестировать анимацию взаимодействия:

paparazzi.gif(end = 3_000) {
  DebitCard(
    Modifier.testTag("card")
  )

  val touchRobot = rememberTouchRobot()
  LaunchedEffect(Unit) {
    touchRobot.onNode(hasTestTag("card")).performGesture {
      draw(
        path = createAndroidHeadPath(),
        duration = 3.seconds,
      )
    }
  }
}

/** A path drawing the Android head. */
fun createAndroidHeadPath(bounds: Rect): Path = TODO()
saket_touch_robot.gif

Джейк Уортон , который использовал Compose новаторскими способами (например, с помощью Molecule и даже для создания пользовательского интерфейса в терминале с помощью Mosaic ). Крис Бейнс, который за эти годы разработал множество библиотек Compose, включая нашу последнюю любимую — Haze для размытия фона, и многие эксперты Google по разработке Android, такие как Акшай Чордия , Хуен Ту Дао и Кэти Барнетт , которые внесли свой вклад в успех Compose. Но речь здесь не идет о выборе отдельных лиц — в кодовую базу Compose внесли огромный вклад многие замечательные люди, и многие из вас продолжают вдохновлять нас своими интересными примерами, библиотеками и подробными докладами. Без сообщества Jetpack Compose не был бы таким успешным, каким он является сегодня.

За следующие 5 лет и за многое другое!

Jetpack Compose превратился из экспериментальной идеи в стандарт для разработки пользовательского интерфейса Android. Спасибо всей команде разработчиков инструментария в Google и невероятному глобальному сообществу разработчиков, которые создавали библиотеки, сообщали об ошибках и расширяли границы возможностей декларативного пользовательского интерфейса.

На этой неделе мы будем отмечать день рождения в очном формате по всему миру, а также проведём прямую трансляцию «День рождения» на YouTube-канале разработчиков Android 30 июля в 13:00 UTC. В это время мы пообщаемся, обсудим Compose и ответим на ваши вопросы!

За следующие 5 лет и удачного сочинения музыки!

    Автор:
    Продолжить чтение