Will Dart ever become the language of choice?

The Dart programming language has been around since 2011 and just recently it's received a lot more attention from Google to promote it as a mainstream alternative to JavaScript. Will it ever become the language of choice for mainstream web development?

A brief history

In the beginning there was JavaScript, and the IDEs said 'I have no idea what Type that is'. The ubiquity of browser support meant everyone was able to easily learn and use it, but such large scale adoption doesn't mean something else couldn't be better. Call me old fashioned, but like many developers, I really like the tool support provided for languages with more type structure. Better tool support improves productivity, aids re-factoring and promotes better design.

The need for a type-based web development language led to GWT. At the time (2006) of it's inception this new toolset promised to revolutionise the development of web UIs. On the surface GWT had everything a Java developer could wish for, but in practise it didn't quite deliver. Many original GWT web UIs have been switched to JQuery, Bootstrap or some other JavaScript library. One problem with GWT is the impedance mismatch between Java and JavaScript. The Java code is translated to JavaScript so it can run on any browser but it's awkward and cumbersome for the translator to support all the Java programming constructs. There was another problem: the freedom of a general purpose language, Java, meant many of the same issues were solved in lots of different ways - often on the same project - just because they could.

Dart attempts to address the issues of GWT, whilst still remaining a general purpose programming language. For an example of what Dart can do, take a look here.

Dart's potential

Rule #1: The complexity of a project is a function of the number of languages used to implement it. 23 languages is too many*, 1 is perfect, but most projects are somewhere in between. (Don't ask about Rule #2. I haven't got any other rules yet.)

Node.js has demonstrated the appetite for server-side JavaScript applications because it offers the holy grail for web development - which is to provide a single language for all aspects of the application. This avoids the split brain problem where a project has a UI team competing/working with a server side team.

GWT tried, but didn't quite deliver. What makes Dart different is that it has learnt the lessons and addressed the problems from these previous attempts, but there's a fine line between success and failure when designing a new language. Dart's success doesn't only depend on how well it's able to compete with JavaScript web UI development (which it must do comprehensively) but also how well it's able to compete with Node.js, Java, C#, Ruby, Python and Go for server side development.

In 1997 Sun launched the "Java World Tour" to promote Java to every developer they could reach. This had a significant impact on the adoption of Java. Dart may need to do something equivalent to win developer's hearts and minds, whilst continuing to ensure they deliver the right technology stack.

For the Dart project to succeed the team must learn from previous work, listen to developer's needs and try to win over hearts and minds. If they get the balance right they could transform mainstream web development. I'm cautiously optimistic that I can soon get back to developing systems with 1 language, even if it's unlikely to be SmallTalk.

Update: This tweet on #dartlang suggests more server support will be announced at Google I/O in June.

* Yes, I worked somewhere once where 23 languages were used. I also worked on a large scale SmallTalk project where 1 language was used.

This site uses cookies. Continue to use the site as normal if you are happy with this, or read more about cookies and how to manage them.