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 工具。

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

更多关于 Facebook for Android 设备 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 on-gadget。
  • 提前编译允许更多增强的优化。 类似的活动可能会出现在程序中并被删除。 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 透露他们不打算将其与服务器或搜索引擎集成。

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

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

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

安卓

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

1.字节码预编译

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

为了避免这种情况,Facebook 应用程序 android 设备 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 vs React:2019 年选择哪个框架。

结论

Facebook JavaScript 引擎在 Android 上提升 React Native - 结论

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

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