Dart er et optionally-typed sprog fra Google der kører på sin egen VM som server-side sprog, oversætter til JavaScript og kører i en browser, eller oversætter til native kode til mobile Apps. Det blev oprindelig skabt som en direkte konkurrent til JavaScript, med sin egen VM bygget ind i browseren. Denne ambition nåede desværre aldrig længere end en udviklingsbrowser (kaldet Dartium), da man valgte at fokusere på Dart til JavaScript oversættelse i stedet. Motivationen for at skabe et helt nyt sprog var, blandt andet, at blive i stand til at få mere ydelse ud af V8-JavaScript motoren der er indbygget i Chrome browseren, samt at have et sprog der kunne understøtte udviklingen og vedligeholdelsen af relativt store kodebaser. Dart har relativt begrænset udbredelse udenfor Google, men bliver brugt heftigt indenfor. De har blandt andet omskrevet AdSense og AdWords til at køre Dart. Man skal derfor ikke være bange for at sproget forsvinder lige med det samme.

Hvordan ser det ud

Dart er et “c-like” sprog der kan sammenlignes med Java eller C#. Den obligatoriske “Hello World” ser ud på følgende måde:
Hello World
I modsætning til Java kan Dart deklarere funktioner og variable uden for klasser, så deklarationen af main kan stå alene i en fil. Dart har funktioner som “first-class citizens” og et ekstensivt collection-framework med masser af lækre funktionelle aspekter. For eksempel:
first-class citizens
Ovenstående udtryk printer alle medlemmer, hvis navne indeholder “sen”. For eksempel Jensen, Olsen, Hansen. Collections indeholder selvfølgelig også de, efterhånden obligatoriske; map, fold, reduce metoder til transformere datasæt (Collections) i Streams.

Toolset

Dart kommer med “batteries included” hvilket betyder at alle værktøjer der skal til for at bygge, køre, validere og pakkehåndtere sin sin kodebase er med. Pakkehåndteringen bliver klaret af et lille værktøj ved navn “pub” som kan hente eksterne pakke fra filstier, httpstier og sågar git repositorier. Pakkeafhængigheder styres ved hjælp af en central YAML fil. Værktøjet kan også bruges kompilere dartkode til javascript så det er klar til at deploy på en web server. I værktøjssættet finder man også en lille linter og et kodeanalyseværktøj som giver en gode råd omkring god kodestil – og hvor man har glemt det i egen kode. Der ligger også et lille formateringsværktøj som kan autoformatere ens kildekode efter en given standard.

Opsummering

Dart er i kort et særdeles vellykket forsøg på at lave et moderne typesikkert websprog der samtidig kan understøtte server-side applikationer. Udvikling i det er hurtigt og bekvemt for alle der har tidligere erfaring med JavaScript, Java eller C# og det medfølgende værktøjssæt er en naturlig og næsten uundværligt del af udviklingsprocessen som den ser ud i dag.

Se også Kim Rostgaards oplæg på Google’s Dart Developer Summit