Compose(컴 포즈)

以 Jetpack Compose 为核心的声明式 UI 框架,以及 Docker Compose 等“Compose”系列技术的整理文档

Compose(컴 포즈)

概述

Compose(컴 포즈)是软件开发中,以声明式方式将多个构成要素组合(compose)为一个成果的技术群的统称。其中应用最广泛的案例是 Android 原生 UI 工具包 Jetpack Compose,而容器编排工具 Docker Compose 也共享同一名称。两者在“不以命令式方式逐一控制,而是声明并组合所期望的最终状态”这一声明式范式上具有共通点,因此在概念上关联紧密。

主要内容

Jetpack Compose

Jetpack Compose 是 Google 于 2019 年 Google I/O 首次公开、并于 2021 年发布正式 1.0 版本的 Android 声明式 UI 框架。与既有的 XML 布局 + findViewById 方式不同,它在 Kotlin(코틀린)函数上添加 @Composable 注解,以代码直接描述 UI。

kotlin

@Composable

fun Greeting(name: String) {

Text(text = "Hello, $name!")

}

其核心特征如下。

  • 声明式 UI:当状态(state)发生变化时,框架会自动重绘画面。开发者只需描述“要显示什么”。
  • 重组(Recomposition):仅选择性地重新执行状态发生变化的可组合函数,从而优化性能。
  • 状态提升(State Hoisting):将状态上提到上层可组合项,以实现单向数据流的推荐模式。
  • 支持 Material Design 3:通过 MaterialTheme 一致地管理颜色、字体排印与形状。
  • 预览与工具链:通过 Android Studio 的 @Preview 注解可进行实时预览。

Docker Compose

Docker Compose 是将多个容器定义于一个 YAML 文件(docker-compose.yml)中并一起运行、管理的工具。它被广泛用于一次性启动 Web 服务器、数据库、缓存等的本地开发环境构建。

yaml

services:

web:

image: nginx:latest

ports:

- "8080:80"

db:

image: postgres:16

environment:

POSTGRES_PASSWORD: example

其他 Compose 系列

  • Compose Multiplatform:由 JetBrains 主导,以同一份 Kotlin UI 代码同时支持 Android、iOS、桌面端与 Web。
  • Docker Compose Specification:自 2021 年起分离为开放标准,被多种运行时采用。

最新动向

以 2024~2025 年为基准,Jetpack Compose 已成为 Android 新项目事实上的标准(de facto standard)。Google 持续基于 Compose 进行 Compose for Wear OSCompose for TVCompose for Auto 等形态因子(form factor)的扩展,并通过 Compose BOM(Bill of Materials)简化了库版本管理。

尤其值得关注的变化是 Compose Multiplatform 的稳定化。随着 2024 年 iOS 支持进入稳定(stable)阶段,尝试仅用 Kotlin 一种语言共享 Android、iOS、桌面端 UI 的案例正在增加。此外,与 Kotlin Multiplatform(KMP)相结合,将业务逻辑也一并共享的架构呈扩散趋势。

另一方面,Docker Compose 自 2023 年以后以 Compose V2(用 Go 语言重写)为默认,并整合为 docker compose(无连字符)命令。2024 年,随着 Docker Desktop 许可政策的变化,使用 Podman Compose、Colima 等替代运行时的情形也有所增加。与生成式 AI 结合,自动生成 UI 代码或自动化容器配置的案例也在增多。

相关主题

  • [[Jetpack Compose]]
  • [[Docker]]
  • [[Kotlin]]
  • [[Compose Multiplatform]]
  • [[声明式 UI]]
  • [[Android]]
  • [[容器]]