2013-11-13

Portable Native Client - It begins

The long slow death of JavaScript as a reasonable platform for "apps" begins.

Portable Native Client: The "pinnacle" of speed, security, and portability


I've been deeply critical of HTML5 and JavaScript as a platform for general purpose applications for several years now. HTML5 is a step in the right direction as far as layout goes, but JavaScript was never intended as a target for compilers and is intrinsically inefficient.


I always felt that the push toward JavaScript-based web applications by Google was premature in that HTML5 was incapable of efficiently running applications. Even if you had a sufficiently fast machine to get reasonable performance out of a "web" application, you would do so at the expense of battery life. Assuming identical algorithms, a web application would consume far more cycles than its native equivalent for the same unit of work. This, at a time when more and more devices are battery powered and portable. The push was folly.


Up until today, Native Client had three problems:

  1. CPU architecture specific.
  2. Lack of rich APIs / native widget / platform bindings.
  3. Chrome only, not an open standard.
The first has now been addressed, once two & three are resolved, then the "web" will finally be a platform that can potentially replace modern OSs. The originally presented vision of Chrome OS was always doomed to fail. The "web" as existed at the time was not a platform where applications could be barely anything more than form-like curiosities. Anything heavy, such as IDEs, photo editors, games, would suffer embarrassing levels of performance and/or battery life.

It is my hope that, through Native Client - or similar technology, the "web" does become a cross-platform source of native applications. Such a development would be of monumental significance as finally it will be possible to deliver on the age-old promise of Java - write once, run anywhere - but without the bloat of early Java or the current web. Curated collections of applications will always have a place but the walled gardens will fall and applications, developed without comprise (unlike todays web "apps") will have a potential audience of everyone.