В чем разница между XML версткой и Jetpack Compose

«В чем разница между XML версткой и Jetpack Compose» — вопрос из категории Jetpack Compose, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

XML-верстка — декларативный подход, где UI описывается в XML-файлах, а логика управления в коде (Activity/Fragment). Compose — декларативный фреймворк на Kotlin, где UI строится функциями, а состояние управляется реактивно.

Основные отличия:

  1. Подход:
    XML — разделение UI и логики.
    Compose — единый код UI и логики (композиция функций).

  2. Динамика:
    XML требует findViewById или ViewBinding.
    Compose автоматически перерисовывает UI при изменении состояния.

  3. Производительность:
    Compose избегает тяжелых иерархий View, оптимизируя перерисовку.

Пример Compose:

@Composable
fun Greeting(name: String) {
    Text(text = "Hello, $name!")
}

Плюсы Compose:

  • Лучшая читаемость, меньше шаблонного кода.
  • Гибкость и быстрая разработка.

Минусы:

  • Требует изучения новых концепций (реактивность, композиция).
  • Не все библиотеки/легаси-проекты поддерживают Compose.