Facebook JavaScript 引擎 (Hermes) 提升 Android 上的 React Native

已发表: 2019-11-18
Facebook 创建了一个名为 Hermes 的惊人 JavaScript 引擎,以增强 Android 设备上的 React Native 应用程序运行。 适用于 Android 设备的 Facebook 引擎非常适合快速启动、利用紧密打包的字节码和提前优化。

引入适用于 Android 设备的新 JavaScript Facebook 工具可以缩短启动时间、降低 RAM 使用率并缩小应用程序大小。 目前,该工具是 React Native 中的一个可选功能。 大多数 Facebook React Native Android 最新版本产品已经开始使用这个 JavaScript 工具。

目录显示
  • 有关适用于 Android 设备的 Facebook JavaScript 引擎的更多信息
  • 新的 Android JavaScript 引擎的特性
  • 如何获得爱马仕
    • 反应
  • Android 设备的 Facebook JavaScript 引擎的主要架构决策
    • 1.字节码预编译
    • 2.没有JIT
    • 3、垃圾收集技术
  • 结论

有关适用于 Android 设备的 Facebook JavaScript 引擎的更多信息

AI-人工智能-代码-脚本-设计-开发

JavaScript Facebook for Android 设备工具的创建是为了增强大型 Android 应用程序的功能。 手机应用程序的大小不断增加,这很可能会带来问题,例如当您在空间不足或处理能力不足的小工具中下载 Facebook 应用程序时。 这也是 Facebook 和其他公司为其应用程序开发“精简版”Android 版本的主要原因。

现在,Android 应用程序创建者可以借助 JavaScript 工具增强任何应用程序的功能。 此工具降低了下载的大小并增强了启动功能。 这就是 Facebook 更新打算为其使用 JavaScript Facebook for Android 设备引擎的应用程序做的事情。

Facebook 团队分析了性能信息,发现 JavaScript Facebook for Android 设备工具对于下载量和一般启动功能至关重要。 知道这一点后,他们觉得需要优化 JavaScript 在高度受压的便携式设备环境中的正常执行方式。 另一方面,桌面环境很好,适用于 Android 的 Facebook 桌面版功能非常出色。

适用于 Android 设备的 JavaScript Facebook 工具有助于改进 3 个主要功能。 他们是:

  1. TTI(交互时间):这是应用程序启动到完全加载所需的时间。
  2. 下载的大小。
  3. 内存的使用。
 为您推荐: React Native vs Flutter vs PWA:趋势移动应用程序框架之战。

新的 Android JavaScript 引擎的特性

移动应用程序应用程序营销开发

  • 工作将在构建时间执行,而不是在人们等待时在小工具上解析和组合 JavaScript。
  • 提前编译允许更强大的优化。 可以在程序中看到类似的活动并进行重复数据删除。 JavaScript 代码字符串将以良好的存储方式放在一起,而不会产生运行时开销。
  • 一个很小的 ​​Android APK,可以在内存较少的设备上安装 Facebook 应用程序或任何其他应用程序。
  • 字节码可能会被内存映射,并根据需要越来越多地从闪存中加载。
  • 虚拟地址区域在需要时以块的形式分配。 这避免了确定堆大小的需要,并且还最大限度地减少了开销。
  • 使用 Hermes 实现 JavaScript 的标准,目标是 ECMAScript2015,也称为 ES6。 在 React Native 应用程序中不常应用的 JavaScript 功能已被删除。
除此之外,适用于三星设备的 Facebook 应用程序还开放了 Hermes 与 React Native 集成的源代码。 这意味着 Android 开发人员将立即能够使用 Hermes。

如何获得爱马仕

问自己三个问题来评估结果

适用于 Android 设备的 JavaScript Facebook 引擎可供下载。 你不能从 Facebook 下载,目前,它可以在 GitHub 上获得。 React Native 网站上提供了有关如何使用它的指南。

反应

React-JavaScript-库 请务必注意,用于 Android 设备引擎的 JavaScript Facebook 仅适用于使用 React Native(Facebook 创建的应用程序结构)设计的 Android 应用程序。 这种结构的主要卖点是代码在大多数平台上以本机方式运行。

但是 React Native 有一些缺点,这就是为什么大多数人不喜欢它的原因。 例如:在线游戏应用程序和其他 Android 应用程序功能需要本地代码,例如当它们需要备份相机和传感器之间的集成时。 此外,Android 开发人员总是需要设计桥梁以插入结构和本机代码之间的空间。 这也是Airbnb决定退出的原因。

但 JavaScript Facebook for Android 设备引擎可能是 Facebook 为 React Native 带来更多活力并说服更多人接受它的一种手段。

