首页 > 其他分享 >Compose Multiplatform 发布 Beta 版本

Compose Multiplatform 发布 Beta 版本

时间:2023-07-29 20:04:07浏览次数:33  
标签:compose 平台 Beta Compose UI Multiplatform JetBrains

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

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

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

Compose Multiplatform 发布 Beta 版本_跨平台

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

Compose Multiplatform 项目推进速度很快,其正式版本最快可于今年内与大家见面。项目之所以快速推进是因为 Jetpack Compose 在设计之初就考虑了未来在更多平台中应用的场景。

Compose Multiplatform 发布 Beta 版本_UI_02

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

Compose Multiplatform 发布 Beta 版本_Kotlin_03

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 在内的更多平台。

Compose Multiplatform 发布 Beta 版本_资讯_04

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

官网:www.jetbrains.com/lp/compose-…

标签:compose,平台,Beta,Compose,UI,Multiplatform,JetBrains
From: https://blog.51cto.com/u_15200109/6895040

相关文章

  • Twitter 宣布将全面拥抱 Jetpack Compose
    近期的一次Android开发者访谈中,Twitter的工程师介绍了他们如何使用JetpackCompose提升他们的开发效率,而且他们透露目前Twitter的AndroidApp已经全面拥抱JetpackCompose。新功能默认都将会采用Compose进行开发。JetpackCompose是Android发布的全新一代UI框架,它......
  • alpha测试和beta测试的区别是什么?
    alpha测试简称“α测试”,可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。【测试时间不同】α测试的目的是评价软件产品的FLURPS(即功能、局域化、可用性、可靠性、性能和支持)。尤其注重产品的界......
  • macOS Sonoma 14 beta 4 (23A5301g) ISO、IPSW、PKG 下载
    macOSSonoma14beta4(23A5301g)ISO、IPSW、PKG下载本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。请访问原文链接:https://sysin.org/blog/macOS-......
  • Xcode 15 beta 5 (15A5209g) 发布下载 - Apple 平台 IDE
    Xcode15beta5(15A5209g)发布下载-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgXcode15使您能够为所有Apple平台开发、测试和分发......
  • PowerPoint 2019 for Mac(PPT2019) v16.76 beta中文版
    PowerPoint2019mac是一款幻灯片制作软件,是 office 2019套件中的一部分。它可以帮助用户创建各种类型的演示文稿,包括商务演讲、学术报告、培训材料等等。与之前版本相比,提供了更多的功能和改进,例如更强大的演示文稿制作工具、更好的视觉效果和更加智能的助手。PowerPoint2019......
  • docker compose 更新报错 permission denied while trying to connect to the docker
    今天更新签到docker的时候输入了#先cd到docker-compose.yml所在目录,执行命令后重启容器dockercomposepull&&dockercomposeup-d结果发现permissiondeniedwhiletryingtoconnecttothedockerdaemonsocket后来上网搜了一下应该是权限不够的原因,所以先执......
  • composer:升级自身版本 self-update(2.5.x)
    一,查看升级前的版本:liuhongdi@lhdpc:/data/php/tpapibase$composer--versionComposerversion2.5.12022-12-2215:33:54二,升级,注意先sudo到rootliuhongdi@lhdpc:/data/php/tpapibase$sudo-i[sudo]liuhongdi的密码:root@lhdpc:~#composerself-updateUpgrading......
  • Docker部署之使用docker-compose部署(全新的干净的服务器,从0开始搭建)
    部署环境准备安装yum#安装yum工具yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2--skip-broken安装dcoker#设置docker镜像源yum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed-i's/download.d......
  • dockercompose 容器服务之间通信
    DockerCompose容器服务之间通信DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。通过DockerCompose,我们可以使用YAML文件来定义多个容器的配置和连接方式。在DockerCompose中,容器之间的通信非常重要,因为它们可能需要相互协作来完成复杂的任务。在本......
  • dockercompose yaml命令行参数
    如何使用docker-compose的命令行参数1.确定所需的命令行参数在使用docker-compose命令行工具时,可以通过添加一些参数来自定义和控制容器的行为。以下是一些常见的命令行参数:参数描述-f,--file指定docker-compose文件的路径-p,--project-name指定项目的名称-......