鸿蒙跨端实践-JS虚拟机架构实现
💡
原文中文,约5800字,阅读约需14分钟。
📝
内容提要
在Roma跨端方案中,JS虚拟机是核心,负责执行JS代码。Android使用J2V8,iOS用JSCore,HarmonyOS需自行实现。开发经历了从ArkTs2V8到JSVM的新架构,解决了多语言通信和数据转换的挑战。引入JSI增强代码共享,采用C++设计提升性能。新架构使用系统内置虚拟机,减少跨语言性能损耗,通过HostObject实现JS与原生的直接通信,优化流程,总结了从0到1的实现经验。
🎯
关键要点
- Roma跨端方案中,JS虚拟机是核心,负责执行JS代码。
- Android使用J2V8,iOS用JSCore,HarmonyOS需自行实现虚拟机。
- 开发经历了从ArkTs2V8到JSVM的新架构,解决了多语言通信和数据转换的挑战。
- 引入JSI增强代码共享,采用C++设计提升性能。
- 新架构使用系统内置虚拟机,减少跨语言性能损耗。
- 通过HostObject实现JS与原生的直接通信,优化流程。
- ArkTs2V8框架依赖V8引擎,初期使用QuickJS引擎,后期自编译V8。
- JSI作为通信层,增强代码的可扩展性,促进更有效的代码共享。
- 内存管理由ArkTs2V8负责,需避免内存泄露。
- 跨语言性能问题需通过压缩通信次数或JSON序列化来解决。
- 新架构C++化,提升框架性能,解决线程管理问题。
- JSVMRuntime实现了HarmonyOS的内置虚拟机,稳定性和维护成本更优。
- HostObject实现了原生与JS的双向映射,简化了交互流程。
- 总结了从0到1实现鸿蒙版“j2v8”、“JSRuntime”的经验,提升了性能和用户体验。
➡️