Node.js is server-side platform for running networking and server-side applications. It was developed by Ryan dahl and other developers working at Joyent in 2009. It is a platform built on Google Chrome’s V8(Javascript) Engine for easy building of fast, scalable network applications.

According to wikipedia,

Node.js is an open source, cross platform runtime environment for server-side and networking applications. Node.js applications are written in JavaScript and can be run within the Node.js runtime on OS X, Microsoft Windows, Linux, FreeBSD,  Nonstop, IBM AIX,IBM System z and IBM i. Its work is hosted and supported by the Node.js Foundation, a Collaborative Project at Linux Foundation.

Node.js uses non-blocking API, means it never waits for another API for data. It simply calls another API and a notification mechanism is initiated for the previous API.

If you don’t understand the above concept, lets dig deeper with an example, Suppose many clients initiates a request to a server and server initiates a separate thread for every new request, what happens is that a lot of memory is wasted on executing these separate threads. On contrary, node.js server applications executes on a single thread with event looping mechanism. Thus node.js type server handles many light-weighted requests on a single thread.

Following are some features of node.js:

Asynchronous and event driven: Node.js is asynchronous means it never waits for another request or API and simply moves on to another API.

Fast: It is very fast as compared to traditional server engines like Apache HTTP server.

Single threaded: Node.js applications runs on single thread model of execution as compared to traditional server applications in which a separate thread is initiated for every new request.

Highly Scalable: Though node.js applications are single threaded, they are highly scalable and fast.

I/O type applications, data streaming applications, JSON based applications and single page applications are some application model in which node.js is used extensively whereas it is recommended not to use node,js for CPU-intensive applications.