|
< Google Chrome: A Web Developer's Take Google Dart: A New Language for the WebHere at Rapidfyre in Walla Walla, we like to keep up with the latest tech news. Just over a week ago, Google released a developer preview of their new programming language for the web: Dart. Dart is an interesting project. It is open source, and is meant to replace JavaScript for building we applications. Its syntax is much more C or Java like than JavaScript, and it has some interesting object-oriented concepts. While I am still just scratching the surface of what Dart is and what it can do for web developers, I thought I’d share some first impressions. Dart as a JavaScript ReplacementFirst of all, Dart solves several major issues with JavaScript. For those who have used JavaScript, you probably know that JavaScript lacks a normal class-based object-oriented style. While its object-oriented functions are quite good and easy to use once you learn them, they are much different from traditional languages’ implementations, and the lack of a true class structure is annoying in a lot of web application development. Dart comes with classes, and actually relies heavily on them. Its all about the DOMAnother major issue that Dart solves is JavaScript’s painful DOM API. Many web developers, including us here at Rapidfyre, use jQuery to make interacting with the DOM (or Document Object Model) more efficient. JavaScript has some good built in DOM support in all browsers, but it is quite unwieldy. For example, to do a simple selection of an element based on its id, you would use:
document.getElementById(‘<id name>’)
This is a lot of effort, and it only gets worse the more you try to do with JavaScript's DOM API. With Dart, all that changes. Dart comes with a DOM library which makes selecting various DOM objects a breeze. Not only does Dart shorten the calls, but also streamlines how they are done. Here is the above example written in Dart:
document.query('<id name>')
In the previous example you wouldn't actually call document, you would call whatever object you created for interacting with the DOM. Another big deal in Dart's DOM library is that there are only two methods needed to select any DOM element: query() and queryAll() JavaScript on the other hand uses a seperate method for each action, such as getElementsByClass(). Of course, there is a lot more in the DOM library, so be sure to read up on it at www.dartlang.org/articles/improving-the-dom/. Beyond the DOM, Dart has several other major improvements to web programming. Among them is optional typing. In C++ and other traditional languages, you have to specify exactly what type of variable you are using (such as int for an integer, float for floating point, char for character, etc.), while in JavaScript you use the type var. Dart has the flexibility of JavaScript (allowing you to use var for all of your variables), and the control and verbosity of more traditional languages (Dart supports int, float, num, string, etc). Running DartDart is a compiled language, though not really in the traditional sense for now. Currently, Dart is compiled to JavaScript, and as such will run in most modern browsers. Google has also built a virtual machine for running compiled Dart code, but currently it’s being used server side, since no browsers are currently shipping it (though Chrome may get it in the coming months). So for now, don’t expect any advantage over JavaScript in performance. Until the virtual machine is integrated into a browser, Dart won’t really replace JavaScript, just enhance it. The nice thing is you won’t have to include a separate library like jQuery, since Dart already has an amazing selection engine, among other usually library oriented tasks. (Though there are ways to integrate JavaScript libraries into Dart if you really wanted to). The biggest downside is that when you compile to JavaScript, you are also compiling any necessary Dart libraries, which means that the application script has a lot of extra overhead. This should be negated by the fact that you no longer need separate libraries, so hopefully in the future, it will actually turn out to be more streamlined than a JavaScript equivalent. Some hidden treatsFor the past week, I’ve been working with the Dart source code. While I haven’t gotten a lot done as far as actually testing the language, I was able to successfully build all the components, including the virtual machine. I’m still looking for an easy way to use the virtual machine instead of JavaScript when compiling, but for now, the virtual machine isn’t the best way to develop in Dart anyway. While sifting through the source, I did come across a rudimentary code editor, based on the Eclipse IDE. It’s still a very rough project, and it took a lot of work to compile it, but its a great start on an editor. It supports basic code highlighting and error checking for Dart, and you can set up an HTML file and then run it in your browser. Where it standsDart is definitely an interesting language, and it is positioned to be a real help to web application developers and the open web in general. There is still a lot of work that needs to be done before it can be considered for serious development, but the foundation looks good, and if it can get standardized and added into all browsers, it could really take off. In the mean time, we here at Rapidfyre will continue to use JavaScript, but will be keeping up with the evolution of Dart. I've included links to the Dart language homepage, as well as the Google Code page, where you can download the source and start using it. |