As an asynchronous event driven JavaScript runtime, NodeJS is designed to build scalable network applications. Many connections can be handled concurrently. Upon each connection a call-back is fired, but if there is no work to be done, Node will sleep.

This is in contrast to today's more common concurrency model where Operating System threads are employed. Thread-based networking is relatively inefficient. Furthermore, users of Node are free from worries of dead-locking of processes, since there are no locks. Almost no function in Node directly performs I/O, so the process never blocks. Because nothing blocks, scalable systems are easier to develop.

Node JS has asynchronous, event driven I/O. Every NodeJS instance runs in a single thread and due to its asynchronous nature, it can handle far more concurrent requests, compared to Apache Web Server, for example.

License: Open Source (MIT)