V8 JavaScript引擎

简介: V8 JavaScript引擎

简介

V8 (v8.dev)是 Google 的开源高性能 JavaScript 和 WebAssembly 引擎,用 C++ 编写。它用于 Chrome 和 Node.js 等。它实现了 ECMAScript 和 WebAssembly,并运行在 Windows 7 或更高版本、macOS 10.12+ 以及使用 x64、IA-32、ARM 或 MIPS 处理器的 Linux 系统上。 V8 可以独立运行,也可以嵌入到任何 C++ 应用程序中。

V8是为谷歌Chrome提供动力的JavaScript引擎的名称。它使用我们的JavaScript并在使用Chrome浏览时执行它。

V8提供了JavaScript执行的运行时环境。DOM和其他Web平台API由浏览器提供。

最酷的是JavaScript引擎独不依赖于浏览器。这就推动了Node.js的兴起。早在2009年,V8就被选为Node.js引擎,随着Node.js流行的激增,V8成为了现在为大量用JavaScript编写的服务器端代码提供动力的引擎。

Node.js的生态系统是巨大的,这要归功于V8,它也为桌面应用程序提供了动力,比如Electron等项目。

其他js引擎

  • Firefox 使用SpiderMonkey

https://spidermonkey.dev/

SpiderMonkey是Mozilla的JavaScript和WebAssembly引擎,用于Firefox,Servo和其他各种项目。它是用C++,Rust和JavaScript编写的。你可以将它嵌入到 C++ 和 Rust 项目中,并且可以作为一个独立的 shell 运行。

  • Safari 使用的是JavaScriptCore(也称为Nitro)

https://developer.apple.com/documentation/javascriptcore

JavaScriptCore 框架提供了从 Swift、Objective-C 和基于 C 的应用程序评估 JavaScript 程序的能力。您还可以使用 JavaScriptCore 将自定义对象插入到 JavaScript 环境中。

  • Edge 之前使用的是Chakra但最近使用Chromium和V8引擎进行了重构。

所有这些引擎都实现ECMA-262标准,也称为ECMAScript,这是JavaScript使用的标准。

追求性能

V8是用C++编写的,并且不断改进。它是可移植的,可以在Mac、Windows、Linux和其他几个系统上运行。

在本次V8简介中,我们将忽略V8的实现细节:它们可以在更权威的网站(例如V8官方网站)上找到,而且它们会随着时间的推移而变化,通常会发生根本性的变化。

V8一直在发展,就像周围的其他JavaScript引擎一样,以加快Web和Node.js生态系统的速度。

在网络上,性能竞争已经持续了多年,我们(作为用户和开发人员)从这场竞争中受益匪浅,因为我们年复一年地获得更快、更优化我们的机器。

编译

JavaScript通常被认为是一种解释语言,但现代JavaScript引擎不再只是解释JavaScript,而是编译它。

自2009年SpiderMonkey JavaScript编译器被添加到Firefox 3.5中以来,这种情况一直在发生,每个人都遵循了这个想法。

JavaScript由V8内部编译,采用实时(JIT)编译来加快执行速度。

这似乎有违直觉,但自2004年谷歌地图推出以来,JavaScript已经从一种通常执行几十行代码来完成应用程序的语言演变而来,浏览器中运行着数千到数十万行代码。

我们的应用程序现在可以在浏览器中运行数小时,而不仅仅是一些表单验证规则或简单的脚本。

在这个新的世界里,编译JavaScript是非常有意义的,虽然可能需要更多时间才能准备好 JavaScript,一旦完成,它将比纯解释代码更具性能。

实际上就是采用编译之后,就类似后端语言了,先编译,然后再执行,我们把代码前期把代码编译好,在正式执行的时候,速度会有很大的提升,这样用户等待时间就更短了,体验也会更好。

相关文章
|
17天前
|
JavaScript 前端开发 Java
JS引擎V8
【10月更文挑战第9天】
23 0
|
3月前
|
Web App开发 JavaScript 前端开发
什么是JavaScript引擎
【8月更文挑战第14天】什么是JavaScript引擎
64 1
|
5月前
|
XML 缓存 JavaScript
一篇文章讲明白JS模板引擎之JST模板
一篇文章讲明白JS模板引擎之JST模板
47 2
|
6月前
|
JavaScript 前端开发 NoSQL
【MongoDB 专栏】MongoDB 的 JavaScript 引擎与脚本执行
【5月更文挑战第11天】MongoDB 的 JavaScript 引擎允许在服务器端直接执行脚本,提升效率并实现定制化操作。脚本环境提供独立但与数据库关联的运行空间,引擎负责脚本的解析、编译和执行。执行过程包括脚本提交、解析、编译和执行四个步骤。掌握脚本逻辑设计和 JavaScript 语言特性对于高效利用这一功能至关重要。例如,通过脚本可以计算商品总销售额,增强数据库操作的灵活性。
98 1
【MongoDB 专栏】MongoDB 的 JavaScript 引擎与脚本执行
|
5月前
|
缓存 自然语言处理 前端开发
深入剖析JavaScript引擎的工作原理
【6月更文挑战第3天】JavaScript引擎由解析器、解释器、优化器和垃圾回收器组成,它们协同完成代码的解析、编译和执行。解析器将源代码转为抽象语法树(AST),编译阶段进行作用域分析和变量提升。解释器执行AST,优化器在代码频繁执行时进行即时编译以提高性能。垃圾回收器自动回收不再使用的内存,防止泄漏。理解这些原理有助于优化代码和提升Web应用性能。
49 1
|
存储 JavaScript 前端开发
从 V8 优化看高效 JavaScript
从 V8 优化看高效 JavaScript
91 0
|
6月前
|
Web App开发 前端开发 JavaScript
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
|
6月前
|
JavaScript 前端开发 开发者
Vue.js深度解析:前端开发的生产力引擎
Vue.js深度解析:前端开发的生产力引擎
96 0
|
JavaScript 前端开发 算法
带你读《现代Javascript高级教程》十一、JavaScript引擎的垃圾回收机制(1)
带你读《现代Javascript高级教程》十一、JavaScript引擎的垃圾回收机制(1)
|
JavaScript 前端开发 算法
带你读《现代Javascript高级教程》十一、JavaScript引擎的垃圾回收机制(2)
带你读《现代Javascript高级教程》十一、JavaScript引擎的垃圾回收机制(2)