THE 2010S

Dart

In October 2011, during the GOTO conference in Aarhus, Denmark, Lars Bak and Kasper Lund introduced a new programming language developed at Google to the public: Dart. The stated ambition was clear: to offer a credible alternative to JavaScript for web development, a language that would escape the flaws and limitations that developers criticized in the venerable JavaScript.

The two Google engineers designed Dart with one idea in mind: to unify software development across different platforms without sacrificing performance. The language’s syntax deliberately borrows from established languages like Java, C, and JavaScript, to avoid disorienting developers who would make the transition. This calculated familiarity aims to facilitate adoption: no need to relearn everything from scratch.

On November 14, 2013, Google released version 1.0 of Dart. This was the first stable release, the one that had to convince the community that Dart could indeed replace JavaScript in web applications. The following year, in July 2014, Ecma International validated the language during its 107th General Assembly and created the ECMA-408 standard. This official recognition conferred on Dart a legitimacy that a simple corporate project would not have had.

But the beginnings were not as glorious as hoped. Google harbored the ambition to integrate a Dart virtual machine directly into Chrome to boost application performance. The idea caused concern. Web developers feared a fragmentation of the web, where each browser would impose its own virtual machine. Faced with this resistance, Google backed down. In 2015, with version 1.9, the project for native browser integration was abandoned.

The story of Dart could have ended there, relegated to yet another unremarkable web language. But in 2017, Google launched Flutter, a framework for creating user interfaces that work on mobile, web, and desktop from the same source code. And Flutter chose Dart as its primary language. This alliance gave new life to the language, which finally found its true purpose: to serve as the foundation for cross-platform development.

August 2018 marked a turning point with the arrival of Dart 2.0. This version restructured the language, notably through the introduction of a much stricter type system. The code gained in safety and readability, two essential qualities for complex applications. The compiler was also overhauled to produce performant native code, enabling Flutter applications to achieve performance comparable to solutions developed specifically for iOS or Android.

Dart offers two distinct compilation modes. Ahead-of-Time (AOT) compilation transforms code into optimized JavaScript for the web, or into native machine code for mobile applications. Just-in-Time (JIT) compilation facilitates more fluid development through hot code reloading: you modify the code, and the application updates instantly without a complete restart. This flexibility considerably accelerates the development cycle.

The language adopts a resolutely object-oriented approach: everything is an object, including numbers and functions. Classes, interfaces, mixins, generics... Dart incorporates the familiar concepts of modern languages. Automatic memory management frees the developer from the tedious tasks of manual resource allocation and deallocation.

Flutter’s success pulled Dart upward. Version 2.7 introduced extension methods, which allow adding new functionality to existing types without modifying their source code. This technique proved valuable for enriching user interfaces developed with Flutter.

The ecosystem gradually expanded. The Dart SDK integrates a dart2js compiler to generate JavaScript, a static analyzer that detects errors before execution, a code formatter, and a package manager. These tools support the developer throughout the entire creation process.

Flutter’s technical approach distinguishes Dart from other cross-platform solutions. Instead of compiling to native iOS or Android code, Flutter directly draws each pixel on screen through its own rendering engine. This strategy guarantees an identical user experience across all platforms, without depending on the native graphical components of each system.

Dart’s virtual machine was designed to make the most of the language. The garbage collector manages memory efficiently, while the compiler produces code optimized for each target platform, enabling Dart applications to achieve high performance while maintaining a single codebase.

Companies of all sizes use Dart and Flutter to develop their applications. The ability to reuse code between mobile, web, and desktop represents considerable savings in time and money. Write once, deploy everywhere, with performance delivered.

Dart’s future remains closely tied to that of Flutter. Google continues to invest in both technologies, regularly releasing updates that enrich functionality and improve performance. The language evolves to meet the needs of modern development, with a constant objective: to make developers more productive.

Started as an alternative to JavaScript, Dart ultimately found its way in cross-platform development. Its association with Flutter gave it a second life and a true playground.