Google's Dart Takes Aim at Improving Web Programming

Google introduces Dart, its new language for structured Web programming.

Google has introduced an early preview of Dart, which the company refers to as a class-based optionally typed programming language for building Web applications.

Google announced the Dart preview at the Goto Conference in Aarhus, Denmark, where Google engineers Lars Bak and Gilad Bracha were scheduled to present an opening keynote for the event on Oct. 10.

In an October 10 blog post, Bak said Dart's design goals are:

  • Create a structured yet flexible language for web programming.
  • Make Dart feel familiar and natural to programmers and thus easy to learn.
  • Ensure that Dart delivers high performance on all modern web browsers and environments ranging from small handheld devices to server-side execution.

Moreover, Bak said "Dart targets a wide range of development scenarios: from a one-person project without much structure to a large-scale project needing formal types in the code to state programmer intent. To support this wide range of projects, Dart has optional types; this means you can start coding without types and add them later as needed. We believe Dart will be great for writing large web applications."

In his post, Bak added:

""Dart code can be executed in two different ways: either on a native virtual machine or on top of a JavaScript engine by using a compiler that translates Dart code to JavaScript. This means you can write a web application in Dart and have it compiled and run on any modern browser. The Dart VM is not currently integrated in Chrome but we plan to explore this option.""

The Dart language comes with a set of basic libraries and tools for checking, compiling, and running Dart code, Bak said. The language and some preliminary tools are available as open source at, he said.

Inviting developers to kick Dart's tires and help Google evolve the language, Bak said, "We look forward to rapidly evolving Dart into a solid platform for structured web programming."

Google's Bracha is the creator of the Newspeak programming language and a software engineer at Google. Previously, he was a vice president at SAP Labs, a distinguished engineer at Cadence, and a computational theologist and distinguished engineer at Sun Microsystems. He is co-author of the Java Language Specification, and a researcher in the area of object-oriented programming languages. Prior to joining Sun, he worked on Strongtalk, the Animorphic Smalltalk System. He is often seen on panels of industry luminaries discussing the future of languages and programming.

Meanwhile, Bak is known as "a veteran virtual machinist." He has designed and implemented object-oriented virtual machines, and worked on such projects as: Beta, Self, Strongtalk, Sun's HotSpot, OOVM Smalltalk and Google's V8 engine for the Chrome browser.

A technical overview on the Dart language site, said,

""Dart programmers can optionally add static types to their code. Depending on programmer preference and stage of application development, the code can migrate from a simple, untyped experimental prototype to a complex, modular application with typing. Because types state programmer intent, less documentation is required to explain what is happening in the code, and type-checking tools can be used for debugging.""

Moreover, Google notes that with existing languages, the developer is forced to make a choice between static and dynamic languages. Traditional static languages require heavyweight tool chains and a coding style that can feel inflexible and overly constrained.

In addition, Google further explained the design goals for Dart by describing the issues web developers face today:
Small scripts often evolve into large web applications with no apparent structure-they're hard to debug and difficult to maintain. In addition, these monolithic apps can't be split up so that different teams can work on them independently. It's difficult to be productive when a web application gets large.
  • Scripting languages are popular because their lightweight nature makes it easy to write code quickly. Generally, the contracts with other parts of an application are conveyed in comments rather than in the language structure itself. As a result, it's difficult for someone other than the author to read and maintain a particular piece of code.