写点什么

跨平台开发框架 Compose Multiplatform 1.0 发布

  • 2021-12-03
  • 本文字数:1117 字

    阅读完需:约 4 分钟

跨平台开发框架Compose Multiplatform 1.0发布

JetBrains 工程师 Sebastian Aigner 在官方博客宣布,Compose Multiplatform(Kotlin 的声明式 UI 框架)已经发布了 1.0 版本,现在可以在生产环境中使用了。此版本主要解决质量和稳定性问题,同时修复关键问题和错误。


Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 组成,通过 Kotlin Multiplatform 支持许多不同的平台。现在,用户可以在桌面上创建 Kotlin 应用程序,也可以使用 Compose for Web 的稳定 DOM API 构建生产质量的动态 Web 体验,并与 Web 上的所有浏览器 API 完全互通。


由于 Compose Multiplatform 是声明式的,代码反映了应用程序的 UI 结构,因此用户不必担心诸如从模型复制数据到视图或开发 UI 刷新逻辑之类的事情。在下面这个例子中,一旦 TextField 的内容被编辑,Text label 的内容将被更新,无需任何额外的代码:


var text by remember { mutableStateOf("Hello, World!") }Column {   Text(text) //text label   TextField(text, {text = it}) //text field}
复制代码


“刚开始使用 Compose Multiplatform 很容易,特别是如果您之前使用过像 React 或 Google Jetpack Compose 这样的声明式 UI 框架。 Compose Multiplatform 使用了许多相同的概念,因此您应该有宾至如归的感觉,”JetBrains 在博客文章中如此写道。


Compose Desktop 使用 Skia,这是一个经过良好优化的图形库,目前被许多对性能敏感的应用程序(包括现代浏览器)使用。这意味着 Compose Multiplatform 支持桌面上的所有主要的硬件加速引擎,例如 DirectX、Metal 和 OpenGL。


它还通过预览工具提供较短的迭代周期,允许用户微调其 UI 的组件/部分,并创建它们的多次迭代,而无需重新构建或重新启动应用程序,从而缩短开发周期。


除了桌面,Compose Multiplatform 提供了一个强大的、声明性的 Kotlin/JS API 来处理 DOM——它具备你在现代 Web 框架中想要和需要的所有功能,包括全面的 DOM API、内置 CSS-in-JS 支持、对 SVG 的支持等。


“总的来说,现在在各种平台(包括 Android,以及使用上兼容 Jetpack Compose)之间共享专业知识和代码要比之前容易得多。”Sebastian Aigner 说道。其表示,在 JetBrains 内部早在今年年初就开始在 Jetbrains Toolbox App 中应用 Compose Multiplatform。这个 App 已经有超过 100 万月活用户,并在 4 个月前完全从 C++ 和 Electron 迁移到 Compose Multiplatform。


要尝试 Compose Multiplatform 快速开始构建面向多个平台的应用程序,可以使用 IntelliJ IDEA 2021.1+ 中的 Kotlin 项目向导。附 Compose Multiplatform 官方入门教程地址:https://github.com/JetBrains/compose-jb/tree/master/tutorials


延展阅读《为什么除了 Flutter 之外,我们还需要另一个跨平台开发框架?》

2021-12-03 18:2110348
用户头像
罗燕珊 AI practitioner | Tech media

发布了 507 篇内容, 共 355.6 次阅读, 收获喜欢 819 次。

关注

评论

发布
暂无评论
发现更多内容

NFT数字藏品介绍:NFT数字藏品(交易平台)系统开发

开源直播系统源码

区块链 NFT 数字藏品 数字馆藏

你猜 1 行Python代码能干什么呢?神奇的单行 Python 代码

梦想橡皮擦

Python Python. 9月月更

2022-09-04:以下go语言代码输出什么?A:不能编译;B:45;C:45.2;D:45.0。 package main import ( “fmt“ ) func main() {

福大大架构师每日一题

golang 福大大 选择题

生产环境中使用 Linkerd

CTO技术共享

查看k8s的etcd数据

程序员欣宸

Kubernetes 9月月更

致敬经典!这款华为主题能让你的手机秒变“历代Mate”

最新动态

[教你做小游戏] 滑动选中!PC端+移动端适配!完美用户体验!斗地主手牌交互示范

HullQin

CSS JavaScript html 前端 9月月更

你真的理解C语言中的 “ 数组 ” 吗?(初阶篇)

Albert Edison

数组 C语言 开发语言 二维数组 9月月更

库调多了,都忘了最基础的概念-《方法篇》

知识浅谈

9月月更

1分钟了解什么是数据湖?标准的数据湖什么样?

雨果

数据湖

浅述AIOps与DevOps的区别在哪里

穿过生命散发芬芳

DevOps AIOPS 9月月更

信息安全之我见(45/100)

hackstoic

信息安全

【CSS】 position : static | absolute | relative | fixed | sticky

翼同学

CSS 前端 9月月更

云资源管理概述

阿泽🧸

云资源 9月月更

使用 VUE 和 Go 触摸 WebAssembly

devpoint

Go Vue webassembly 9月月更

云原生的学习心得

Geek_e8bfe4

云原生(三十六) | Kubernetes篇之Harbor入门和安装

Lansonli

云原生 9月月更

真的破防了!在华为主题熄屏显示找到我的第一台Mate

最新动态

《小米创业思考》之一:小米历程

郭明

读书笔记

数字化转型和信息化的区别是什么?

雨果

数字化转型 企业信息化

LeetCode-28. 实现strStr()(java)

bug菌

9月日更 Leet Code 9月月更

【精通内核】Linux内核并发控制原理信号量与P-V原语源码解析

小明Java问道之路

Linux 并发控制 内核 Linux内核 9月月更

LeetCode-27. 移除元素(java)

bug菌

9月日更 Leet Code 9月月更

一款开源的电商框架介绍:Spartacus

汪子熙

typescript angular SAP Spartacus 9月月更

深入学习SAP UI5框架代码系列之二:UI5 Module的懒加载机制

汪子熙

JavaScript 前端框架 SAP ui5 9月月更

Containerd ctr、crictl、nerdctl 实战

CTO技术共享

Java进阶(五)Junit测试

No Silver Bullet

JUnit 测试 单元测试 9月月更

计算机网络的组成

StackOverflow

编程 计算机网络 9月月更

YAML管理Kubernetes应用

CTO技术共享

自动化测试如何管理测试数据

老张

自动化测试

随机生成也是需要有效控制的

zxhtom

9月月更

跨平台开发框架Compose Multiplatform 1.0发布_大前端_罗燕珊_InfoQ精选文章