Google V8 based runtime environment Node.js is an open-source cross-platform project that turns JavaScript to a general-purpose language, mainly for creating  Web servers/backends. Node.js provides its own input/output API, that JavaScript lacks, thus allowing programming in JS on a whole new level, even making a creation of desktop apps possible. Google’s V8 execution engine compiles otherwise interpreted JavaScript source code into native machine code, like in C++, which it’s written in.

Ryan Dahl, Node’s original creator, had event-driven programming model in mind for the sake of simplicity and performance. JavaScript’s popularity definitely played its positive role making Node easily accessible to an enormous crowd of developers at once.

That huge popularity certainly has an advantage: loads and loads of community developed open-source libraries, addressing thousands of issues. Node’s default package manager – the npm – is responsible for consuming and distributing packages by users. Npm (written in JavaScript) was developed by Isaac Z. Schlueter, in his own views of how it should be done properly, and incorporates all his experience and analysis of competition.

As far as Node.js uses JavaScript as a programming language for back- and front-end it provides better productivity of a programmer’s work and improves code reusability. Hence, with the help of Node.js we are able to develop web applications of different complexity.

Node.js, being event-driven, uses callbacks rather than multithreading, and though vertical scaling is not available with this approach, server operating systems are able to distribute multiple threads of Node’s thread pool, that is the multitask handler here, between multiple CPU cores.

Wide spread, potent, community driven, with nice selection of supportive IDE’s, Node.js is a great tool of today and near future for building JavaScript web servers.