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,一旦完成,它将比纯解释代码更具性能。

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

相关文章
|
Web App开发 缓存 移动开发
V8 JS AOT化的探索与实践
JS 语言的动态性非常优秀,其弱类型等语言特性也使得一线业务开发者更容易上手,但这也导致 JS 每一次运行前都要重复编译,使得 JS 的执行性能不理想;虽然之前 UC 内核有做过 Code Cache 方案,但支持的场景不够完整,与原生 Native 的技术方案比,尤其是首次启动场景(如各类大促活动等)还是有比较大的差距。为了能尽可能做到与 Native 对标,缩小性能差距,同时让业务开发者无感,我们开发了 JS AOT 功能。本分享将结合目前集团内自有业务形态,以及 JS 在 Web 中的执行过程,介绍JS AOT是如何设计和实现的,以及能给业务带来哪些收益。本篇分享来自阿里巴巴的喻世江在第
1645 0
V8 JS AOT化的探索与实践
|
8月前
|
存储 JavaScript 前端开发
从 V8 优化看高效 JavaScript
从 V8 优化看高效 JavaScript
47 0
|
4月前
|
Web App开发 前端开发 JavaScript
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
|
6月前
|
自然语言处理 JavaScript 前端开发
V8 是如何执行 JavaScript 代码的
V8 是如何执行 JavaScript 代码的
65 0
|
11月前
|
存储 Web App开发 监控
Js中的垃圾回收及V8引擎的优化
Js中的垃圾回收及V8引擎的优化
236 0
|
Web App开发 JSON 自然语言处理
JavaScript基础系列开篇:V8是如何运行JavaScript(let a = 1)代码的?
我们知道,机器是不能直接理解我们平常工作或者自己学习的代码的。所以,在执行程序之前,需要将代码翻译成机器能读懂的机器语言。按语言的执行流程,可以把计算机语言划分为编译型语言和解释型语言
112 0
|
Web App开发 消息中间件 监控
V8如何处理JS
Chromium本身就是一个浏览器 Chrome浏览器一般选择Chromium的稳定版本作为它的基础 浏览器大战,其实就是渲染引擎之争 v8是「JS虚拟机」的一种 源代码对 V8 来说只是「一堆字符串」 执行JS代码核心流程 1. 先编译 2. 后执行 V8采用「JIT」(Just In Time)技术提升效率
V8如何处理JS
|
XML 存储 缓存
揭开使用 V8 作为目标引擎🔬的 JavaScript 代码处理的神秘面纱
揭开使用 V8 作为目标引擎🔬的 JavaScript 代码处理的神秘面纱
119 0
|
消息中间件 存储 自然语言处理
图解 Google V8 # 09:运行时环境:运行JavaScript代码的基石
图解 Google V8 # 09:运行时环境:运行JavaScript代码的基石
145 0
图解 Google V8 # 09:运行时环境:运行JavaScript代码的基石
|
存储 JavaScript 前端开发
图解 Google V8 # 02:函数即对象:一篇文章彻底搞懂 JavaScript 的函数特点
图解 Google V8 # 02:函数即对象:一篇文章彻底搞懂 JavaScript 的函数特点
115 0
图解 Google V8 # 02:函数即对象:一篇文章彻底搞懂 JavaScript 的函数特点