《2.轻量开发、原生性能:RTS 一码多端新范式-郝有峰.pdf》由会员分享,可在线阅读,更多相关《2.轻量开发、原生性能:RTS 一码多端新范式-郝有峰.pdf(38页珍藏版)》请在三个皮匠报告上搜索。
1、轻量开发、原生性能:RTS 一码多端新范式主讲人:郝有峰蚂蚁终端体验科技大会关于我郝有峰 ajihyf字节跳动-Cross Platform2019:设计小程序前端框架、Bridge2022:基于 WASM 的区块链合约引擎2023:自渲染引擎,自渲染端渲染混合排版2024:RTS 一码多端,Relax UI 框架LanguagUIGraphics/01/02/03Why RTS 一码多端如何 RTS 一码多端 性能与落地收益/01Why RTS 一码多端我们还需要跨端框架吗?需要什么样的跨端框架?降本增效Vibe Coding进一步提升多端对齐复杂度业务对客户端人效比有更高诉求bolt.ne
2、w、Replit 均选用跨端框架生成客户端应用鸿蒙适配跨端是减少复杂度、提高人效的有效手段React Native基于 JavaScript 运行时采用端渲染基于 JavaScript Interface Bridge 与端通讯Flutter基于 Dart AOT采用自渲染使用 DartFFI/MessageChannel 与端通讯Compose MultiplatformAndroid 基于 JVM,采用端渲染,可与端无缝通讯iOS/鸿蒙基于 Kotlin Native AOT,采用自渲染,通过 OC/NAPI 桥接与端通讯需跨语言调用:FFI 与 GC跨端语言与宿主语言难以传递复杂容器数据
3、结构数据传输存在序列化、反序列化或拷贝不同堆对象之间互相持有,内存结构复杂跨端语运时宿主语运时数据结构垃圾回收数据结构垃圾回收操作类型Kotlin-OCSwift-OC空函数调用8862 ns/100op380 ns/100op简单计算操作6859 ns/100op378 ns/100op返回值处理4914 ns/100op378 ns/100op渲染体系跨端语言+端渲染:大量 FFI跨端语言+自渲染每个Surface W*H*4(*缓冲数)内存占用无法与系统共享字体、Shader 缓存,影响冷启速度独立合成,动画受UI线程制约,无法利用iOS、鸿蒙的合成器动画应用进程LayerTreeGPU
4、 进程DrawCompositiDrawCompositi自渲染/安卓端渲染iOS、鸿蒙端渲染基于转译的新思路围绕语言、UI 框架、工程化体系,我们打造了 RTS 一码多端方案。RTS 语言支持转译为为 Kotlin、Swift、ArkTS、JavaScript,无 FFI 高性能调用。同时支持编译为字节码动态下发。Relax UI 框架Signal 响应式+JSX 语法,无 Diff 点对点更新。基于 Lynx 提供多平台一致的端渲染能力。Salamander 工程化脚手架、开发、Typing、IDE工具链。/02如何 RTS 一码多端 如何同时拥有极致性能与开发体验RTS:无缝转译RTS
5、转译示例kotlinSwiftRTS 核心语法能力客户端能力RTS 能力函数class/协程多线程类型转换数据类型序列化重载,泛型,闭包重载,覆盖,泛型,抽象类Promise,async/awaitSLThreadJson,元组Serializableas,as?,as!Array,Map,Set容器类型基础类型映射RTS 类型Kotlin 类型Swift 类型ArkTS 类型TypeScript 类型int32IntInt32numbernumberint64LongInt64bigintbigintfloat32FloatFloatnumbernumberfloat64DoubleFloa
6、t64numbernumberArrayKotlin.ArrayListNSMutableArrayArrayArrayMapKotlin.MutableMapNSMutableDictionaryMapMapSetMutableSetNSMutableSetSetSetRTS 内存管理Kotlin/ArkTS/JavaScript基于 GC,内存管理模型一致。Swift基于 ARC 引用计数。提供 weak 关键字,由开发者解除循环引用。RTSSwiftSalamander:一站式工具链宿主接口调用RTS 可消费的 d.tsSwifttypingsRT