鸿蒙ArkTS语言与AssemblyScript语言的对比?

1个回答

写回答

licunli

2026-01-15 22:41

+ 关注

鸿蒙系统
鸿蒙系统

别的先不提,我就讲讲代码,确切地说是鸿蒙系统应用开发所用的ArkTS语言。由于是门外汉,先来看官网介绍:初识ArkTS语言 | 华为开发者联盟 (huawei.com)。

然后,作个对比,我们可以看一下和ArkTS同源的另一门语言AssemblyScript:介绍 | AssemblyScript 中文网 (nodeJS.cn)这两种语言的语法都属于C系,非常相似。它们之间的关系如下:JavaScript(JS)是弱类型语言,typescript(TS)是其静态类型的超集。ArkTS是对TS的改进与优化,而AssemblyScript(AS)是TS的子集。AS的演进侧重于彻底提升性能,这使其与JS的绝大多数库不兼容;而ArkTS的演进方向是在确保兼容JS生态的同时尽量提升性能,不过出于性能考量,ArkTS对JS库的兼容有所限制。从代码介绍来推测,我觉得ArkTS与安卓的路子颇为相近(其实这和AS也就是WASM技术路线也类似)。只是安卓依靠Java虚拟机,而鸿蒙采用的是JavaScript生态下的JIT(甚至AOT)解释器、虚拟机或者编译器。这么说来就合理了,技术上确实能够实现(可参考AS语言范式,还有JS语系的V8解释器引擎),不过从实际落地的角度而言,对技术实力的考验依旧很大。一上来就提AS语言,是因为我觉得它的模式和ArkTS很相似。AS会被编译成.wasm文件,这是字节码文件而非机器码文件,之后V8引擎会把.wasm字节码在用户本地端编译成机器码,这样就能实现接近原生的性能。当然,V8对.wasm的处理采用的是JIT解释而非AOT编译,这很大程度上是出于V8对代码优化/去优化的考虑。鸿蒙这边,ArkTS是在TS强类型与静态类型的基础上改进而来,因此它有可能具备和AS相似的实现方式。不过由于ArkTS要兼容JS生态,我推测ArkTS可能存在3种实现方式:就我看B站分析视频的情况而言,最初是第1种实现方式。现在从官方手册判断,可能是第2种实现,其性能也还不错。当然,我们期望能尽快达成第3种实现。我为何会如此推测?主要可查看这一页面:ArkTS高性能编程实践-学习ArkTS语言-基础入门 - 华为HarmonyOS开发者 (huawei.com)。这个页面中的性能优化建议和V8引擎的优化建议思路极为相似!从将Array建议改为Int8Array等表述来看,实际上就是在朝着AS的方向靠拢。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号