热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScriptEngine和JavaScriptRuntimeEnvironment之间有什么区别

如何解决《JavaScriptEngine和JavaScriptRuntimeEnvironment之间有什么区别》经验,为你挑选了3个好方法。

我感到有点困惑,有人可以帮助描述Javascript Engine和Javascript Runtime Environment之间的区别.BTW,事件循环是在引擎还是运行时实现的?



1> georg..:

与C和其他编译语言不同,Javascript在一个容器中运行 - 一个读取你的js代码并运行它们的程序.这个程序必须做两件事

解析您的代码并将其转换为runnable命令

为Javascript提供一些对象,以便它可以与外部世界进行交互.

第一部分称为Engine,第二部分是Runtime.

例如,Chrome浏览器和node.js使用相同的引擎 - V8,但它们的运行时不同:在Chrome中,您有windowDOM对象等,而节点则为您提供require缓冲区和进程.



2> Luo Jiong Hu..:

想象一下机器人正在播放音乐:

Javascript代码将是机器人的音符.

TheJavascript引擎将是能够理解笔记并对其进行操作的机器人.

Javascript运行时将是机器人可以用来播放音乐的乐器.

想象一下机器人正在灭火:

Javascript代码将是机器人灭火的指令.

Javascript引擎将是可以理解指令并对其进行操作的机器人.

Javascript运行时将是消防车和水枪.


使抽象概念具体化,人们会更好地理解.

3> Jörg W Mitta..:

我们首先想象一下Javascript的Ahead-Of-Time编译实现.

编译器将转换Javascript代码,例如,原生x86机器代码可以运行.但是,Javascript中有一些东西在运行时发生,因此无法静态编译.例如,垃圾收集或反射.因此,为了使程序运行,需要在运行时提供某种支持服务,例如垃圾收集器和反射系统.此外,Javascript有eval,这意味着(在我们假设的编译实现中)编译器本身或其他一些解释器需要在运行时可用.

我们称之为运行时支持服务.

需要可用于该程序的第二个事情,是对象如Array,Function,Object等,和功能,例如forEach.这个从一开始就需要对程序可用的对象和函数集合通常称为核心库基本库.对于像Javascript这样设计为嵌入式的语言,根据上下文,还有一些假定存在的附加库.例如,对于嵌入在浏览器中的Javascript,我们期望DOM对象和函数以及全局windowdocument对象等存在.这些也可以被视为核心库的一部分.

最后,让我们现在忘记我们的假设编译器并查看解释器(或JIT编译器或混合模式引擎或字节码VM).在这里,口译员(或JIT,或其他)是拼图的第三部分.这是实际执行Javascript程序的事情.(从技术上讲,JIT不执行,编译,然后执行其他操作.)

术语不是100%明确:有时,只有运行时支持服务被称为运行时环境,有时,核心库也包含在内.

执行引擎仅指解释器(JIT,VM,...)或解释器和运行时环境的组合.编译器永远不会被称为执行引擎(它不执行任何操作,只是翻译成另一种语言),术语执行引擎很少用于引用静态编译的实现.

事件循环是主机环境的一部分,而不是Javascript实现.


感谢您耐心的回答。
推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
author-avatar
88943w
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有