ArkUI开发框架的创新和生态探索
ArkUI - 总览
- UI开发框架概述:涵盖开发者、用户和系统三个视角,目标是通过开发模型、UI/API、编程语言、运行框架、布局引擎、控件机制、动效引擎、事件机制、渲染管线、图形引擎、语言虚拟机、平台适配等要素,实现更高的开发效率、更好的性能和跨设备/平台适应性。
- UI开发框架的演进:从2014年Swift 1.0到2022年SwiftUI 4.0,Jetpack Compose 1.3等框架的发展趋势包括从命令式UI到声明式UI、跨平台能力提升、个性化多设备能力、UI框架和语言融合增强、数据绑定与数据变更感知、编译加速、开发工具向多设备演进等。
- 编程语言热度排行榜:JS/TS持续领先,综合考虑了Github & StackOverflow数据(数据来源:RedMonk官网)。
- 对标原生:JS/TS运行时现状&不足:未有效利用类型信息,缺失精细化类型,AOT缺失,细粒度并行化缺失。
- 对标原生:JS/TS相关UI框架现状&不足:典型代表包括Web引擎、ReactNative、Flutter,主要不足在于性能体验、资源占用、平台一致性、独立语言生态等问题。
ArkUI - 设计
- ArkUI框架设计:基于极简开发、高性能、跨设备跨平台理念,采用新一代声明式开发范式、一体化渲染管线、组件化、跨平台化设计。
- ArkUI开发语言&运行时:基于JS/TS进一步演进,自研编译器/运行时,扩展声明式UI语法,后续将扩展更多语言/标准库能力。
- ArkUI开发框架概览:极简声明式范式+类Web范式+高性能后端引擎+一致性渲染,包括声明式UI范式、声明式UI后端引擎、渲染引擎、方舟编译器和运行时、平台适配层、平台桥接层、OpenHarmony/HarmonyOS、Android、iOS、IDE/工具链等。
- ArkUI声明式范式关键特征:极简自然声明式语法,统一UI表达;多态组件/动态布局,简化多设备UI适配;多维度状态管理,简化数据传递&UI变更。
- ArkUI - 多维状态管理:支持多层组件、全局、跨设备状态管理,包括@State、@Prop、@Link、@StorageLink、@StorageProp、@PropEnvironment、业务逻辑Link、PersistentStorageAbilityComponent、ApplicationDistributedStorageLink等。
- ArkUI运行机制概览:扁平化管线/按需组合/数据绑定/AOT,对标原生体验的高效渲染。
- 对比项:Java、JS、TS代码行数、文件数、实现难度,ArkUI应用代码量比Java降低~65%,比JS降低~35%,性能对标安卓原生性能。
- 单设备 跨设备:组件状态迁移和路由栈迁移,实现跨设备数据同步和UI一致性。
- ArkUI - 生态扩展概览:包括开发者标准框架工具、关键应用使能、社区、三方开源库、跨OS平台扩展Taro、W3C MiniApp原子化服务标准等。
ArkUI生态扩展
- ArkUI生态扩展 – XComponent:支持三方插件(js/so)接入,低成本、独立管理、egl/gles标准、共享纹理。
- ArkUI生态扩展 – 跨OS平台:与华为、阿里巴巴、美的、深开鸿共建,已有Android/iOS初步支持,包括OS适配层、工具链、API、图形引擎、方舟虚拟机、跨平台抽象层、平台桥接层、声明式UI后端扩展机制、Web引擎等。
- 跨平台开发框架SDK和Sample工程构建演示:提供下载代码、构建SDK、创建工程、编译目标平台可执行文件的流程,同一Sample工程在iOS和Android上运行。
小结
- ArkUI设计:在TS基础上演进出可对标原生体验的极简声明式开发框架,语言运行时支持声明式语法、类型加速、AOT,极简声明式范式、多维状态管理、高效跨设备渲染体验。
- ArkUI生态:支持高级自绘制组件接入,具备跨OS平台能力。
- 范式升级:从2D到3D,实现统一的2D和3D声明式范式,2D/3D渲染无缝融合,目前处于原型阶段。
One more thing ...
- 3D范式原型实现:进一步提升开发效率并实现酷炫体验,目前处于原型阶段,更多能力构建进行中。