by Jason J

           (Image obtained from

 Node.js was developed in 2009 by Ryan Dahl it was created to address issues with efficiency of traditional  platforms which took far too long to communicate over the network, spending magnitudes of more time processing web requests and responses than other parts of applications. “Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices” (, 2013).

While its use has limited areas, it’s extremely efficient for uses it’s intended for, for that reason Node.js is used for a wide variety of businesses, including Ebay, LinkedIn, Microsoft, Twitter, and Yahoo! (, 2013). It also is fairly easy to learn, since it is based on JavaScript, which is widely known, and also uses a new and efficient runtime, “It’s based on Google’s runtime implementation — the aptly named “V8” engine. V8 and Node are mostly implemented in C and C++, focusing on performance and low memory consumption” (Tilkob and Vinoski, 2010).

Let’s look more in depth as to why Node.js exists, and what makes it so powerful, take a look at the following graph. “The chart below makes the magnitude differences even more obvious. The L1, L2, and RAM access times are so much smaller than disk and network access that their bars don’t even appear on the graph” (Kunkle, 2012).


         (Image obtained from

 It’s clear just how inefficient network operations are, but what is causing such a huge disparity?

It’s waiting, in between operations your app simply waits in between events, which take time over a network, as can be seen in the following graph.

         (Image obtained from

   Those green bars that represent actual events are tiny, all the gray areas are just waiting. There have been other ways to try to work around this in the past, either by using multiple processes, or multiple threads, but waiting still takes up a huge amount of the total time. So, how does Node.js differ?

“It extracts the “I/O waiting” by using an internal thread pool or leveraging asynchronous I/O APIs of the host operating system to free your thread for processing other connections” (Kunkle, 2012).

So how does this process look visually?


       (Image obtained from

     In short, events will be stored in the Event Queue, each time the Event Loop comes around, it will take the top item in Event Queue, which will then be processed in the Thread Pool. The best part of this whole process is that the items only wait as long as it takes for the actual work to be down, as opposed for their next logical step to finish.

The technical details obviously can go more in depth, but hopefully now you have a basic understanding of what Node.js functions as, a server-side JavaScript platform used for real-time applications.

Let’s now look at why Node.js is becoming so popular. “Since the framework was built for the commonly used JavaScript, the barriers to entry are remarkably low, and the reasons for choosing Node to build apps — especially low-latency, real-time apps — are increasingly compelling” (O’Dell, 2011). Joyent, the company managing Node.js, and home of Ryan Dahl, its creator is working hard to make a welcoming open-source community.

It also helps break the barrier between front-end and back-end developers, since Node.js is based off of JavaScript, so client-side and server-side development become quite a bit easier. ” This means that a developer (or two developers if you use pair-programming) can work on a feature from start-to-end. This eliminates the waiting for front/back-end to finish” (Graff, 2013).

Considering it was only created in 2009, many real world applications depend on Node.js, and major companies are noticing how useful it can be.

It’s astounding speed caused to be used in a contest hosted by the U.S. Defense Advanced Research Projects Agency. For this project teams had to take shredded pieces of paper, and using whatever means possible solve more than the other groups competing. The group that won used a Node.js server that allowed them to solve every single piece of shredded paper, and win the competition for $50,000 (Geller, 2012).

Ebay has taken notice of Node.js, using it in, their new data retrieval and aggregation gateway for HTTP API’s, “Subbu Allamaraju, an Architect at eBay, explains, “Through, we want to help application developers increase engineering clock speed and improve end user experience. can reduce the number of lines of code required to call multiple HTTP APIs while simultaneously bringing down network latency and bandwidth usage in certain use cases” (

LinkedIn also took note of Node.js for use in overhauling their mobile app, which previously ran using Ruby on Rails, and was experiencing serious speed issues. “The app is two to 10 times faster on the client side than its predecessor, and on the server side, it’s using a fraction of the resources, thanks to a switch from Ruby on Rails to Node.js” (O’Dell, 2011).

Another company that noticed Node.js’ usefulness is Yahoo!, who in 2011 announced their project Mojito, which allows JavaScript applications to run on both browser and server sides, requiring developers to have to do less work. Manhattan, the server side portion of Mojito uses Noded.js, ” Manhattan extends Node.JS to provide the necessary fault-isolation and fault-tolerance, scalability, availability, security and performance you’d otherwise expect from one of the largest web companies in the world” (Fernandez-Ruiz, 2011).

The most significant company to utilize Node.js is the Software giant Microsoft, which is using Node.js, along with ASP.NET and PHP in order to build sites using Windows Azure as of June 2012 ( ” Node gives Azure users the first end-to-end JavaScript experience for the development of a whole new class of real-time applications” (

Node.js is certainly not a solution that will improve all web browsing as we know it, it has limitations and it wasn’t built to do everything. Some downsides include the fact that it is completely event-driven, which can create issues, “on most OSs, for two applications to communicate through shared memory, shared memory segments provide no handles or file descriptors enabling the application to register for events” (Tilkov and Vinoski, 2010). Another issue pointed out is complexity if your program has to deal with other applications in different languages, “the sheer complexity of writing applications in certain programming languages to deal with events and asynchronous I/O. This is because different events require different actions in different contexts” (Tilkov and Vinoski, 2010).

In conclusion, Node.js is certainly a niche creation, but its usefulness in those areas it works in is amazing, by being able to go to a purely asynchronous system, it’s able to drastically increase performance in applications by lowering the amount of time spent waiting in I/O. It’s popularity is growing explosively, and major companies have quickly taken note, in only 4 years, it went from a new technology, to something that could go so far as to completely overhaul the mobile service for a major company like LinkedIn, and be picked up as a standard in Microsoft’s Windows Azure. With time the community, and total amount of experience surrounding Node.js will grow greatly and become a dependable technology for future companies to use.



eBay chooses Node.js as the runtime stack in a data-retrieval and aggregation gateway for HTTP APIs – Blog – Joyent. (2011, November). Retrieved April 17, 2013, from

Fernandez-Ruiz, B. (2011, November). Yahoo! Announces Cocktails – Shaken, Not Stirred | nineydn – Yahoo! Retrieved April 17, 2013, from

Geller, T. (2012). DARPA Shredder Challenge Solved | August 2012 | Communications of the ACM. Retrieved April 17, 2013, from

Graff, P. (2013, January). Why I use Node.js? | Petter’s Random Thoughts on Software. Retrieved April 17, 2013, from

Kunkle, J. (2012a, April). Node.js Basics Explained. NearInfinity. Retrieved April 17, 2013, from

Kunkle, J. (2012b, April). Node.js Explained. Retrieved April 17, 2013, from

node.js. (2013). Retrieved April 17, 2013, from

Node.js – Develop. (2013). Retrieved April 17, 2013, from

O’Dell, J. (2011a, March). Why Everyone Is Talking About Node. Retrieved April 17, 2013, from

O’Dell, J. (2011b, August). Exclusive: How LinkedIn used Node.js and HTML5 to build a better, faster app | VentureBeat. Retrieved April 17, 2013, from

Projects, Applications, and Companies Using Node · joyent/node Wiki · GitHub. (2013). Retrieved April 17, 2013, from,-Applications,-and-Companies-Using-Node

Tilkov, S., & Vinoski, S. (2010, December). Node.js: Using JavaSCript to Build High-Performance Network Programs. IEEEExplore. Retrieved April 17, 2013, from


4 thoughts on “Node.js

  • April 17, 2013 at 2:54 pm

    This article is written fairly well. The explanation of how node.js works in asynchronous cycles could have used a little more detailing, but overall it shows how the API is able to cut the time down significantly in situations when few computations are needed. There is one big drawback to the system that I think we should all keep in mind when thinking about implementing node.js. It is a fairly poor solution for process intensive tasks. So when a browser is requesting information from a site, the DB would be able to send information to node.js much faster than it could handle it because it is only a one thread system. This bottleneck would infect cause the system to be slower than using just Java for HTML rendering because the overall time would be delayed.

  • April 17, 2013 at 4:28 pm

    Didn’t know this existed. I like the fact that you clearly talk about this not being a platform for everything but for what it is intended, and if used properly will greatly increase times. Is this just used right now for mobile apps? Do you see single thread requesting as a good or bad way to manage applications? Obviously, not a good idea for gaming applications correct?

  • April 19, 2013 at 1:42 am

    This is a pretty advanced topic so I’m still a little fuzzy about what exactly Node.js is. That being said, from what I do understand, this kind of reminds of an operating systems topic called context switching. Context switching is basically where the CPU serves requests from other programs/services (on the local machine) while the current executing program is waiting for input from the user and thus making the most efficient use of CPU time. Node.js sounds like it’s doing something similar only the user and CPU in question here are interacting via a network/Internet connection.

  • April 29, 2013 at 5:08 pm

    So Node.js is a fast server-side scripting language/system, which is pretty cool. I wonder, in your experience with Node.js, have you encountered problems with javascript’s tendency to be very syntactically nonstandard, by comparison to other languages? In my modest experience with javascript, I’ve found that it rarely throws syntax errors and instead does something weird.

Comments are closed.