考虑到 JavaScript Facebook for Android 设备引擎只专注于应用程序,Facebook 透露他们不打算将其与服务器或搜索引擎集成。

JavaScript Facebook for Android 设备引擎是来自 Facebook 的最新开源项目。 目前更多的 Android 项目包括:

  • Pythia:深度学习框架。
  • DLRM:深度学习模型。
  • Spectrum:一个旨在高效上传图片的项目。
 您可能喜欢:编程简介:Node JS、Laravel、React、Ruby、Vue 和 Python 简介。

Android 设备的 Facebook JavaScript 引擎的主要架构决策

安卓

移动设备的局限性(例如闪存速度慢和 RAM 容量小)使 Facebook 做出了一些架构决策。 以下是他们实施的事情:

1.字节码预编译

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 1 点 Android 设备引擎的 JavaScript Facebook 将在加载时自动解析 JavaScript 的源代码。 这将创建一个字节代码。 此活动将延迟 JavaScript 执行的开始

为避免这种情况,Facebook 应用程序安卓设备 JavaScript 引擎使用了在应用程序构建过程中运行的提前编译器。 这导致更多时间花在字节码优化上。 这意味着字节码很小而且更有用。

可以优化整个程序。 这包括去重操作和打包字符串表。

字节码的构建方式是在运行时将映射到内存并在不需要遍历整个文件的情况下进行解释。 闪存改善了大多数中等和劣质移动设备的延迟。 因此,这会在必要时从闪存中加载字节代码,字节代码的大小优化带来了巨大的 TTI 增强。

此外,由于内存只映射为文件读取和支持,因此不交换的操作系统可能仍会在内存压力下删除这些页面。 这将最大限度地减少内存较少的小工具中的内存不足进程终止。

压缩后的字节码比同样压缩后的 JavaScript 代码稍大。 这是因为适用于 Android 设备的 JavaScript Facebook 引擎代码的大小很小。 适用于 Android 设备的 JavaScript Facebook 引擎降低了 Android 应用程序的大小。

2.没有JIT

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 2 点 为了加快执行速度,许多常用的 JavaScript 引擎可能无法使用 JIT(及时)工具将解释代码编译为机器代码。

适用于 Android 设备的 Facebook 应用程序 JavaScript 引擎没有 JIT 工具,这意味着它在依赖 CPU 的基准测试中表现不佳。 这个决定是全球性的。 整体基准并不代表应用程序的工作负载。

Facebook 甚至对 JIT 进行了各种测试,他们相信在不恶化其主要指标的情况下实现高速绝非易事。 每当应用程序启动时,JTI 必须首先做好准备,这使得增强 TTI 变得困难,甚至可能损害 TTI。 除此之外,JIT 会增加本机代码的大小和内存消耗。 这破坏了 Facebook 的主要指标。 这就是为什么 Facebook Android 决定忽略它,转而关注解释器的性能,作为 JavaScript Facebook for Android 设备引擎的最佳权衡。

3、垃圾收集技术

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 3 点 良好的内存使用在 Android 移动设备中至关重要。 低质量的小工具内存较少,无法更换操作系统,操作系统会杀死占用大量内存空间的应用程序。 杀死应用程序后,需要缓慢重启并影响后台功能。

在最初的 Facebook Android 测试中,发现虚拟地址空间可能在 32 位设备上的大型应用程序中受到限制。

为了减少引擎使用的内存和虚拟地址空间,Facebook 设计了一个具有以下功能的垃圾收集器。

  • 按需分配:虚拟地址空间在必要时分块分配。
  • 非连续的:虚拟地址空间应该在一个内存范围内以消除资源限制。
  • 移动:移动对象意味着内存可能会碎片化,而不必要的块将被带回操作系统。
 您可能还喜欢: Angular 与 React:2019 年选择哪个框架。

结论

Facebook JavaScript 引擎提升了 Android 上的 React Native——结论

适用于 Android 设备的 JavaScript Facebook 项目是 Facebook 团队正在进行的众多项目之一。 该团队还期待创建内存和时间分析方法。 这将使 Android 专家可以轻松地增强他们的应用程序。 为 Android 设备引擎测试 JavaScript Facebook 并查看其功能。 与我们分享您的经验,如果您有任何问题,也可以向我们提问。

 本文由托马斯·米勒撰写。 他是一位 Android 技术专家,喜欢向人们介绍最新技术。 Thomas 也喜欢 JavaScript Facebook for Android 设备引擎的想法,并使用过它并且喜欢它的工作方式。 他还在 autoexpertguides.com 上汇编了汽车行业的最佳专家评论。