OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Facebook发布全新JavaScript引擎Hermes:越来越像Java字节码,JS要统一全端?


分享到


分类 JS学习   关键字 JavaScript   发布 newghost  1563509511352
注意 转载须保留原文链接,译文链接,作者译者等信息。  
Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎: Hermes,比传统JavaScriptJIT,即时运行的方式不同,Hermes需要先将JavaScript编绎成字节码,这一点很像是Java的方式。

性能提升

从对比测试可观察,Hermes引擎提升性能较为明显,使用预编绎,很容易得知这些提升所产生的原因。

  1. 在应用程序可用的时间上,Hermes能提升一倍的时间效率(减少即时执行的语言解释过程)
  2. 在安装包下载大小下,Hermes能减少50%的大小(JS被压缩成了字节码)
  3. 在内存利用率上,Hermes能节省30%的内存使用(不需要在解释执行时额外产生的临时内存使用)

移动端性能可跟原生媲美?

Facebook的Reative-Native在移动APP开发上有着巨大优势,可直接用JavaScript编写iOS/Android原生应用。可以预见,如果JavaScript采用跟Java一样的字节码预编绎模式,那么至少在Android平台上,Reative-Native有可能超过原生应用性能,并且如果Android本身自带Hermes虚拟机,将即大减少APP包的文件体积。毕竟JavaScript的压缩效率要比Java高得多。

统一全端

Hermes的出现可能会加强JavaScript成为全端开发语言的趋势,未来将可以用JavaScript开发所有场景的应用。

嵌入式设备: 最近Fabrice Bellard发布了QuickJS,完全由C语言编写,可运行在低端嵌入式设备。
移动端APP: 如果 Hermes 采用量加大,这 可能加强RN统一iOS/Android开发平台的趋势,使用一语言跨两种平台运行。
网页Web端: JavaScript一直都是前端唯一的可选语言。
服务器端: Node.JS应用已经非常成熟, Paypal, MicroSoft, Yahoo, SAP等均采用Node.JS开发大流量或者大规模应用。
桌面端:Github(被微软收购)的开源项目Electron,可以直接用HTML,JS写桌面应用,目前也非常成熟,一些伟统桌面程序如迅雷,已经采用这个技术架构。

以下Hermes的具体内容, 来自:carson带你解析Android  公众号 

前言

  • 目前,用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注。

  • 最近,一个崭新的JavaScript引擎面世:Hermes,它是Facebook在Chain React 2019 大会上发布 & 用于在React Native应用提高性能的,今天,我将进行全面介绍。

目录


1. 简介

Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎

已开源 & 用于移动端React Native应用的集成



2. 作用

2.1 背景

  • 用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注

  • 针对React Native应用,流畅度等性能问题一直被人诟病

2.2 问题

Facebook基于多方性能数据分析,发现JavaScript引擎本身就是影响React Native应用启动性能的重要因素

2.3 解决方案

构建一个全新的JavaScript引擎,针对React Native应用,去提高移动客户端应用App的性能

特别注意:Hermes主要面向移动端React Native应用的性能优化,对浏览器 & Node.js 等服务端基础架构并不适用。


3. 性能提升表现

对于React Native应用(基于JavaScript引擎)来说,用户感知最明显的性能体验包括:

  • 应用程序可用的时间(TTI)

  • 安装包下载大小(Android APK 大小)

  • 内存利用率

根据Facebook给出的官方性能优化性能数据如下:


从上述数据可知,Hermes引擎提升性能较为明显:

  • 在应用程序可用的时间上,Hermes能提升一倍的时间效率

  • 在安装包下载大小下,Hermes能减少50%的大小

  • 在内存利用率上,Hermes能节省30%的内存使用


4. 设计原理

为了提升React Native应用的性能表现,Hermes引擎的设计主要是从是两个方面入手:编译方式 & 垃圾回收策略

4.1 编译方式

a. 字节码预编译


b. 无JIT编译


4.2 垃圾回收策略

从对


5. 使用特点

在实际使用Hermes时,具备3个优点:懒编译、兼容性好 & 调试体验好,具体如下:


  • 特别注意:在实际使用Hermes时,需对build.gradle文件做更改 & 重新编译

  1. project.ext.react = [

  2. entryFile: "index.js",

  3. enableHermes: true

  4. ]


6. 总结

  • 本文全面讲解了Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎: Hermes

  • 下面我将继续对 Hermes引擎中的知识进行深入讲解 ,感兴趣的同学感兴趣的同学,可以长按扫描下方二维码关注本微信公众号。




社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. Node.JS的竞争对手?QuickJS入门教程,使用os模块读写文件,并将JavaScript编绎成可执行文件
  2. 树莓派4对比测试:性能提升3倍启动时间反而变慢?TF卡成最大瓶颈
  3. Facebook发布全新JavaScript引擎Hermes:越来越像Java字节码,JS要统一全端?
  4. 在嵌入式设备树莓派上编译QuickJS教程:一个C语言编写的极简JavaScript引擎
  5. 让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
  6. 华为鸿蒙操作系统想要取代Android几乎不太可能
  7. node.js函数如何获取调用者的文件目录路径: 用callsite获取错误堆栈的每一层文件名及路径
  8. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - JS学习
  1. 让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
  2. Facebook发布全新JavaScript引擎Hermes:越来越像Java字节码,JS要统一全端?
  3. Node.JS的竞争对手?QuickJS入门教程,使用os模块读写文件,并将JavaScript编绎成可执行文件
  4. 在嵌入式设备树莓派上编译QuickJS教程:一个C语言编写的极简JavaScript引擎
  5. 使用JavaScript的Proxy监听对象属性变化并进行类public/private的访问控制
  6. JavaScript求一个字符串的字节长度
  7. Node.JS用RSA签名算法公钥加密私钥解密,实现License软件授权验证
  8. Node.JS借助OS模块获取当前Windows系统用户登录名
  9. JavaScript中将字符串true或false转换成Boolean类型
  10. jQuery用$.prop,$.attr方法来获取或设置checkbox当前选中状态

 关键字 - JavaScript
  1. 少年,不要滥用箭头函数啊:JS中lambda表达式的优缺点和使用场景
  2. 用JavaScript获取当月第一天和最后一天
  3. 让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
  4. ES6中的Map与JSON的相互转化(序列和持久化)
  5. Facebook发布全新JavaScript引擎Hermes:越来越像Java字节码,JS要统一全端?
  6. 在嵌入式设备树莓派上编译QuickJS教程:一个C语言编写的极简JavaScript引擎
  7. 为什么我不建议你将JavaScript作为主力语言
  8. 使用JavaScript的Proxy监听对象属性变化并进行类public/private的访问控制
  9. Node.JS中UDP打洞穿透内网路由,架设内网服务器技术详解及源码
  10. JavaScript求一个字符串的字节长度

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号