Compose Multiplatform 正式版将于年内发布

news/2024/7/3 11:20:51

近日,JetBrains 公司发布了 Compose Multiplatform 的 Beta 版本,这距离此前 Alpha 版本的发布才过去两个多月。

这个版本中包含了许多新的改进,在桌面端与Web端分别增加了新的 API ,并对已有的部分 APIs 进行了稳定。Beta 版的发布意味着距离 1.0 正式版更近了一步,另据官方透漏正式版最早将于年内发布。

Jetpack Compose 是 Android 最新推出的声明式 UI 工具包。JetBrains 受到 Jetpack Compose 的启发,相继发布了 Compose Desktop 以及 Compose Web 项目,试图依托 Kotlin 语言跨平台的特性将声明式开发方式扩展到更多平台。

JetBrains 于今年8月将 Android,Desktop 以及 Web 等多个平台的 Compose 版本整合为 Compose Multiplatform 项目,未来开发者在 Kotlin Multiplatform 项目中可以使用同一套 Artifacts 开发 UI 。

Compose Multiplatform 项目推进速度很快,在 Jetpack Compose 1.0 发布不久就宣布进入 Alpha 阶段,并即将于年内发布正式版。这是因为 Compose Multiplatform 并非从零开始的项目,Android 团队在 Jetpack Compose 的初期就将其作为一个跨平台项目来设计。

翻看 Jetpack Compose 项目源码可以发现项目采用了 Kotlin Multiplatform 的工程结构,代码中充斥了 actual / expect 关键字,这是 Kotlin Multiplatform 的重要关键字,支持项目在多个平台的适配和落地。

Compose 的技术栈分层合理,各层都能够单独复用。处于底层的 compose-runtime 主要负责视图树的管理,这些逻辑与平台无关,任何平台都可以基于 runtime 构建自己的声明式 UI 框架;而 compose-ui-core 中负责的渲染部分基于 JetBrains 的跨平台 Skia 库实现(Skiko),此部分不依赖特定平台,也可以在 Desktop 甚至 iOS 侧使用;compose-ui-fundation 以及 compose-ui-material 中的很多布局或者基础组件在设计上也充分考虑了通用性,可以在 Desktop 等其他平台使用。可见,虽然 Jetpack Compose 作为 Android 的 Native UI 框架诞生,但是其骨子里已经具备了跨平台的潜力,Compose Multiplatform 的出现算得上是水到渠成。

JetBrains 之外的其他一些公司和组织也在进行着 Compose 跨平台方面的探索,前不久 Jack Wharton 就曾在其博客宣称他近期一直致力于将 Compose 运行在包括 iOS 在内的更多平台。

https://jakewharton.com/multiplatform-compose-and-gradle-module-metadata-abuse/

Compose 不追求 API 在各平台的绝对一致,不同平台可以结合自身特性打造独有的 DSL,但是它们在开发范式以及底层原理上保持统一。Compose 凭借先进的开发思想及良好的可移植性,有潜力成为未来包括桌面端在内的 UI 通用解决方案,也许一个 Native 版 React 即将来临。

官网:https://www.jetbrains.com/lp/compose-mpp/


http://www.niftyadmin.cn/n/2071154.html

相关文章

对标 VSCode?JetBrains 下一代编辑器 Fleet

11 月 29 日 JetBrains 官方发布了全新的轻量级编辑器 Fleet,并号称是基于20年IDE开发经验打造的“新一代 IDE”。 Fleet 的定位更加纯粹,聚焦编辑器功能而非替代现有的 IDE 产品。据推测 Fleet 的推出主要是 JetBrains 为了对抗微软的 VSCode &#xff…

10个问题带你看懂 Compose Multiplatform 1.0

近日 JetBrains 正式发布了 Compose Multiplatform 1.0 版,这标志其在生产环境中使用的时机已经成熟。相信有不少人对它还不太熟悉,本文通过下面 10 个热门问题带大家认识这一最新的跨平台技术。 FAQ: 与 Jetpack Compose 的关系? 是否会取代…

Jetpack MVVM 七宗罪之四: 使用 LiveData/StateFlow 发送 Events

久违的 “ Jetpack MVVM 七宗罪 ” 系列,今日再开。本系列主要盘点 MVVM 架构中各种常见错误写法,并针对性的给出最佳实践,帮助大家掌握 Jetpack 组件最正确的使用姿势。 Jetpack MVVM 七宗罪之一: 拿 Fragment 当 LifecycleOwnerJetpack MVV…

Jetpack MVVM 七宗罪之五: 在 Repository 中使用 LiveData

前言 现在的 Android 项目中几乎少不了对 LiveData 的使用。MVP 时代我们需要定义各种 IXXXView 实现与 Presenter 的通信,而现在已经很少见到类似的接口定义了,大家早已习惯了用响应式的思想设计表现层与逻辑层之间的通信,这少不了 LiveData…

使用整洁架构优化你的 Gradle Module

前言 现代的 Android 项目都是 Gradle 工程,所以大家都习惯于用 Gradle Module 来划分和组织代码,Module 的大量使用也带来一个问题,一个大项目往往几十上百的 Module,但是当数量众多的 Module 之间的依赖关系不合理时&#xff0c…

Jetpack Compose 无限加载列表(滚到底部自动加载更多)

Android 中使用 ListView 或者 RecycleView 经常有滚动到底部自动 LoadMore 的需求,那么在 Compose 中该如何实现呢? 两种方法可供选择: 基于 paging-compose自定义实现 方法一: paging-compose Jetpack 的 Paging 组件提供了…

Jetpack Compose 动画 API: AnimatedVisibility AnimatedContent

Jetpack Compose 的动画相关的 API 数量众多,分为低级别 API 和高级别 API,其中高级别 API 便于使用者针对具体场景开箱即用 ,其中最常用的当属 AnimatedVisibility 和 AnimatedContent 这两个了。 1. AnimatedVisibility AnimatedVisibility…

网友提议 Kotlin 增加这些新特性。。

前言 Kotlin 是一门开放的语言,不仅仅是源码的开放,任意使用者都可以直接参与它的建设。大家可以通过 YouTrack 向社区提出自己的 idea 和 issue ,其中一些呼声高的 issue 会进入 KEEP 交由 Kotlin 团队管理维护,并有可能被最终实…