KMP, KMM и Compose Multiplatform
Эти термины описывают разные области: Kotlin Multiplatform позволяет переиспользовать Kotlin-код, а Compose Multiplatform — необязательный способ переиспользовать UI.
| Термин | Значение | Типичное применение |
|---|---|---|
| KMP | Kotlin Multiplatform | Общий код для выбранных целевых платформ |
| KMM | Устаревшее название Kotlin Multiplatform Mobile | Старые статьи и проекты для Android и iOS |
| Jetpack Compose | Android UI toolkit от Google | UI для Android |
| Compose Multiplatform | Мультиплатформенный UI framework от JetBrains | Общий Compose UI для поддерживаемых платформ |
Kotlin Multiplatform и KMM
KMP — актуальное название технологии, которая компилирует общий Kotlin-код для нескольких целевых платформ. KMM было названием мобильного направления для Android и iOS; JetBrains отказалась от него в 2023 году. Это не отдельная технология, которую нужно выбирать вместо KMP.
Общими могут быть модели, сетевой слой, бизнес-правила и логика представления. Платформенные API по-прежнему требуют платформенного кода или абстракции. Модель компиляции описана в обзоре Kotlin Multiplatform.
Jetpack Compose и Compose Multiplatform
Jetpack Compose — декларативный UI toolkit для Android. Compose Multiplatform переносит его модель программирования и API на другие поддерживаемые платформы. Он построен на KMP, но для KMP не обязателен. На Android зависимости Compose Multiplatform используют артефакты Jetpack Compose от Google; Android-специфичные API не становятся автоматически доступными в общем коде.
Проверяйте стабильность платформ отдельно для KMP и Compose Multiplatform. Поддержка платформы в Kotlin не означает такой же поддержки и стабильности Compose UI. При выборе зависимостей проверяйте также совместимость версий Compose.
Допустимые комбинации
- Общие data- и domain-слои с Jetpack Compose на Android и SwiftUI на iOS.
- Общее состояние представления с нативным UI на каждой платформе.
- Общий Compose UI для поддерживаемых платформ.
- Общие только отдельные экраны; остальные остаются нативными.
Выбор зависит от требований продукта, платформенного UX, навыков команды и стоимости интеграции. Подробнее — в статье «Архитектура и стратегии UI».