JavaScript shogun deflects Google's mid-air Dart attack

QCon 2012 Google might be pressing on solo with JavaScript-killer Dart, but those backing JS reckon their language - while not perfect - will thrive for another 25 years.

Allen Wirfs-Brock, editor of the ECMAScript 5 standard, thinks JavaScript will expand beyond its web stronghold, thanks to the use of browsers to run apps in a dawning post-PC era.

"Look at the role JavaScript has in the web application platform: it's far from perfect, but it's getting the job done, and think about what it would take to replace JavaScript?" Wirfs-Brock said at QCon London 2012. "JavaScript is there; it's not clear how anything else can take its place."

There is, of course, the small matter of Google's Dart, a blended combination of JavaScript and Scala unveiled by the ads'n'search giant in October 2011. Dart is supposedly a language for the web that's capable of overcoming the limitations and shortcomings of JavaScript and building a better internet.

Unlike many new languages that are born and quickly die or fade into obscurity, Dart is alive. Test versions of Chromium, the open-source browser that feeds into Google's Chrome, appeared in February featuring a Dart Virtual Machine capable of running programs built using the language.

Until now, Dart had converted code to JavaScript to run in existing Javascript VMs in the browser. Not anymore. "Over time, these programs will take advantage of the VM's faster performance and lower startup latency," the Chromium blog said here.

Google has come up with Dart because it thinks JavaScript suffers from "fundamental flaws"; its goal is to make Dart the lingua franca of web development. Google's got a particular problem with the lack of clear and consistent tools, libraries and frameworks for JavaScript, things that tend to hinder the construction of large-scale apps beloved of Google.

When it comes to selling Dart, Google's working both sides of the street. As a member of Brock's ECMA technical committee TC39, Google is playing the good citizen by helping to develop JavaScript, but it also wants to convince fellow browser makers that they should stick Dart in.

"What browser manufacturers have you heard show interest in Dart," Wirfs-Brock asked The Reg slipping in to rhetorical-question mode at QCon. Er, nobody.

Darts thrown

In fact, Dart in Internet Explorer, Firefox and Safari would be a major technology coup; Chrome is the biggest and arguably strongest growing rival to browsers from Microsoft, Mozilla and Apple both on terms of project roadmap. Such an inclusion would show technology leadership by Google in an important and sensitive area of web development and performance. Microsoft's only just come around to full HTML.

"What would it take to motivate all the major browser implementations to implement Dart in timely enough manor to have any impact," Wirfs-Brock continued.

Google does have scale on its size. It has a browser that's at least growing, unlike others, and it's the owner of influential web real estate from ads and search to email, docs and video. Arguably, all Google needs to do is sit still and let the web come to it.

Sweet harmony

That's where Wirfs-Brock reckons ECMAScript Harmony could come in. Harmony is an over-used and somewhat lazy codename for technology projects; in this context, however, it denotes the permanently "next" version of the ECMAScript standard that underpins JavaScript.

Harmony's goals include making the language better for writing complex applications and libraries, including - it seems - writing the Document Object Model (DOM) code (which manages the elements on a web page) in native JavaScript. "There were things done in the DOM that were important to do in JavaScript, so you couldn't implement the DOM as a JavaScript library. We are making sure the language is able to support the DOM," Wirfs-Brock said.

A Mozilla research project has already tried re-implement the HTML5 DOM in JavaScript, but it seems to have slowed down or been stopped. Project member David Flanagan recently told The Reg by email he'd become involved in another project that was taking his time and called Dom.js "incomplete". However, he reckoned Dom.js would "become much more robust" as Mozilla's larger Servo Project for a "parallel browser engine" develops.

Wirfs-Brock was sanguine about the project, suggesting that "these things start and stop", but stressed native DOM would be a major step forwards for performance. "The more we can implement in JavaScript the less interoperability overhead and more flexible and extensible the environment is," he said.

Broad goals for Harmony are modularity and better abstraction capabilities. There's a discussion about whether JavaScript should be a functional or Object-Oriented language and also a debate about how permissive the language should remain and about security.

When it comes down to actual features in Harmony, these will include: sandboxes and module loaders, array comprehensions, binary data objects, built-in hash maps and sets, and super-method calls. Some of these, such as block scoping, array comprehension, maps and proxy, have already made it into browsers, specifically Firefox and Chrome between 2006 and 2008. Elsewhere "some of these details aren't really pinned down yet," Wirfs-Brock says.

In the meantime, there's no date for Harmony, although you can expect to be using Harmony's features in five to six years from now. Ahead of that, ECMAScript 6 is expected to be formalised by the end of 2013 when Wirfs-Brock also expects most browsers will be running ECMAScript 5.

Meanwhile, Google marches on with Dart.

The future meets JavaScript

Speaking at QCon last week, Wirfs-Brock reckoned that if there's a danger to JavaScript it'll be from the ECMAScript standards process, which could make JavaScript irrelevant to the needs of developers or chuck in the wrong things. ECMAScript 4 was considered a bit of a disaster and version 5 a success because it got everybody on track again.

And while Google pushes the Dart VM performance factor, Wirfs-Brock believes the performance problem for the language Google wants to replace has been solved, thanks in part to the break-neck work of JavaScript engine makers, who turned out with V8, Webkit, Spidermonkey and Chakra a few years back.

"People heard a lot about JavaScript performance - it's been a big area of emphasis for JavaScript engine implementers in last couple of years. For the moment, the JavaScript performance issues have been solved," Wirfs-Brock said.

Maybe JavaScript has done enough to hold onto its kingdom and to keep Dart at arm's length. And maybe not. ®