V8 JavaScript引擎

boyanx2周前技术教程4

简介

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

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

相关文章

ES6基础——环境构建、任务自动化、服务器搭建

1. 为什么学习 ES6 需要构建环境1. 因为 ES6 一些语法, 在浏览器中是不能直接运行的 。2. 环境构建内容:1. 基础架构 1. 项目需要放置那些目录 。 2. 那些目录放置那...

Bun 1.0 JavaScript 运行时发布,附带 Windows“实验”版

作者 | 核子可乐、丁晓昀Bun 团队已经为其 JavaScript/TypeScript 运行时公布了 1.0 稳定版,正式版在速度、集成度和兼容性等方面均做出了强有力的承诺。项目缔造者 Jarre...

苹果这个新的稳定平台适合用户/开发者测试

苹果好低调地就发布了这个平台,还好我们没有错过。从今天起你将有一种新的、更简便的方式去了解,Safari 和其他使用 Webkit 的应用中将有什么特性和完善。Safari Technology Pr...

Next.js 15 来了,全新的编译器、700倍的构建速度提升

Next.js 15 来了,让全栈Web应用开发变得比以往任何时候都更简单高效!全新的编译器、700倍的构建速度提升,创建高性能的全栈Web应用从未如此轻松。让我们一起来探索一下 v15 的最新特性:...

Google的Dart编程语言即将登陆服务器

几天前的I/O开发者大会上,Google悄然宣布,正在努力工作让其Dart编程语言尽快登陆App Engine。这一实现的基础源于该公司最近推出的管理虚拟机以及该服务的定制运行环境支持。然而,由于定制...

javascript中const/let/var的用法区别及使用场景

给大家建议使用的优先级:const > let > var 首先const声明常量的好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误,另外其实js...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。