Node.js and V8 history
Talking about Node.js history, it’s talking a little bit about V8 history. But let’s start with a one line definition of what it is: Node.js is a platform built around Google Chrome V8 Javascript engine, to create lightweight, fast, scalable, event-driven and non-blocking I/O applications. So lets begin talking about Node.js origins, the V8 javascript engine.
V8 is an opensource project by Google and it is in the very core of Google Chrome browser. Its first public release was on September 2, 2008, same date Chrome’s first release was announced. It was a big step forward in browsers’ performance, and it pushed browsers’ technology to a new whole level. It’s written in C++ and its biggest revolution was that it precompiled the Javascript source code to machine code instead of just interpret it and then applied a JIT process again in runtime to improve dynamic code execution.
Ryan Dahl – Creator of Node.js
Then, around 2009, Ryan Dahl was trying to solve a tough problem in that days: making the browser know how much time of an upload process was left. Inspired by Ruby’s Mongrel webserver and by the recent release of Chrome and V8, he decided to give Javascript a chance, creating the seeds that would transform in short time into Node.js.
The project has been develop and sponsored by Joyent, company where Ryan was working. Nowadays he is still working there, but has stepped back, delegating the gatekeeper position to Isaac Schlueter on January 30, 2012.
If you are interested in further details about Ryan Dahl and how and why he decided to create Node.js, here you have a video of himself talking about that:
Historically, Javascript browser environments are limited to just one execution process / thread, making impossible to update DOM and execute some business logic simultaneously, and this also applied to V8, so, why someone would be interested in such limited and poor performance platform to run in a server environment?
Well, truth is that maybe Javascript is not the most calculation efficient language available, but its event-driven non blocking design, makes Node.js one of the lightweight platforms (runs really well in a RaspberryPI) and more performant web platforms, competing directly with the old JEE Java Platform, PHP and Ruby.
From a developer perspective, the amount of innovation the Node.js community is creating is simply astonishing, and that’s also because one of the three other key tools a Node.js developer must known: NPM.
But this is a story we will address another day.
References: