Home >Web Front-end >JS Tutorial >JavaScript Runtimes: Introduction to JavaScript Runtimes.
Ever wondered why JavaScript, a language specifically built for manipulating UI elements, went on to become the most widely used language? It's not just for UI manipulation anymore; JavaScript is now widely used everywhere, from front-end to back-end development, to machine learning, and beyond. Over the course of this series, we will take a deep dive into runtimes, more specifically into some popular JavaScript runtimes, and explore how these tools have enabled JavaScript to operate beyond our browsers.
In the mid-90's, the web was in its infancy. More and more websites were being hosted every day, and the web was growing at a tremendous rate due to the increasing availability of personal computing to the masses.
At that time, the web was primarily static, with no user interaction. Most people used web browsers like AOL, Yahoo, and Netscape Navigator to browse the web. Among these three browsers, Netscape was leading in both users and innovation. The team at Netscape realized that with the growing web, there was a need for two-way interaction.
To address this need, they hired Brendan Eich in April 1995 to create a new language. Eich, who had a background in Scheme and other programming languages, developed the first version of JavaScript in just ten days in May 1995 and then created the JavaScript engine for Netscape Navigator. This development marked the beginning of Web 2.0.
A JavaScript engine is simply a computer program that interprets JavaScript code. The engine is responsible for executing the code. The first JavaScript engine was developed by Brendan Eich and it was a mere interpreter. Modern JavaScript engines have evolved significantly and now use techniques like JIT (just-in-time) compilation to achieve better performance. In JIT compilation, the entire code is converted into machine code at once and then executed immediately.
Every JavaScript engine contains two basic components: a call stack and a heap. The call stack is where our code gets executed, and the heap is the place in memory where all the objects we need in our application are stored.
Google's V8 engine was the first to introduce JIT compilation and was a game changer. Currently, it is the most widely used engine, being utilized in every Chromium-based web browser, applications built using the Electron framework, runtime systems like Node.js and Deno, and any other frameworks that embed Chromium.
Apart from V8, there are other notable JavaScript engines:
In a nutshell, a runtime is a system that allows us to compile code or execute it in real-time. A JavaScript runtime is essentially a wrapper that includes the JavaScript engine, a callback queue, and a set of APIs, providing an environment to execute our JavaScript code.
We understand that a JavaScript engine is crucial for executing code, but to make it useful, we need APIs. These APIs enable our code to interact with web pages, networks, databases, and file systems. For example, web browsers provide web APIs to handle browser events and interact with the DOM, while Node.js offers APIs for I/O operations.
Now that we've covered what a runtime is, let's examine two of the most widely used and highly regarded JavaScript runtime systems for running code on servers
Node.js:
Bun.sh:
That's all for this episode. In the next episode, we'll dive deeper into Node.js origins and its core APIs for building powerful server-side applications. Stay tuned!
The above is the detailed content of JavaScript Runtimes: Introduction to JavaScript Runtimes.. For more information, please follow other related articles on the PHP Chinese website!