Node.js is a JavaScript runtime environment that is built on Chrome’s V8 JavaScript engine. It was introduced in 2009 to build fast and scalable server-side applications in JavaScript. It has the largest open source community, more than 53,000 stars on github and 1 billion plus downloads.
Before Node.js, application programmers were required to learn at least two languages, JavaScript for front-end and Java, Python, PHP or some other language for back-end. Node.js changed that and facilitated both client-side and server-side programming in JavaScript.
Alhough one can create any type of applications in Node.js, yet it really shines in:
As compared to other server-side technologies such as Java, .Net, PHP etc, Node.js is really fast because of the following reasons:
V8 engine: Node.js uses V8 Js engine of Chrome which is the fastest JS engine around. It compiles the JavaScript to machine code and executes that at an incredibly fast speed.
Non-blocking Input/Output: Node.js executes time-consuming input/output operations in asynchronous manner i.e. while the input/output operations are being performed in the background, Node.js is free to serve other requests.
Node.js provides a complete development ecosystem in the form of node packages (libraries) on npm registry and tried and tested frameworks such as Express.js, Meteor.js, Sails.js, Socket.io, Electron etc to facilitate faster application development.
On the npm marketplace, more than a million packages are registered which have more than 11 billion downloads. Each day, more than 10,000 new packages are being added to the npm marketplace.
The single-threaded architecture of Node.js ensures that there is no overhead of thread-synchronization which makes it highly scalable. With the help of tools such as pm2, any number of node instances can be started and stopped as per demand.
As compared to other server-side technologies such as Java which has a steep learning curve and requires a lot of time to master, Node.js is easier and requires less time to master.
Node.js is powering the applications of high-profile companies such as Uber, Netflix, LinkedIn, Trello, Medium, Groupon etc and has become the go-to platform for startups and tech companies around the world for developing Web-APIS, network applications, social media applications, real-time chat based applications, and desktop applications.
The major limitations of Node.js is that it can’t be used for the development of CPU intensive applications. In such applications, a single thread of Node.js gets blocked by CPU intensive operations, rendering the application unresponsive.
As Node.js is evolving, we can hope that this limitation will be resolved soon. A start has already been made in this direction by introducing the concept of worker threads in the 10.5.0 release as an experimental feature.
Jellyfish Technologies is one of the early adopters of Node.js. We started application development in Node.js in 2011. We have developed numerous Node.js applications using Express.js, Sails.js, and Electron frameworks. These apps belong to diverse domains such as social media, micro-finance, sports & leisure, e-commerce, productivity, fitness etc.