Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系

今天刚好看到官方发布了一篇文章,用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别,突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”,刚好可以放一起聊一聊

image-20250123135625517

最近写的几篇内容写的太干,刚好要过年,大家也放假了,今天写篇水的。

实际上很多时候大家在讨论 Compose 的时候,会下意识把 Jetpack Compose 和 Compose Multiplatform 当成一个东西 ,但是实际上其实并合适,同样的情况也经常发生在 Kotlin Multiplatform (KMP) 和 Compose Multiplatform 之间。

这里其实需要搞清楚一个项目“归属”问题,就像是 JetBrains 自己发的这个 :

  • Jetpack Compose 是 Google 的项目,由 Google 支持的 Android UI 框架,属于 Google
  • Compose Multiplatform 是由 JetBrains 开发的 Jetpack Compose 「扩展」,用于跨平台支持,属于 JetBrains

所以,你如果从实际项目归属看,其实严格意义上说 Compose Multiplatform 是属于 JetBrains 开发的「拓展」支持,本质上并不是直接归属 Google 项目,属于合作性质,所以从内部项目来说,它和 Flutter 并不直接重叠

只是,由于 Compose Multiplatform 是基于 Jetpack Compose 开发,因此使用这些框架的体验非常相似,同时两者都由 Compose 内部的 compiler 和 runtime 进行支持,所以有相同的核心概念,可以用类似的 API 来构建 UI,包括 @Composable 函数、状态处理 API(如 remember)、UI 组件(如 RowColumn)、修饰符、动画 API 等。

比如 JetBrains 提到,Jetpack 包含的 first-party libraries,例如 Foundation 和 Material 等,这些都是 Google 为 Android 发布的,而为了使这些库提供的 API 可从通用代码中使用,JetBrains 维护了这些库的多平台版本,这些库是为 Android 以外的目标发布的。

所以其实整个社区生态也是 JetBrains 在维护

类似的还有 2024 Google I/O 上正式官宣的 Kotlin Multiplatform,它也是 Google Workspace 团队的一项长期「投资」项目,由 JetBrains 开发维护和开源的项目,简单来说,JetBrains 主导投入,Google Workspace 投资并提供技术支持。

所以本质上你看 Compose Multiplatform 和 Kotlin Multiplatform 的资料,它都是在 JetBrains 相关的网站发布,属于 JetBrains 的项目,甚至托管 Package 的 klibs.io 平台,也是属于 JetBrains 管理和发布。

当然,你要说和 Google 完全没关系肯定是不可能的,毕竟 Kotlin 、KMP、CMP 都属于 Google 和 JetBrains 深度合作项目,但是你要说是完全「亲生儿子」,又不是十分恰当,就像 JetBrains 提到的:

Compose Multiplatform 是基于 Google 发布的代码和版本构建,虽然 Google 的重点是适用于 Android 的 Jetpack Compose,但 Google 和 JetBrains 之间也密切合作以实现 Compose Multiplatform。

从这里理解,就可以大概理清楚:

  • Jetpack Compose 是 Google 的亲儿子
  • Compose Multiplatform 是通过「捐精」形式和 JetBrains “生出”的「私生子」,归母亲所有
  • Kotlin Multiplatform 是 JetBrains 为「私生子」 提供的「童养媳」

是的,事实上 Kotlin Multiplatform 和 Compose Multiplatform 还需要分开看待,Kotlin Multiplatform 属于是 Kotlin 的「拓展」功能,它和 Compose Multiplatform 其实并没有“必然” 的关系:

你不用 Compose Multiplatform ,也可以使用 Kotlin Multiplatform ,它是支持独立运行的存在

如果硬是要举例,那就是 Kotlin Multiplatform 是可以直接用于编写跨平台共享业务逻辑的,甚至曾经就有些项目是 Flutter 写 UI ,然后 Kotlin Multiplatform 写业务的情况

只是现在有了 Compose Multiplatform , 所以 Kotlin Multiplatform 可以作为 Compose Multiplatform 的插件和底层跨平台支撑。

反过来看,也可以认为 Compose Multiplatform 作为 Kotlin Multiplatform 项目中的 UI 支持,它不是 Kotlin Multiplatform 本身的一部分,只是一个通过启用共享 UI 来补充 KMP 的 SDK

就像是,你想在鸿蒙上兼容 KMP 和 Compose Multiplatform ,那其实是两个工作量。

所以,很多时候我们在提 Compose 的时候,会直接潜意识的把 Jetpack Compose、Compose Multiplatform 和 Kotlin Multiplatform 都当成一个整体和归属讨论,当时实际上,它们之间还是需要区分,也有必要做一些区分。

参考链接:

https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-and-jetpack-compose.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第38周:猫狗识别 (Tensorflow实战第八周)

目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 六、模型评估 七、预测 总结 前言…

python生成图片和pdf,快速

1、下载安装 pip install imgkit pip install pdfkit2、wkhtmltopdf工具包,下载安装 下载地址:https://wkhtmltopdf.org/downloads.html 3、生成图片 import imgkit path_wkimg rD:\app\wkhtmltopdf\bin\wkhtmltoimage.exe # 工具路径,安…

详解:TCP/IP五层(四层)协议模型

