JavaScript started life as a project named Mocha created by Brendan Eich at Netscape in 1995. By the time Netscape Navigator 2.0 was due for release the language had changed names twice becoming LiveScript and then, finally, JavaScript (JS).

Originally Netscape were considering a derivative of Scheme for client side scripting, but swept up in the buzz of Sun’s Java at the time management stated that the language must look like Java. Eich famously prototyped JS in just 10 days, which is astounding given the exposure the language would receive over the course of the next 16 years.

Server Side JavaScript (SSJS) is nothing new with Netscape’s LiveWire launching in 1996 in the Enterprise Server 2.0 offering. Since then there have been a number of projects built upon the venerable Rhino engine, but it was not until recently that blistering performance has been brought to SSJS.

One such advancement is Google’s V8 JavaScript engine, which underpins Node.js.

The popularity wave that Node.js currently rides upon is mostly focussed on its efficiency. It is at its best when serving short lived requests to many clients such as instant messaging, poll or rating applications for example rather than crunching numbers on the next aircraft wing design for days on end.

A concern for the Node.js project is born out of the event driven nature it employs with each action requiring a callback. This can lead to confusing code with nested callback functions obscuring the real business goals unless it is carefully managed.

There are rivals to Node.js out there looking to fulfil your SSJS needs such as Aptana’s Jaxer (similar to LiveWire), EJScript and RingoJS among others. All of them approach the task of JavaScript on the server in slightly different ways and therefore maybe a better fit for certain situations.

All these projects share one similarity though; rapidly evolving APIs, which can lead to your projects being left behind in obsolescence unless you keep on top of the changes.

Their ease of use makes them ideal for rapid development and prototyping, but their continuous evolution should also be factored into your language selection decision.

note

This article was originally published in the March 2012 issue of .net Magazine.

The accompanying tutorial to create a Google Talk bot with Node.js is also published on my blog.

In tandem with the Google bot tutorial I wrote four smaller articles: