At this point, only those living under a rock for the past couple of months are unaware that Google has taken on JavaScript with its latest project, the Dart programming language.

Dart, originally named Dash, was started to “fix” the problems of JavaScript’s “fundamental flaws that cannot be fixed merely by evolving the language” by meeting the following goals:

  • Create a structured yet flexible language for web programming.
  • Make Dart feel familiar and natural to programmers and thus easy to learn.
  • Ensure that all Dart language constructs allow high performance and fast application startup.
  • Make Dart appropriate for the full range of devices on the web—including phones, tablets, laptops, and servers.
  • Provide tools that make Dart run fast across all major modern browsers.

But will it be up to the task?

Is Dart doomed to fail?

The number one question surrounding Dart is why with so many other languages out there why is Google creating yet another one? After all, Dart is not something new, it is an alternative.

Most importantly, it is an alternative to one of the most popular programming languages on the web.

So while JavaScript may have some issues, it has a large following and people aren’t going to abandon it simply to learn the next thing from Google. They’ve been burned on that before (think GO, Buzz and Wave).

Yet while developers may be hesitant to jump on the Dart bandwagon until they are sure that Google won’t abandon this project shortly down the road, others see it as a futile effort until there is more browser support. After all, who wants to develop applications for the 20% of the market who uses Chrome? Because until Microsoft, Apple, Mozilla and the others decide to natively support Dart that 20% makes up a Dart developer’s audience.

Now the market share argument may meet some resistance considering Google can, and most likely will, release a plugin for these browsers that will run Dart. However users will have to first install them.

Of course Google has thought this through and created a compiler that will translate Dart code into… native JavaScript.

That’s right, the language Dart was created to replace will serve as it’s backup.

Now mind you that the following lines of code for a simple Hello World script:

// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file

// for details. All rights reserved. Use of this source code is governed by a

// BSD-style license that can be found in the LICENSE file.

// Simple test program invoked with an option to eagerly

// compile all code that is loaded in the isolate.

// VMOptions=--compile_all

class HelloDartTest {

  static testMain() {

    print("Hello, Darter!");

  }

}

main() {

  HelloDartTest.testMain();

}

will turn into over 17,000 lines of JavaScript code when compiled. Even taking into consideration all the overhead, spacing and comments involved in this process what benefit do you gain from turning a few lines of code into thousands over writing the same few lines in JavaScript to begin with?

However the argument may be best summed up in a quote from Lars Bak, the project leader for Dart, “It’s (Dart) not going to replace JavaScript,” Bak said. “JavaScript is a cornerstone of the Web today, and it will continue to be for a long, long time.”

Should we give Dart a chance?

In Google’s defense, they claim from the onset of this project that:

The “clean break” option is extremely high risk–it will be a huge challenge to convince other browser vendors to rally around a new language–but is the only way to escape the historic problems with Javascript.

So they know that what they are getting into is not going to be without challenges.

Working in their favor, however, is the fact that Google has identified some real problems that JavaScript has and instead of building on top of what they see as a faulty foundation, they are starting from the ground up so issues and problems have a better chance of being addressed early on.

There are few companies who have the power to change the way we work, but Google is definitely one of them. And since they are going into this knowing that it will take years for Dart to really take hold in the developer community this project has a good chance at success, especially if it lives up to the lofty goals set for it.

By Jeff
Jeff is a freelance writer and the editor of Developer Drive. He writes on web development topics with a focus on web application security. In his spare time he coaches youth football and works as a technology coordinator for the Palm Beach County school district.
  • Go is actually doing very well.

    • It will take a long road to Go to go somewhere.

      Anyway about the article have a point but Dart could be compiled to javascript and it will get very tight code(Check GWT) so Apple, M$ and others does not need to know about dart cause under the covers everything still javascript.

      I wish dart success, It is an easy language as in the old days It feels as turbo pascal that you fire up and ide, code something and press the run button and you are looking something at the screen. Right now web development is tedious and slow but dart could change that.

  • Seth Ladd

    Update: a new Dart -> JavaScript compiler is being worked on, which will significantly reduce the amount of generated JavaScript: http://turbomanage.wordpress.com/2011/11/02/dart-to-js-compilation-with-frog/

  • Sorry, I’ve been working with JS for quite some time now. The more I use it compared to PHP / Java / C / C++, the more I think it needs to go! Would regular Class Construction have killed them!!!

  • Why anyone wouldn’t welcome this with open arms blows my mind. Javascript is a terrible, terrible language that should have been ironed out a long time ago but the widespread adoption of it recently just blew up too quickly for it to change.

Home XML WordPress Web Services Web Development Web Design Underscore Uncategorized Tutorial Tools SQL Server Social Apps Snippet SEO Security RoR Responsive Design Resources Python PHP News MySQL Mobile Miscellaneous jQuery JavaScript Java J2EE HTML5 HTML Design Patterns