Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎: Hermes,比传统JavaScriptJIT,即时运行的方式不同,Hermes需要先将JavaScript编绎成字节码,这一点很像是Java的方式。
从对比测试可观察,Hermes引擎提升性能较为明显,使用预编绎,很容易得知这些提升所产生的原因。
移动端性能可跟原生媲美?
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应用提高性能的,今天,我将进行全面介绍。
Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎
已开源 & 用于移动端React Native应用的集成
用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注
针对React Native应用,流畅度等性能问题一直被人诟病
Facebook基于多方性能数据分析,发现JavaScript引擎本身就是影响React Native应用启动性能的重要因素
构建一个全新的JavaScript引擎,针对React Native应用,去提高移动客户端应用App的性能
特别注意:Hermes主要面向移动端React Native应用的性能优化,对浏览器 & Node.js 等服务端基础架构并不适用。
对于React Native应用(基于JavaScript引擎)来说,用户感知最明显的性能体验包括:
应用程序可用的时间(TTI)
安装包下载大小(Android APK 大小)
内存利用率
根据Facebook给出的官方性能优化性能数据如下:
从上述数据可知,Hermes引擎提升性能较为明显:
在应用程序可用的时间上,Hermes能提升一倍的时间效率
在安装包下载大小下,Hermes能减少50%的大小
在内存利用率上,Hermes能节省30%的内存使用
为了提升React Native应用的性能表现,Hermes引擎的设计主要是从是两个方面入手:编译方式 & 垃圾回收策略
从对
在实际使用Hermes时,具备3个优点:懒编译、兼容性好 & 调试体验好,具体如下:
特别注意:在实际使用Hermes时,需对build.gradle文件做更改 & 重新编译
project.ext.react = [ entryFile: "index.js", enableHermes: true ]
本文全面讲解了Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎: Hermes
下面我将继续对 Hermes
引擎中的知识进行深入讲解 ,感兴趣的同学感兴趣的同学,可以长按扫描下方二维码关注本微信公众号。