一.五层(四层)模型 1.概念 TCP/IP协议模型分为五层:物理层、数据链路层、网络层、传输层和应用层。这五层每一层都依赖于其下一层给它提供的网络去实现需求。 1)物理层:这是最基本的一层,也是最接近硬件…

DeepSeek-R1:将强化学习用于激励大型语言模型的推理能力

目录 引言 一、DeepSeek-R1的贡献 二、DeepSeek-R1的方法 2.1、DeepSeek-R1-Zero:基础模型上的强化学习 2.2、DeepSeek-R1:冷启动强化学习 2.3、蒸馏:赋予小模型推理能力 三、DeepSeek-R1实验结果 3.1、模型优点 3.2、模型缺点 四、…

分布式微服务系统简述

distributed microservice 分布式与微服务的定义及关系;分布式微服务架构里的各组件,如:配置中心、服务注册/发现、服务网关、负载均衡器、限流降级、断路器、服务调用、分布式事务等;spring cloud 介绍及实现案例,如…

从Spring请求处理到分层架构与IOC:注解详解与演进实战

引言 在Spring开发中,请求参数处理、统一响应格式、分层架构设计以及依赖管理是构建可维护应用的核心要素。然而,许多开发者在实践中常面临以下问题: 如何规范接收不同格式的请求参数? 为何要引入分层架构? 什么是控…

神经网络|(三)线性回归基础知识

【1】引言 前序学习进程中,已经对简单神经元的工作模式有所了解,这种二元分类的工作机制,进一步使用sigmoid()函数进行了平滑表达。相关学习链接为: 神经网络|(一)加权平均法,感知机和神经元-CSDN博客 神经网络|(二…

2024年博客之星主题创作|猫头虎分享AI技术洞察:2025年AI发展趋势前瞻与展望

2025年AI发展趋势前瞻:猫头虎深度解析未来科技与商业机遇 摘要 2024年,AI技术迎来爆发式增长,AIGC、智能体、AIRPA、AI搜索、推理模型等技术不断突破,AI应用场景持续扩展。2025年,AI将进入全新发展阶段,W…

Android多语言开发自动化生成工具

在做 Android 开发的过程中,经常会遇到多语言开发的场景,尤其在车载项目中,多语言开发更为常见。对应多语言开发,通常都是在中文版本的基础上开发其他国家语言,这里我们会拿到中-外语言对照表,这里的工作难…

【Maui】提示消息的扩展

文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 消息扩展库3.2 消息提示框使用3.3 错误消息提示使用3.4 问题选择框使用 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移…

AI导航工具我开源了利用node爬取了几百条数据

序言 别因今天的懒惰,让明天的您后悔。输出文章的本意并不是为了得到赞美,而是为了让自己能够学会总结思考;当然,如果有幸能够给到你一点点灵感或者思考,那么我这篇文章的意义将无限放大。 背景 随着AI的发展市面上…

pycharm 运行远程环境问题 Error:Failed to prepare environment.

问题排查 拿到更详细的报错信息: Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错,我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…

C语言自定义数据类型详解(一)——结构体类型(上)

什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…

Windows上通过Git Bash激活Anaconda

在Windows上配置完Anaconda后,普遍通过Anaconda Prompt激活虚拟环境并执行Python,如下图所示: 有时需要连续执行多个python脚本时,直接在Anaconda Prompt下可以通过在以下方式,即命令间通过&&连接,…

MinIO的安装与使用

目录 1、安装MinIO 1.1 下载 MinIO 可执行文件 1.2 检查 MinIO 是否安装成功 1.3 设置数据存储目录 1.4 配置环境变量(可选) 1.5 编写启动的脚本 1.6 开放端口 1.7 访问 2、项目实战 2.1 引入依赖 2.2 配置yml文件 2.3 编写Minio配置类 2.4…

零基础Vue学习1——Vue学习前环境准备

目录 环境准备 创建Vue项目 项目目录说明 后续开发过程中常用命令 环境准备 安装开发工具:vscode、webstorm、idea都可以安装node:V22以上版本即可安装pnpm 不知道怎么安装的可以私信我教你方法 创建Vue项目 本地新建一个文件夹,之后在文件夹下打开…

Linux查看服务器的内外网地址

目录: 1、内网地址2、外网地址3、ping时显示地址与真实不一致 1、内网地址 ifconfig2、外网地址 curl ifconfig.me3、ping时显示地址与真实不一致 原因是dns缓存导致的,ping这种方法也是不准确的,有弊端不建议使用,只适用于测试…

二叉树的最大深度(C语言详解版)

一、摘要 嗨喽呀大家,leetcode每日一题又和大家见面啦,今天要讲的是104.二叉树的最大深度,思路互相学习,有什么不足的地方欢迎指正!好啦让我们开始吧!!! 二、题目简介 给定一个二…

OpenCV imread函数读取图像__实例详解

OpenCV imread函数读取图像__实例详解 本文目录: 零、时光宝盒 一、imread函数定义 二、imread函数支持的文件格式 三、imread函数flags参数详解 (3.1)、Flags-1时,样返回加载的图像(使用alpha通道,否…

VMware虚拟机安装macOS11

1.安装虚拟机 如果尚未安装虚拟机,请先进行安装。地址:VMware17下载地址​​​​​​ 2、下载苹果镜像文件 macOS Big Sur 11.0.1 (20B29) 3、下载unlock文件(目的是开启VMware的macOS选项功能) https://download.csdn.net/d…