HVRDHVRD
NodeJS

What is Node.js

Understanding Node.js, V8 Engine, and Its Runtime Architecture

What is Node.js?

Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine that allows you to execute JavaScript code outside of a web browser.
It enables developers to build server-side applications, command-line tools, APIs, and real-time applications using JavaScript.

Why Node.js Exists:

Originally, JavaScript was designed to run in the browser to manipulate web pages and handle user interactions.
Node.js extended JavaScript to the server environment, allowing full-stack development using the same language.


Difference Between JavaScript and Node.js

FeatureJavaScript (JS)Node.js
EnvironmentBrowser (client-side)Server (Node.js runtime)
Global Objectwindowglobal
API AccessBrowser-specific (DOM, Events)Server-specific (File System, HTTP, Process)
UsageFrontend interactivityBackend apps, web servers, CLI tools
Exampledocument.getElementById()require('fs'), http.createServer()

What is a Runtime?

A runtime environment provides the infrastructure needed to execute a program.
It consists of the engine that executes code and the APIs it exposes.

Node.js Runtime

  • Provides the environment to run JavaScript on the server.
  • Includes modules to work with files, networks, processes, and more.
  • Manages the Event Loop, handling asynchronous operations without blocking.

What is ECMAScript?

ECMAScript (ES) is a standard specification that defines the scripting language specification for JavaScript.
It ensures interoperability of web pages across different web browsers and environments.

Key Points:

  • JavaScript is an implementation of ECMAScript.
  • Versions include ES5, ES6 (ES2015), ES2016, ES2017, and later.
  • Modern JavaScript features (like let, const, arrow functions, classes, Promises, async/await) are defined by ECMAScript.

Example: ECMAScript Features

// ES6 Arrow Function
const add = (a, b) => a + b;

// ES6 Class
class Person {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log(`Hello, I am ${this.name}`);
  }
}

What is the V8 Engine?

The V8 Engine is Google’s open-source high-performance JavaScript engine, originally designed for Chrome.
It compiles JavaScript directly to machine code rather than interpreting it line-by-line, making execution extremely fast.

Key Responsibilities of V8:

  • Parsing and compiling JavaScript into machine code.
  • Optimizing execution of frequently used code paths.
  • Garbage collection.

How Node.js Uses the V8 Engine

  1. Node.js embeds the V8 engine to execute JavaScript code on the server.
  2. V8 compiles the JavaScript code into optimized machine code and executes it.
  3. Node.js provides additional server-specific modules (like fs, http, process) that V8 itself doesn’t expose.
  4. Node.js exposes a single-threaded event-driven architecture that handles concurrency without blocking, using callbacks and the event loop.

Example: Simple JavaScript Execution in Node.js

console.log('Hello from Node.js powered by V8');

When running node index.js, the V8 engine compiles and executes the script efficiently.


Architecture of Node.js

+------------------+
|  Your JS Code    |
+------------------+

+------------------+
|    Node APIs     |
| (fs, http, etc.)|
+------------------+

+------------------+
|   Libuv Library  |  ← Handles async I/O (file, network, timers)
+------------------+

+------------------+
|    V8 Engine     |  ← Executes JavaScript code
+------------------+
  • Libuv is a C library that abstracts asynchronous I/O and the event loop.
  • V8 Engine handles JavaScript execution.
  • Node APIs expose useful functionality to interact with the system (file system, HTTP server, etc.).

Why V8 Matters in Node.js

  • V8 ensures fast execution by compiling JavaScript to optimized machine code.
  • Node.js leverages V8’s performance and augments it with system-level APIs.
  • The event loop + V8 + Libuv combo enables highly scalable applications that can handle thousands of concurrent connections without threads.