JavaScript引擎

渲染引擎和JavaScript引擎

先从一张图片来理解下这两个引擎

clipboard.png

一,渲染引擎:

主要作用是解释html和css,并绘制页面;
每种浏览器的渲染引擎可能会不一样,但都遵循W3C标准开发而成,方便Web技术的互相兼容性;
比较常见的几种渲染引擎

  • IE: Trident
  • Firefox: Gecko
  • Safari:Webkit
  • Chrome:Blink

二,JavaScript引擎

主要作用是解释并执行JavaScript;
每种浏览器也会有不同的JavaScript引擎,但都遵循ECMAScript标准开发而成,便于兼容JavaScript技术
比较常见的几种JavaScript引擎

  • IE: Chakra
  • Firefox: TraceMonkey
  • Safari: Nitro
  • Chrome: V8

----- 段落来源

什么是JavaScript引擎?

JavaScript引擎的基本工作是获取开发人员编写的JavaScript代码,并将其转换为可由浏览器解释甚至嵌入到应用程序中的快速优化代码。一般会附带在网页浏览器之中。

更确切地说,每个JavaScript引擎都实现了ECMAScript的一个版本,其中JavaScript是一种方言。随着ECMAScript的发展,JavaScript引擎也在不断发展。有很多不同的引擎,如:headless browser、Node.js和各种web浏览器。headless browser是指没有图形用户界面的Web浏览器,可用于运行针对Web产品的自动化测试。一个很好的例子是PhantomJS。Node.js是一个异步的,事件驱动的框架,允许在服务器端使用JavaScript。由于这些是JavaScript驱动的工具,因此它们由JavaScript引擎提供支持。

JavaScript引擎如何工作?

鉴于虚拟机的定义,将JavaScript引擎称为流程虚拟机是有意义的,因为它的唯一目的是读取和编译JavaScript代码。这并不意味着它是一个简单的引擎。例如,JavaScriptCore有六个构建块,用于分析,解释,优化和垃圾回收。

JavaScript是如何工作的了?当然,这取决于是什么引擎。两个主要引擎是WebKit的JavaScriptCore和Google的V8引擎。这两个引擎处理代码的方式是不同的。

  • JavaScriptCore执行一系列步骤来解释和优化脚本。它执行词法分析,将源分解为一系列具有已识别含义的标记或字符串。然后解析器分析令牌的语法并将其内置到语法树中。然后,四个即时进程启动,分析并执行解析器生成的字节码。简单来说,这个JavaScript引擎获取源代码,将其分解为字符串,获取这些字符串并将它们转换为编译器可以理解的字节码,然后执行它。
  • 谷歌的V8引擎,用C ++编写,也编译和执行JavaScript源代码,处理内存分配,垃圾收集剩余物。它的设计包括两个编译器,它们直接将源代码汇编到机器代码中。

一旦编译过程产生机器代码,引擎就会将ECMA标准中指定的所有数据类型,操作符,对象和函数暴露给浏览器或需要使用它们的任何运行时,如NativeScript。

这对开发人员意味着什么?

JavaScript引擎的代码解析和执行过程的目标是在最短的时间内生成最优化的代码。最重要的是,这些引擎的发展与开发Web和移动领域的过程平行,以使它们尽可能地运行。
任何Web开发人员都需要了解浏览器中固有的差异,这些浏览器显示生成,调试和维护的代码。更具体地说,理解为什么某些脚本在另一个浏览器上的运行速度较慢,这一点很重要。

相关阅读:
浏览器野史
浏览器是如何渲染网页的
JavaScript引擎
javascript引擎基础
阅读 840

推荐阅读