12 月 20 日音讯,据 JetBrains 发布,JetBrains 的 Kotlin 声明式 UI 结构 Compose Multiplatform 已更新至 1.0 版,可供出产运用!
JetBrains 将介绍一些亮点,期望你能和 JetBrains 一样等待结构的发布:
在桌面上,你可以快速高效地创立具有精巧用户界面的 Kotlin 运用。
在 Web 上,你可以运用 Compose for Web 的稳定 DOM API 构建出产级动态 Web 体会,并完成与一切浏览器 API 的彻底互操作。 未来版别将供给对 Material UI 微件的支撑。
总体而言,现在各渠道间(包含 Android,运用与 Google 的 Jetpack Compose 的兼容)的专业常识和代码同享都得到了大幅简化。
接下来 JetBrains 将逐个介绍这些亮点。
扫码访问 Compose Multiplatform 网站
桌面版 Kotlin UI在很长一段时间内,假如你想为 Kotlin 桌面运用程序构建用户界面,你都必须运用传统的 Java UI 结构,由于没有任何 Kotlin 库支撑桌面的现代化 UI 开发风格。 这一情况将被 Compose Multiplatform 改动。 JetBrains 这就来探索新的结构会怎么改善为 Kotlin 运用编写 UI 的体会。
构建用户界面的声明式办法
Compose Multiplatform 为声明式,代码反映了运用的 UI 结构,让你无需忧虑将数据从模型复制到视图或开发 UI 改写逻辑之类的工作。 全能高效的结构将让 UI 开发成为一种享受。 在这个示例中,当 TextField 的内容被编辑后,Text 标签的内容将被更新,无需任何额定代码:
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 运用了许多相同的概念,应该会让你倍感亲切。
React
https://zh-hans.reactjs.org/
Jetpack Compose
https://developer.android.com/jetpack/compose
经过硬件加速完成超卓的运行时功能
现代化用户界面临功能相当灵敏,因而 JetBrains 花了很多精力来进步 Compose Multiplatform 的速度。 它运用的图形库 Skia 经过了良好优化,已被功能灵敏的运用程序广泛采用,包含新型浏览器。 这意味着 Compose Multiplatform 支撑桌面上的一切主流硬件加速引擎,例如 DirectX、Metal 和 OpenGL。 关于硬件加速不可用的环境,Compose 也供给了优化的软件烘托程序。
Skia
https://skia.org/
经过预览东西缩短迭代周期
在 UI 开发中,最耗时的任务之一是为了获得完美显现作用而重建运用程序。Compose Multiplatform IDEA 插件将简化这一进程。 它的内置实时预览功能可供微调 UI 的组件 / 部件和创立多个迭代,而无需重建或从头启动运用程序。 这将大幅缩短开发周期。
插件
https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support
经过主动运用程序打包信心满满地交付桌面运用
将运用程序带给用户,不仅需求妥善的开发,也需求适宜的打包。 在这一领域,Compose Multiplatform 也可以发挥作用。Gradle 插件支撑将运用程序打包为 msi、dmg 和 deb 格式,包含 MacOS 的签名和公证。
将运用程序打包
https://github.com/JetBrains/compose-jb/tree/master/tutorials/Native_distributions_and_local_execution
MacOS 的签名和公证
https://github.com/JetBrains/compose-jb/blob/master/tutorials/Signing_and_notarization_on_macOS/README.md
Android 上 Jetpack Compose 与 Java UI 结构的互操作性
Jetpack Compose 是 Google 为构建原生 UI 打造的 Android 现代化东西包,在移动开发者中越来越受欢迎。 假如你曾经运用过它,那么 Compose Multiplatform 对你来说会十分容易上手,由于这两个结构同享了大部分 API。假如桌面运用程序已经具有运用典型 Java UI 结构构建的用户界面,则无需从头从头编写代码即可与 Compose Multiplatform 一同运用。 经过超卓的互操作性,你可以将运用 Compose 编写的 UI 组件添加到现有 Java UI 中。 你还可以将现有 Java 控件添加到运用 Compose Multiplatform 构建的任何新运用。
运用 Compose Multiplatform 导游快速上手
Compose Multiplatform 上手进程从未如此简略。 在 IntelliJ IDEA 2021.1 以上版别中,只需几下点击即可创立一个简略的 Compose Multiplatform 项目。
IntelliJ IDEA
https://www.jetbrains.com/zh-cn/idea/
JetBrains 还准备了很多教程来协助你熟悉 Compose Multiplatform 的桌面方针。
很多教程
https://github.com/JetBrains/compose-jb/tree/master/tutorials
Compose for Web除了桌面之外,Compose Multiplatform 还为处理 DOM 供给了强壮的声明式 Kotlin / JS API。
DOM
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
它具有现代化 Web 结构中你想要和需求的一切功能,包含全面的 DOM API、内置 CSS-in-JS 支撑、对 SVG 的支撑、类型化输入等。Compose Multiplatform 的 Web 方针以纯 Kotlin 编写,并充分利用了语言的类型系统和习语。 这让你可以运用你在其他 Kotlin 方针中或许已经熟悉的开发工作流。
多渠道支撑运用 Compose Multiplatform,你并不会受限于以桌面和 Web 渠道(均已直接支撑)为方针。 你还可以运用 Google 开发的著名 UI 结构 Jetpack Compose 以 Android 为方针。 这两个结构同享公共 API 与核心,因而具有完美的互操作性。 这意味着你不必从头编写常见 UI 和状态办理代码。 只需编写一次,然后根据需求在各个渠道上重用即可。
假如你要将现有 Android 运用程序带到桌面或 Web,Compose Multiplatform 可以协助你轻松完成。 它允许你从单个 Kotlin 项目办理运用程序的一切方针。
要运用 Compose 快速开始构建面向多个渠道的运用,你可以运用 IntelliJ IDEA 2021.1 以上版别中的 Kotlin 项目导游。
即使当前不需求开发多渠道运用程序,你在一个渠道上的常识和专长在另一个渠道上也会发挥作用。
自测试版以来发生了什么改变?在 Compose Multiplatform 1.0 中,JetBrains 最重视的是保证结构可实践用于出产运用程序。 因而,此版别主要处理质量和稳定性问题,同时批改关键问题和过错。
真实出产经验虽然 Compose Multiplatform 本月才正式上线,但它先前已用于部分出产运用程序。 例如,在 JetBrains,JetBrains 早在 2021 年初就开始在 Jetbrains Toolbox App (https://www.jetbrains.com/zh-cn/toolbox-app/) 中采用 Compose Multiplatform。 这个用于 JetBrains IDE 的办理运用程序每月有超越 1,000,000 名活泼用户,在 4 个月前彻底从 C++ 和 Electron 迁移到了 Compose Multiplatform。
总结经过 Compose Multiplatform,Kotlin 开发者可以以强壮的结构为桌面和 Web 运用程序创立精巧的 UI。
现在是测验 Compose Multiplatform 的最佳时机! 最简略的入门办法是检查官方教程。 运用 IntelliJ IDEA 2021.1 以上版别的内置 Kotlin 项目导游,你可以轻松开始创立第一个 Compose Multiplatform 项目并以 Kotlin 构建声明式用户界面。
官方教程
https://github.com/JetBrains/compose-jb/tree/master/tutorials
JetBrains 期望你喜欢它!