设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 3174|回复: 0
打印 上一主题 下一主题

什么是V8(Chrome V8)?

[复制链接]

219

主题

221

帖子

1418

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1418

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2020-4-27 15:33:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么是Chrome V8?
    Chrome V8(简称 V8)是JavaScript引擎,这意味着它执行JavaScript代码。最初,JavaScript被编写为由网络浏览器执行。 V8可以在浏览器内部或外部执行JavaScript代码,从而使服务器端执行脚本成为可能。像V8(八缸)汽车发动机一样,Chrome V8快速而强大。
    V8将JavaScript代码直接转换为机器代码(机器码是CPU可以理解的语言。它是纯数字的,表示由数字组成。),以便计算机可以实际理解它,然后执行转换后的代码或编译后的代码。 V8还优化了JavaScript执行。
    V8是用C ++编写的Google开源高性能JavaScript和WebAssembly引擎。它用于Chrome和Node.js等。


    V8实现ECMAScript和WebAssembly,并在Windows 7或更高版本,macOS 10.12+和使用x64,IA-32,ARM或MIPS处理器的Linux系统上运行。 V8可以独立运行,也可以嵌入到任何C ++应用程序中。
    V8编译并执行JavaScript源代码,处理对象的内存分配,并垃圾回收不再需要的对象。V8的停产,世代相传,准确的垃圾收集器是V8性能的关键之一(V8’s stop-the-world, generational, accurate garbage collector is one of the keys to V8’s performance)。
    JavaScript通常用于浏览器中的客户端脚本编写,例如用于处理文档对象模型(DOM)对象。但是,DOM通常不是由JavaScript引擎提供,而是由浏览器提供。 V8也是如此-Google Chrome提供了DOM。但是,V8确实提供了ECMA标准中指定的所有数据类型,运算符,对象和函数。
    V8使任何C ++应用程序都能将其自己的对象和功能公开给JavaScript代码。由您决定要向JavaScript公开的对象和功能。


    V8是支持Google Chrome浏览器的JavaScript引擎的名称。这是需要我们的JavaScript并在使用Chrome浏览器时执行它的东西。
    V8提供了运行JavaScript的运行时环境。 DOM和其他Web平台API由浏览器提供。
    很棒的事情是JavaScript引擎不受托管它的浏览器的影响。这项关键功能推动了Node.js的兴起。 V8在2009年被选为为Node.js提供支持的引擎,并且随着Node.js的爆炸性增长,V8成为了现在为大量用JavaScript编写的服务器端代码提供动力的引擎。
    由于有了V8,Node.js生态系统非常庞大,V8还为桌面应用程序提供了支持,并支持Electron等项目。








编译是什么意思?
    编译是将代码从一种编程语言转换为另一种编程语言的过程。通常,编译器会将代码从较高的抽象级别转换为从诸如JavaScript之类的人类可用语言的较低抽象级别转换为机器可读的代码。 Chrome V8执行所谓的即时编译。而不是预先编译JavaScript,而是在执行代码的同时对其进行编译。


什么是沙箱?

    “沙箱”是用于执行与其他环境(包括同一台计算机上的其他环境)隔离并分区的软件的环境。沙箱是Chrome V8的一项关键功能。每个进程都经过沙盒处理,以确保JavaScript函数在其上单独运行,并且一段代码的执行不会影响任何其他代码。 (与许多沙盒企业产品不同,后者在隔离的虚拟机中打开并运行可执行文件,而V8沙盒不会降低性能。)


什么是Node.js?
    Node.js是用于执行JavaScript代码的运行时环境,它是基于Chrome V8引擎构建的。它是异步的,这意味着在启动另一个进程之前不必等待一个进程完成。像V8一样,Node.js是免费的开放源代码。与V8不同,它没有内置的沙箱。 (熟悉JavaScript的人会注意到文件扩展名为.js;但是,这纯粹是出于美观的选择,表明运行时环境的名称与JavaScript关联,并不意味着Node.js是JavaScript文件。




其他JS引擎
    其他浏览器也有自己的JavaScript引擎:

  • Firefox具有Spidermonkey
  • Safari具有JavaScriptCore(也称为Nitro)
  • Edge具有Chakra

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


    JavaScript通常被认为是一种解释语言,但是现代JavaScript引擎不再只是解释JavaScript,而是对其进行编译
    自2009年将SpiderMonkey JavaScript编译器添加到Firefox 3.5以来,这种情况就发生了,每个人都遵循了这个想法。
    JavaScript由V8在内部进行实时编译(JIT),以加快执行速度。
    这似乎是违反直觉的,但是自2004年引入Google Maps以来,JavaScript已经从一种通常执行几十行代码的语言演变为完整的应用程序,该应用程序在浏览器中运行着成千上万行。
    现在,我们的应用程序可以在浏览器中运行数小时,而不仅仅是一些表单验证规则或简单的脚本。
    在这个新世界中,编译JavaScript非常有意义,因为尽管准备好JavaScript可能需要花费更多时间,但是一旦完成,它将比纯解释代码具有更高的性能。






V8 GitHub:https://github.com/v8/v8

V8 Project page: https://v8.dev/docs

举个例子(真简单-原来需要浏览器解释js脚本,现在Node来干这个活了!!!o(∩_∩)o ):
C:\Users\Angel>node -v
v12.14.0

C:\Users\Angel>copy con hello.js
console.log("hello,world");
已复制         1 个文件。


C:\Users\Angel>node hello.js
hello,world




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即加入

x

知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2024-12-2 18:40 , Processed in 0.192249 second(s), 28 queries .

Powered by JeeStudy!

© 2008-2020 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表