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:
- CPU architecture specific.
- Lack of rich APIs / native widget / platform bindings.
- Chrome only, not an open standard.
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.