Javascript is eating software

NODE.JS HAS PROVIDED A CENTER OF GRAVITY TO THE JAVASCRIPT ECOSYSTEM

Node.js has been very successful in breaking JavaScript out of being primarily a browser based scripting language into a whole range of other client and server applications. The choice Ryan Dahl made in using JavaScript as the basis for his evented platform was an important inflection point for both node.js and JavaScript. It brought the ubiquity of the V8 engine (which is highly incented to run everywhere well) and therefore suitable for building applications that can run across Windows, Linux, or MacOS, client or server.

But what node.js also did was establish a center of gravity in the JavaScript ecosystem through its package manager npm. For the non-Nodies out there, Node.js has a spartan design philosophy: anything that can be left out of the core runtime should be and spun into a library. This extends to libraries as well: each library should do one thing well such that they can be composed without bloat into applications. This has led to a broad and vibrant library ecosystem whose growth is 2-4x the rate of competing ecosystems Maven (Java), NuGet (.NET), RubyGems (Ruby), and Pear (PHP) and is accelerating.

NATIVE CLIENTS ARE DRIVING WEB APP LOGIC TO THE BROWSER

Meanwhile, native client applications have greatly increased end user expectations of what makes a great application, while browser JavaScript runtime performance improvements have made ambitious and responsive browser based applications viable. These two forces are driving web applications towards executing primarily in the browser, typically delivered as a single HTML page with JavaScript orchestrating fragment transitions and fetching data on demand for the client — harmonizing the server platform around a single REST API that can serve browser and native in the process as another key win. Ambitious frameworks like ember.js, angular.js, knockout.js, and whole stack frameworks like Meteor have demonstrated that structured, realtime, and nearly native applications are now possible with JavaScript.

JAVASCRIPT AS THE ASSEMBLY LANGUAGE OF THE WEB

Finally, JavaScript is also increasingly the target for a wide range of languages which has taken its role from language to VM. These range from lighter weight syntaxes like the one popularized in CoffeeScript, to bringing the developer productivity of statically typed languages to JavaScript (TypeScript and Dart), to cross compiling almost every other language, to defining a subset of JavaScript that can run at near native speed like asm.js.

This plus VM performance improvements has enabled the growth of JavaScript down into portions of the stack that were previously dominated by native frameworks. Mozilla has recently demoed the Unreal 3D Game Engine on JavaScript, and broadway.js has opened the door to independent codec development with 30 fps decoding of H.264.

The unmistakable trend of all of this is that JavaScript is slowly seeping into the lowest levels of the web platform and across an increasing breadth of client and server. In a world where JavaScript runs everywhere, can run any type of application, and where there are frameworks and package managers to provide structure around, and ecosystem for, those applications, what is to stop JavaScript?

Post a comment