JavaScript引擎介绍
JavaScript是一种脚本语言,计算机无法直接理解,但浏览器内置了JavaScript引擎,帮助其理解和解释JavaScript代码。这些引擎将我们的JavaScript程序转换为计算机可以理解的语言。
JavaScript引擎是一种计算机程序,用于执行和转换JavaScript代码为计算机可理解的语言。
JavaScript引擎列表:
| 浏览器 | Javascript引擎名称 |
|---|---|
| Google Chrome | V8 |
| Edge (Internet Explorer) | Chakra |
| Mozilla Firefox | Spider Monkey |
| Safari | Javascript Core Webkit |
让我们了解它们中的每一个。
1. V8: V8是由Chromium项目为Google Chrome和Chromium Web浏览器开发的JavaScript引擎。它是一个可以独立运行或嵌入到任何C++应用程序中的JavaScript引擎。使用自己的解析器,它生成抽象语法树。然后,Ignition使用内部V8字节码格式从这个语法树生成字节码。TurboFan将字节码编译成机器码。它还处理对象的内存分配,并对不再需要的对象进行垃圾回收。优化技术包括消除昂贵运行时属性和内联缓存。垃圾回收器是一种分代增量收集器。
V8提供了一个优势,它使JavaScript运行得更快,这提高了用户在Web上的体验,为Web应用程序的开发铺平了道路,并通过Node.js等项目推动了服务器端JavaScript的快速增长。
2. Chakra: Chakra是由微软开发的JScript引擎。它是专有软件。它在Internet Explorer网络浏览器中使用。该引擎的一个独特功能是在与Web浏览器并行的单独CPU核上JIT编译脚本。
3. Spider Monkey: 蜘蛛猴是第一个JavaScript引擎,由Brendan Eich在Netscape Communications编写,后来作为开源软件发布,目前由Mozilla Foundation维护。它仍然被Firefox网页浏览器使用。
4. Webkit: WebKit由苹果开发,用于Safari浏览器和所有iOS浏览器。它被BlackBerry浏览器、PlayStation从PS3开始的游戏机、Tizen移动操作系统以及Amazon Kindle电子书阅读器中的浏览器使用。WebKit的C++应用程序编程接口(API)提供了一组类以在窗口中显示Web内容,并实现浏览器功能,例如用户点击链接时跟踪链接,管理前进后退列表以及管理最近访问的页面的历史记录。
示例 1: 通过使用控制台执行JavaScript代码:对于Nashorn引擎,Java 8引入了一个新的命令行工具,即jjl。我们必须按照以下步骤通过控制台执行JavaScript代码:
- 创建名为geeksforgeeks.js的文件。
- 打开geeks.js并将以下代码写入文件并保存。
Javascript
var gfg= function(){
print("Welcome to Geeksforgeeks!!!");
};
gfg();
输出:
Welcome to Geeksforgeeks!!!
示例2: 通过将JavaScript文件嵌入Java代码并使用ScriptEngine类执行JavaScript文件:通过ScriptEngine类的帮助,我们可以创建一个JavaScript引擎,使用这个引擎,我们可以执行JavaScript文件。
Java
// 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引擎计划在将来的JDK版本中被移除
这是因为Nashorn将被 GraalVM 取代。
GraalVM: 它是一个高性能的运行时,能够改善应用性能和效率。它专为使用不同编程语言编写的应用程序而设计,包括Java、JavaScript、基于LLVM的语言如C和C++,以及其他动态语言。它消除了编程语言之间的隔离,并在共享运行时下实现互操作性。
极客教程