What on earth is Google Dart?

What on earth is Dart?
Is Google declaring war on other browser makers or just trying to make the web a better place?

Dart is actually a new programming language that has been proposed and developed by Google.

Google has created the language to solve some of the issues that exist in JavaScript, but can it really replace it or will it cause headaches?

Let's find out more.

Q. Dart doesn't sound like something the world needs. Or do we?

A. Well, the specific reason for developing Dart is to make a modern language that's flexible, fast and useful in the creation of web-based applications, so it's an area of keen interest for a lot of developers and users.

Q. I thought we already had a language for that? Isn't that what JavaScript is for?

A. That's one of the key contentious issues surrounding Dart. JavaScript wasn't really created with the idea of making complicated web applications; it was designed for manipulating the DOM (Document Object Model) or, in other words, for messing around primarily with the display/interface part of the application. It wasn't really designed with foreknowledge of the tasks that are now expected of it.

Q. Well, isn't it the display part that I'm actually using in my browser?

A. When web applications were very simple, yes. But it helps to know a bit about the background here.

Before the current generation of web applications, if you wanted to do remote processing on a task, you used a client/server model. The client would connect to the server and they would exchange information, typically with the client application handling input and display, and the server doing all the heavy lifting. That's the thin-client world of computing as it was.

The trouble with this system is that keeping a persistent connection to the server is 'expensive', tying up the resources of the server. The solution was to create a kind of stateless server model, which would perform a task and return the required information, and then forget about it - like a sort of online subroutine.

This means the onus of consistency lies on the client side - the web app needs to remember what's going on, control the interface and such. As web applications have got more complex, this means more work. It's a bigger job than just rendering the information in a different font.

Q. But JavaScript has been doing that job, hasn't it?

A. Yes it has. It's really quite remarkable what things have been built with JavaScript and Ajax technologies. We're used to them now, but remember things such as Google Maps were astonishing at the time they were created.

But it isn't without its critics or problems. One of the lesser problems is that, while the user interface part of the application is in JavaScript, on the server side JavaScript isn't so good - nearly all applications are written in Java on the server side, or something similar. That doesn't seem like too much of a problem, but it's more annoying for the people who're trying to create web apps.

Also, JavaScript is fairly basic. Nearly all apps make use of a library such as JQuery to try to make things easier to create, and remain consistent among browsers. Browser compatibility is an issue, but Dart aims to include a lot of this functionality in the language itself. It's a bit of a kludge, and more inefficient than it should be.

Q. But people will still have to develop in Dart and Java?

A. Well, not necessarily. Dart is designed to be run as a virtual machine (just like Java), so there's no reason why it can't be run on the server side too. It's also designed as a real language - it has lots of constructs and features useful for making big apps, which don't exist in the same way in JavaScript.

Q. But even so, everyone will have to learn a new language - that can't be good?

A. It isn't that bad, as it borrows a lot from the familiar. It's similar to things such as Java and C, and even JavaScript in places. It wouldn't take a competent JavaScript programmer that long to grasp the basics of Dart.

And you're forgetting that it makes a lot of tricky stuff easy, because it's designed with web apps in mind. It tackles problems such as start-up time, garbage collection and threading. It's worth learning an extra bit of syntax to cut hours off development time.

DART

Q. This all sounds great. The developer community must be overjoyed!

A. Well, not exactly. You see, a lot of people have been using JavaScript for years and years, have built businesses around it, developed tools for it and know how it works. They see the introduction of a new tool as some sort of threat. So, a lot of developers are the opposite of overjoyed.

Q. Well, that's understandable. But the developers of web browsers must at least be pleased.

A. Well, no. Again, many of them see it as a threat. Remember that Google has taken a large share of the browser market already with Chrome.

If it was also to control the development of the language that everybody uses to write web apps, you can see how people might begin to think the whole thing was a bit of a stitch-up.

Mozilla has already suggested it will not be considering embedding Dart support into future versions of Firefox. Then again, Brendan Eich does work for Mozilla (and he invented JavaScript).

Q. So, it seems as if Dart will likely only ever be available in Chrome.

A. Well, I guess you have a better crystal ball than we do...

Q. Well, if the majority of developers don't want it, and the majority of browsers don't want to support it, it looks like a non-starter...

A. We respectfully submit that when it comes to web technologies, developers are not the most important people - users are. Consider a world in which you can run your applications as usual, really fast, or with extra features. Which option are you going to choose?

It isn't too hard to see a future where Google Mail, Google Docs, Google Maps and Google everything else run better or more enhanced in Chrome. Ergo, people will want to run them in Chrome. And if they see some sort of competitive advantage, other people will want their applications to run in Dart.

With the Chrome OS and the Chrome app store, Google has plenty of opportunities to deliver faster, better apps. At least, that seems to be the plan.

Q. But isn't that also rather divisive, and also what Microsoft tried to do with ActiveX and Internet Explorer?

A. Well, yes, it's a little similar. Google is being a bit more open about the technology. It's created under the revised BSD license, so the code itself is about as open as you can get.

Q. That isn't the point, if people are going to be forced into a two-tier internet.

A. No. But nobody is suggesting that people will somehow be compelled to use Dart. The thing that's often overlooked is that a lot of the world's web application developers actually work for Google. If they want to create a new tool that's better for them to use and, as a by-product, release it to the rest of the world for free, should we really be complaining?

Q. Well, it still seems like a non-starter. Why would someone build a web app that wouldn't run in the majority of browsers?

A. There's a potential workaround to that - a cross compiler that will generate JavaScript from Dart code. Although, at the moment, it doesn't work so well. A simple 'Hello world' app turns into 180k of code.

Q. Hah! So much for efficiency…

A. Well, no doubt it will improve, as that could be one of the keys to getting Dart more widely accepted outside of Google.

Q. I still can't see a future in it. And, also, Google seems rather better at shutting things down than creating new things... Buzz, Wave, Labs...

A. Well, yes. It would be a little bit of a gamble to stake your livelihood on Dart. But as mentioned previously, even if used only by Google themselves, Dart would still have a huge impact on the web, and presumably for Google themselves, whose server bills must be quite terrifying. Small efficiency savings for Google could add up to more than a banker's bonus!

Q. Even so, it seems like a thing that benefits only Google.

A. Well, the specific reason for developing Dart is to make a modern language that is flexible, fast and useful in the creation of web-based applications, so it's an area of keen interest for a lot of developers, and users.

Q. So we should watch this space…

A. You're probably right. If you want to check out the current code to the Dart language, it's hosted on, erm, Google Code (http://code.google.com/p/dart). The language itself, including some already useful documentation and some development tools (well, eclipse plug-ins) is on the main site at dartlang.org.