鸿蒙跨端实践-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”的经验,提升了性能和用户体验。
➡️

继续阅读