关闭

JavaScript 引擎

时间: 2019-01-02阅读: 1380标签: 引擎

编写Web代码有时会让开发人员编写一系列字符并像魔术那样神奇,这些字符会在浏览器中变成具体的图像,文字和动作。了解该技术可以帮助开发人员更好地调整他们作为程序员的技能

JavaScript引擎是一项复杂的技术,并且知道不同平台使用不同引擎的原因对于尝试在尽可能短的时间内生成优化代码的开发人员来说至关重要。


虚拟机 

JavaScript引擎通常被定义为给定计算机系统的一种虚拟机或软件驱动的仿真。有许多类型的虚拟机,它们根据它们能够模拟或替代实际物理机器的精确程度进行分类。

例如,系统虚拟机提供可以在其上执行操作系统的平台的完整仿真。Mac用户熟悉Parallels,这是一个允许Windows在Mac上运行的系统虚拟机。

另一方面,流程虚拟机功能较少,只能运行一个程序或进程。Wine是一个进程虚拟机,允许Windows应用程序在Linux机器上运行,但不能在Linux机器上提供整个Windows操作系统。

JavaScript引擎是一种专门用于解释和执行JavaScript代码的流程虚拟机。通过构建网页来区分为浏览器提供动力的布局引擎与解释和执行代码的低级JavaScript引擎之间的区别非常重要。


什么是JavaScript引擎? 

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

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

有多种JavaScript引擎可用于分析,解析和执行客户端代码。随着每个浏览器版本的发布,JavaScript引擎可能会被更改或优化,以跟上最先进的JavaScript代码执行。


JavaScript引擎如何工作?

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

那怎么办?当然,这取决于引擎。两个主要的引擎是WebKit的JavaScriptCore和Google的V8引擎,因为它们被NativeScript利用。这两个引擎处理代码的方式不同。

JavaScriptCore执行一系列步骤来解释和优化脚本。它执行词法分析,将源分解为一系列具有已识别含义的标记或字符串。然后解析器分析令牌的语法并将其内置到语法树中。然后,四个即时进程启动,分析并执行解析器生成的字节码。简单来说,这个JavaScript引擎获取源代码,将其分解为字符串-a.k.a。理解它,获取这些字符串并将它们转换为编译器可以理解的字节码,然后执行它。

谷歌的V8引擎,用C ++编写,也编译和执行JavaScript源代码,处理内存分配,垃圾收集剩余物。它的设计包括两个编译器,它们直接将源代码汇编到机器代码中。

这些编译器是Full-codegen,一个生成未优化代码的快速编译器和Crankshaft,一个生成快速优化代码的慢速编译器。

如果Crankshaft确定Full-codegen生成的未优化代码需要优化,它将取代它 - 一个称为“曲柄移植”的过程。

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


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

JavaScript引擎的代码解析和执行过程的目标是在最短的时间内生成最优化的代码。

最重要的是,这些引擎的发展与开发Web和移动领域的过程平行,以使它们尽可能地运行。为了跟踪这种演变,在诸如arewefastyet.com之类的网站上生成的基准图表显示了各种引擎相互比较的表现。

任何Web开发人员都需要了解浏览器中固有的差异,这些浏览器显示生成,调试和维护的代码。更具体地说,理解为什么某些脚本在另一个浏览器上的运行速度较慢,这一点很重要。

类似的移动开发人员 - 特别是那些使用webview编写混合移动应用程序来显示其内容或使用像NativeScript这样的运行时的移动开发人员 - 将想知道什么引擎正在解释他们的JavaScript代码。移动Web开发人员应该了解各种浏览器在其小型设备上提供的固有限制和可能性。跟上JavaScript引擎的变化,对于那些希望发展成为Web,移动或应用程序开发人员的人来说,真的会有所回报。 SW

Jen Looper是Progress Software的Telerik平台的开发者倡导者。Looper还是Ladeez First Media的网络和移动开发者和创始人,Ladeez First Media是一家独立移动开发工作室。在业余时间,她是一位经常学习的舞蹈家,教师和多元文化家.


Submitted By Jen Looper
原文链接: www.softwaremag.com 
翻译来源:https://www.zcfy.cc/article/javascript-engines

 

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1745

关闭

JavaScript物理引擎之Matter.js与Box2d性能对比

在挑选JavaScript 2D物理引擎的时候,不外乎两种主流的选择:第一种是老牌的Box2D,最开始的版本是C++实现的,后来有了很多种实现,比如flash版本和js版本,第二种是新潮的matter-js,matter-js比较轻量,API和文档都比较有友好。

百度正式开源转发引擎 BFE,曾支撑春晚红包百亿流量

BFE(Baidu Front End,百度统一前端)是百度的统一七层流量转发平台。据了解,BFE 平台目前已接入百度大部分流量,每日转发请求接近 1 万亿,峰值 QPS 超过 1000 万。

JavaScript引擎是如何工作的?从调用栈到Promise你需要知道的一切

你有没有想过浏览器是如何读取和运行 JavaScript 代码的吗?这看起来很神奇,但你可以学到一些发生在幕后的事情。让我们通过介绍 JavaScript 引擎的精彩世界在这种语言中尽情畅游。

V8引擎是如何工作?

V8是google开发的JavaScript引擎, 它是 开源的 ,而且是用C++编写的。它用于客户端(Google Chrome)和服务器端(node.js)JavaScript应用程序。V8最初旨在提高Web浏览器中JavaScript执行的性能。为了提升速度,V8将JavaScript代码转换为更高效的机器代码,而不是使用解释器。

精读《V8 引擎 Lazy Parsing》

本周精读的文章是 V8 引擎 Lazy Parsing,看看 V8 引擎为了优化性能,做了怎样的尝试吧!这篇文章介绍的优化技术叫 preparser,是通过跳过不必要函数编译的方式优化性能。

模板引擎art-template怎么安装?

art-template支持标准语法和原始语法。标准语法允许模板更易于读写。而原始语法具有强大的逻辑处理能力。标准语法支持基本模板语法和JavaScript表达式。原始语法支持任意JavaScript语句,与EJS相同。

javascript引擎有哪些?

JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。在2008年到2009年的第二次浏览器大战之前,JavaScript引擎(JavaScript engine)仅简单地被当作能阅读执行JavaScript源代码的解释器

V8引擎-枚举+位运算实现参数配置

基本上从初始化引擎,到Isolate、handleScope、Context一直到编译其实都有记录,但是实在是无从下手。虽说我的博客也没有什么教学意义,但是至少也需要有一个中心和结论。

从Google V8引擎剖析Promise实现

本文阅读的源码为Google V8 Engine v3.29.45,此版本的promise实现为js版本,在后续版本Google继续对其实现进行了处理。引入了es6语法等,在7.X版本迭代后,逐渐迭代成了C版本实现。

JS引擎V8如何与 Lite 模式两开花?

去年年底,V8 团队启动了一个名为 V8 Lite 的项目,旨在大幅降低 V8 的内存使用率。最开始,团队准备把 V8 Lite 作为 V8 的独立模式,专门用于低内存的移动设备与嵌入式设备,因为这些设备更关注的是减少内存使用而不是执行速度

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!