An
ECMAScript engine
A JavaScript engine is a software component that executes JavaScript code. The first JavaScript engines were mere interpreters, but all relevant modern engines use just-in-time compilation for improved performance.
JavaScript engines are typica ...
is a program that executes source code written in a version of the
ECMAScript
ECMAScript (; ES) is a JavaScript standard intended to ensure the interoperability of web pages across different browsers. It is standardized by Ecma International in the documenECMA-262
ECMAScript is commonly used for client-side scriptin ...
language standard, for example,
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
.
Just-in-time compilation engines
These are new generation ECMAScript engines for web browsers, all implementing
just-in-time compilation
In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compiler, compilation during execution of a program (at run time (program lifecycle phase), run tim ...
(JIT) or variations of that idea. The performance benefits for just-in-time compilation make it much more suitable for web applications written in
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
.
*
Carakan: A JavaScript engine developed by
Opera Software ASA, included in the
10.50 release of the
Opera
Opera is a form of theatre in which music is a fundamental component and dramatic roles are taken by singers. Such a "work" (the literal translation of the Italian word "opera") is typically a collaboration between a composer and a libre ...
web browser, until switching to
V8 with Opera 15 (released in 2013).
*
Chakra (JScript9): A
JScript
JScript is Microsoft's legacy software, legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer 11 and older.
JScript is implemented as an Active Scripting engine. This means that it can be "plugged in" to OLE Aut ...
engine used in
Internet Explorer
Internet Explorer (formerly Microsoft Internet Explorer and Windows Internet Explorer, commonly abbreviated IE or MSIE) is a series of graphical user interface, graphical web browsers developed by Microsoft which was used in the Microsoft Wind ...
. It was first previewed at
MIX 10 as part of the Internet Explorer 9 Platform Preview.
*
Chakra
Chakras (, ; sa , text=चक्र , translit=cakra , translit-std=IAST , lit=wheel, circle; pi, cakka) are various focal points used in a variety of ancient meditation practices, collectively denominated as Tantra, or the esoteric or ...
: A
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
engine previously used in older versions of
Microsoft Edge
Microsoft Edge is a proprietary, cross-platform web browser created by Microsoft. It was first released in 2015 as part of Windows 10 and Xbox One and later ported to other platforms as a fork of Google's Chromium open-source project: Android ...
, before being replaced by V8.
*
SpiderMonkey
SpiderMonkey is the first JavaScript engine, written by Brendan Eich at Netscape Communications, later released as open source and currently maintained by the Mozilla Foundation. It is used in the Firefox web browser.
History
Eich "wrote Ja ...
: A JavaScript engine in Mozilla
Gecko
Geckos are small, mostly carnivorous lizards that have a wide distribution, found on every continent except Antarctica. Belonging to the infraorder Gekkota, geckos are found in warm climates throughout the world. They range from .
Geckos ar ...
applications, including
Firefox
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and ...
. The engine currently includes the IonMonkey compiler and OdinMonkey optimization module, has previously included the TraceMonkey compiler (first JavaScript JIT) and JägerMonkey.
*
JavaScriptCore
WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as on the iOS and iPadOS version of any web browser. WebKit is also used by the BlackBerry Browser, PlayStation consoles beginning from the PS ...
: A JavaScript interpreter and JIT originally derived from
KJS. It is used in the
WebKit
WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as on the iOS and iPadOS version of any web browser. WebKit is also used by the BlackBerry Browser, PlayStation consoles beginning from the ...
project and applications such as
Safari
A safari (; ) is an overland journey to observe wild animals, especially in eastern or southern Africa. The so-called "Big Five" game animals of Africa – lion, leopard, rhinoceros, elephant, and Cape buffalo – particularly form an importa ...
. Also known as Nitro, SquirrelFish, and SquirrelFish Extreme.
*
JScript .NET
JScript .NET is a .NET programming language developed by Microsoft.
The primary differences between JScript and JScript .NET can be summarized as follows:
Firstly, JScript is a scripting language, and as such programs (or more suggestively, ...
: A
.NET Framework
The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
JScript
JScript is Microsoft's legacy software, legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer 11 and older.
JScript is implemented as an Active Scripting engine. This means that it can be "plugged in" to OLE Aut ...
engine used in
ASP.NET based on
Common Language Runtime
The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET Framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code (compiled intermediate language code) into machine instruc ...
and
COM Interop. Unfortunately support was dropped with
.NET Core
The domain name net is a generic top-level domain (gTLD) used in the Domain Name System of the Internet. The name is derived from the word ''network'', indicating it was originally intended for organizations involved in networking technologies ...
and
CoreCLR
The domain name net is a generic top-level domain (gTLD) used in the Domain Name System of the Internet. The name is derived from the word ''network'', indicating it was originally intended for organizations involved in networking technologies ...
so its future looks questionable for
ASP.NET Core.
*
Tamarin
The tamarins are squirrel-sized New World monkeys from the family Callitrichidae in the genus ''Saguinus''. They are the first offshoot in the Callitrichidae tree, and therefore are the sister group of a clade formed by the lion tamarins, Go ...
: An
ActionScript
ActionScript is an object-oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe). It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript (meani ...
and ECMAScript engine used in
Adobe Flash
Adobe Flash (formerly Macromedia Flash and FutureSplash) is a multimedia software platform used for production of animations, rich web applications, desktop applications, mobile apps, mobile games, and embedded web browser video players. Fla ...
.
*
V8: A JavaScript engine used in
Google Chrome
Google Chrome is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macO ...
and other
Chromium
Chromium is a chemical element with the symbol Cr and atomic number 24. It is the first element in group 6. It is a steely-grey, lustrous, hard, and brittle transition metal.
Chromium metal is valued for its high corrosion resistance and h ...
-based browsers,
Node.js
Node.js is an open-source server environment. Node.js is cross-platform and runs on Windows, Linux, Unix, and macOS. Node.js is a back-end JavaScript runtime environment. Node.js runs on the V8 JavaScript Engine and executes JavaScript code ou ...
,
Deno, and V8.NET.
*
GNU Guile
GNU Ubiquitous Intelligent Language for Extensions (GNU Guile) is the preferred extension language system for the GNU Project and features an implementation of the programming language Scheme. Its first version was released in 1993. In additio ...
features an ECMAScript interpreter as of version 1.9
*
Nashorn
''Nashorn'' (, German for "rhinoceros"), initially known as ''Hornisse'' (German " hornet"), was a German ''Panzerjäger'' ("tank hunter") of World War II. It was developed as an interim solution in 1942 by equipping a light turretless chassis ...
: A JavaScript engine used in
Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The wor ...
Java Development Kit
The Java Development Kit (JDK) is a distribution of Java Technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java ...
(JDK) since version 8.
* iv, ECMAScript Lexer / Parser / Interpreter / VM / method JIT written in C++.
* CL-JavaScript: Can compile JavaScript to machine language on Common Lisp implementations that compile to machine language.
* BESEN: A complete JIT-compiling implementation of ECMAScript Fifth Edition written in Object Pascal.
* Hermes: developed by
Facebook
Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dustin ...
for
React Native
React Native is an open-source UI software framework created by Meta Platforms, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows and UWP by enabling developers to use the React framework along ...
mobile apps
* Graal.js: An ECMAScript compliant JavaScript engine for
GraalVM
GraalVM is a Java VM and JDK based on HotSpot/OpenJDK, implemented in Java. It supports additional programming languages and execution modes, like ahead-of-time compilation of Java applications for fast startup and low memory footprint. The ...
which supports language interoperability that can also execute Node.js applications.
Runtime interpreter engines
The following engines use runtime interpreters, which do not compile into native machine code and generally run more slowly:
* Continuum: A
self-interpreter
In computer science, an interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program. An interprete ...
that supports older drafts of the ECMAScript 2015 specification. Uniquely, the engine is implemented in ECMAScript 3, which made it possible to run ES2015 in browsers as old as IE6.
*
Futhark
Runes are the letters in a set of related alphabets known as runic alphabets native to the Germanic peoples. Runes were used to write various Germanic languages (with some exceptions) before they adopted the Latin alphabet, and for specialised ...
: The ECMAScript engine of the
Opera
Opera is a form of theatre in which music is a fundamental component and dramatic roles are taken by singers. Such a "work" (the literal translation of the Italian word "opera") is typically a collaboration between a composer and a libre ...
web browser versions 9.50 to 10.10.
*
InScript: An obsolete
proprietary library used for
iCab
iCab is a web browser for Mac OS by Alexander Clauss, derived from Crystal Atari Browser (CAB) for Atari TOS compatible computers. It was one of the few browsers still updated for the classic Mac OS prior to that version being discontinued aft ...
2 and 3.
*
JScript
JScript is Microsoft's legacy software, legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer 11 and older.
JScript is implemented as an Active Scripting engine. This means that it can be "plugged in" to OLE Aut ...
: The engine that is used in
Internet Explorer
Internet Explorer (formerly Microsoft Internet Explorer and Windows Internet Explorer, commonly abbreviated IE or MSIE) is a series of graphical user interface, graphical web browsers developed by Microsoft which was used in the Microsoft Wind ...
for versions up to IE9, and one component of the
MSHTML
Trident (also known as MSHTML) is a proprietary browser engine for the Microsoft Windows version of Internet Explorer, developed by Microsoft.
MSHTML debuted with the release of Internet Explorer 4 in 1997. For versions 7 and 8 of Internet ...
(Trident)
browser engine
A browser engine (also known as a layout engine or rendering engine) is a core software component of every major web browser. The primary job of a browser engine is to transform HTML documents and other resources of a web page into an interactiv ...
.
* Jint: Javascript interpreter with integrated engine for .NET
*
KJS: The engine used in
Konqueror
Konqueror is a free and open-source web browser and file manager that provides web access and file-viewer functionality for file systems (such as local files, files on a remote FTP server and files in a disk image). It forms a core part of ...
, and one component of
KHTML
KHTML is a browser engine developed by the KDE project. It is the default engine of the Konqueror browser, but it has not been actively worked on since 2016. Moreover, KHTML will be discontinued for KDE Frameworks 6.
Built on the KParts fra ...
, a predecessor to JavaScriptCore.
*
Linear B: The ECMAScript engine of the
Opera
Opera is a form of theatre in which music is a fundamental component and dramatic roles are taken by singers. Such a "work" (the literal translation of the Italian word "opera") is typically a collaboration between a composer and a libre ...
web browser versions 7.0 to 9.50, exclusive.
* Narcissus: JavaScript implemented in JavaScript (a
meta-circular evaluator In computing, a meta-circular evaluator (MCE) or meta-circular interpreter (MCI) is an interpreter which defines each feature of the interpreted language using a similar facility of the interpreter's host language. For example, interpreting a lambd ...
), intended to run in another JavaScript engine, of theoretical and educational nature only.
* JS-Interpreter A lightweight JavaScript interpreter implemented in JavaScript with step-by-step execution.
*
QtScript
QtScript is a scripting engine that has been part of the Qt cross-platform application framework since version 4.3.0.
The scripting language is based on the ECMAScript standard with a few extensions, such as QObject-style signal and slot connect ...
: Originally developed by Trolltech, now owned by
The Qt Company
The Qt Company (pronounced "cute"; formerly Trolltech and Quasar Technologies) is a software company based in Espoo, Finland. It oversees the development of its Qt application framework within the Qt Project. It was formed following the acqui ...
. It provides QObject integration with JavaScriptCore.
* V4 (QJSEngine): Qt's newer ECMAScript engine, powering QML and QtQuick. ES6-compliant and under active development at
The Qt Company
The Qt Company (pronounced "cute"; formerly Trolltech and Quasar Technologies) is a software company based in Espoo, Finland. It oversees the development of its Qt application framework within the Qt Project. It was formed following the acqui ...
. V4 is JIT compiled.
*
Rhino
A rhinoceros (; ; ), commonly abbreviated to rhino, is a member of any of the five extant species (or numerous extinct species) of odd-toed ungulates in the family Rhinocerotidae. (It can also refer to a member of any of the extinct species ...
: One of several JavaScript engines from
Mozilla
Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, w ...
, using the
Java platform
Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cro ...
.
* YAJI: An ECMAScript engine based on the FESI implementation by Jean-Marc Lugrin in 1999, using the
Java platform
Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cro ...
, currently being developed to support the latest standards (ECMAScript spec. 262, v5.1).
* Microvium: JavaScript engine for microcontrollers, supporting a restricted subset of the ECMAScript specification, using less than 16kB of flash memory and 64B of RAM while idle.
* Duktape: A small footprint, easily embeddable Ecmascript E5/E5.1 engine.
* XS JavaScript Engine: An ECMAScript 2020-compliant engine for microcontrollers with limited resources. XS is maintained by Moddable as part of the Moddable SDK and was formerly part of the
Kinoma Platform.
*
Jsish: An ES5.1 subset interpreter with builtin SQLite, JSON, WebSocket, and ZVFS support.
* Websocket.js: An embeddable Javascript engine with HTTP/Websocket support.
*
Espruino: A very small footprint interpreter specifically for
microcontroller
A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs ( processor cores) along with memory and programma ...
s. Can run in less than 8 kB of RAM by executing from source (rather than
bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (norma ...
).
* MuJS: A lightweight ECMAScript interpreter library, designed for embedding in other software to extend them with scripting capabilities. Originally developed for
MuPDF
MuPDF is a free and open-source software framework written in C that implements a PDF, XPS, and EPUB parsing and rendering engine. It is used primarily to render pages into bitmaps, but also provides support for other operations such as search ...
.
* mJS: Restricted JavaScript engine. Used for Internet of Things (IoT).
* Tiny-JS: A minimal JavaScript interpreter written in C++.
* JerryScript: A lightweight JavaScript engine by Samsung for microcontrollers with less than 64 KB RAM.
* njs: A lightweight JavaScript interpreter optimized for web server scripting and fastest VM context creation; used in
nginx
Nginx (pronounced "engine x" ) is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software ...
.
* QuickJS: A lightweight ECMAScript 6 interpreter by
Fabrice Bellard
Fabrice Bellard (; born 1972) is a French computer programmer known for writing FFmpeg, QEMU, and the Tiny C Compiler. He developed Bellard's formula for calculating single digits of pi. In 2012, Bellard co-founded Amarisoft, a telecommunication ...
and Charlie Gordon.
* engine262: A JavaScript engine written in JavaScript for development and exploration. It is primarily used to validate the ECMAScript specification.
* Boa: A JavaScript engine written in
Rust
Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH), ...
.
*ScriptEase: an old proprietary engine last updated in 2003. Only notable for its use in the
James Webb Space Telescope
The James Webb Space Telescope (JWST) is a space telescope which conducts infrared astronomy. As the largest optical telescope in space, its high resolution and sensitivity allow it to view objects too old, distant, or faint for the Hubble ...
.
See also
*
JavaScript engine
A JavaScript engine is a software component that executes JavaScript code. The first JavaScript engines were mere interpreters, but all relevant modern engines use just-in-time compilation for improved performance.
JavaScript engines are typica ...
*
Comparison of application virtualization software
Application virtualization software refers to both application virtual machines and software responsible for implementing them. Application virtual machines are typically used to allow application bytecode to run portably on many different comput ...
References
{{DEFAULTSORT:Ecmascript Engines
*
Lists of software
JavaScript engines