📜  Javascript引擎简介

📅  最后修改于: 2022-05-13 01:56:49.979000             🧑  作者: Mango

Javascript引擎简介

计算机无法理解 JavaScript,但只有浏览器才能理解 JavaScript。因此,我们需要一个程序来将我们的 JavaScript 程序转换为计算机可以理解的语言。 JavaScript 引擎是一种计算机程序,它执行 JavaScript 代码并将其转换为计算机可理解的语言。

JavaScript 引擎列表:

BrowserName of Javascript Engine
Google ChromeV8
Edge (Internet Explorer)Chakra
Mozilla FirefoxSpider Monkey
Safari Javascript Core Webkit

让我们了解他们中的每一个。

1. V8: V8 是 Chromium 项目为 Google Chrome 和 Chromium 网页浏览器开发的 JavaScript 引擎。它是一个 JavaScript 引擎,可以独立运行,也可以嵌入到任何 C++ 应用程序中。它使用自己的解析器生成抽象语法树。然后,Ignition 使用内部 V8 字节码格式从这个语法树生成字节码。字节码由 TurboFan 编译成机器码。它还处理对象的内存分配,并垃圾收集它不再需要的对象。优化技术,例如省略昂贵的运行时属性和内联缓存。垃圾收集器是分代增量收集器。

V8 提供了一个优势,因为它允许 JavaScript 运行得更快,从而改善了用户的 Web 体验,为 Web 应用程序的开发铺平了道路,并通过 Node.js 等项目刺激了服务器端 JavaScript 的快速增长。

2. Chakra: Chakra是微软开发的JScript引擎。它是专有软件。它用于 Internet Explorer 网络浏览器。该引擎的一个显着特点是它 JIT 在单独的 CPU 内核上编译脚本,与 Web 浏览器并行。

3. Spider Monkey: SpiderMonkey 是第一个 JavaScript 引擎,由 Netscape Communications 的 Brendan Eich 编写,后来以开源形式发布,目前由 Mozilla 基金会维护。它仍在 Firefox 网络浏览器中使用。

4. Webkit: WebKit 由Apple 开发并用于其Safari 网络浏览器,以及所有iOS 网络浏览器。黑莓浏览器、从 PS3 开始的 PlayStation 游戏机、Tizen 移动操作系统以及 Amazon Kindle 电子书阅读器附带的浏览器都使用它。 WebKit 的 C++ 应用程序编程接口 (API) 提供了一组类来在窗口中显示 Web 内容并实现浏览器功能,例如在用户单击时跟踪链接、管理后退列表以及管理最近访问的页面的历史记录。

示例 1:使用控制台执行 JavaScript 代码:对于 Nashorn 引擎, Java 8 引入了一种新的命令行工具 iejjl。我们必须按照以下步骤通过控制台执行 JavaScript 代码:

  • 创建一个名为 geeksforgeeks.js 的文件。
  • 打开 geeks.js 并将以下代码写入文件并保存。

Javascript


输出:

Welcome to Geeksforgeeks!!!

示例 2:通过 ScriptEngine 类将 JavaScript 文件嵌入到Java代码中来执行 JavaScript 文件: 借助 ScriptEngine 类,我们可以创建一个 JavaScript 引擎,通过 JavaScript 引擎,我们可以执行 javaScript 文件。

// Program to show usecase of Javascript 
// prog in Java Prog
import javax.script.*;
import java.io.*;
  
public class Geeksforgeeks {
    public static void main(String[] args)
    throws Exception {
  
        // Generating Nashorn JavaScript Engine
        ScriptEngine ee = new ScriptEngineManager()
                         .getEngineByName("Nashorn");
  
          
        // Directly use JS Code  inside Java Code
        ee.eval("print('Welcome to Geeksforgeeks!!!')");
    }
}

输出:

您可能会遇到运行时错误,例如

这是因为 Nashorn 将被GraalVM 取代。

  GraalVM 它是一种高性能运行时,可提高应用程序的性能和效率。它专为使用各种编程语言(如Java、JavaScript、基于 LLVM 的语言(如 C 和 C++)以及其他动态语言)编写的应用程序而设计。它消除了编程语言之间的隔离,并在共享运行时中实现了互操作性