Node.js

Node.js is a JavaScript runtime for building server software. Its own About page describes it as “an asynchronous event-driven JavaScript runtime” that “is designed to build scalable network applications.” Ryan Dahl introduced it at JSConf.eu 2009 in Berlin under the title “Node.js, Evented I/O for V8 Javascript.”

The defining feature is non-blocking I/O. The About page explains that “almost no function in Node.js directly performs I/O, so the process never blocks except when the I/O is performed using synchronous methods of Node.js standard library.” Instead, “Node.js simply enters the event loop after executing the input script” and “exits the event loop when there are no more callbacks to perform.” Because nothing blocks while waiting on the network or disk, the documentation notes that “scalable systems are very reasonable to develop in Node.js.”

Under the hood, Node.js embeds Google’s V8 JavaScript engine, the same engine that powers Chrome. The JSConf.eu program describes Node as combining “the V8 Javascript compiler” with an event loop to make server-side software fast. Pairing a fast JavaScript engine with an evented I/O layer is what let JavaScript — previously a browser-only language — run as a general-purpose server platform.

By making JavaScript usable on both client and server, Node.js turned it into a full-stack language and seeded a vast package ecosystem (npm) of reusable modules, which became central to how modern web applications are built.