Dart je programovací jazyk, který byl původně vyvinut Googlem a následně mu byl udělen standard ECMA. Používá se pro stavbu webových, serverových a mobilních aplikací.
Jedná se o objektově orientovaný jazyk založený na třídách. Používá syntax ve stylu C, která se dá volitelně transkompilovat do JavaScriptu. Podporuje interface, mixiny, abstraktní třídy nebo například statické typování.
Existují tři základní možnosti, jak lze spustit Dart kód.
Pro spuštění v běžných webových prohlížečích se Dart spoléhá na kompilaci zdroj-do-zdroje do JavaScriptu. Dart byl původně vyvinut tak, aby bylo jednoduché v něm psát a byl tak vhodný pro moderní vývoj aplikací a použití ve vysoce výkonných implementacích.
Při spouštění Dart kódu ve webovém prohlížeči dochází k před-kompilaci do Javascriptu za pomoci dart2js kompilátoru. Takto zkompilovaný je Dart kód kompatibilní se všemi hlavními webovými prohlížeči, takže není třeba prohlížeče nijak upravovat. Díky optimalizaci kompilovaného JavaScriptového výstupu za účelem vynechání zbytečných kontrol a operací se může stát, že Dart kód běží rychleji nežli ekvivalentní kód ručně psaný přímo v JavaScriptu.
Dart SDK obsahuje samostatně stojící Dart VM, což umožňuje Dart spouštět v prostředí příkazové řádky. Vzhledem k tomu, že nástroje jsou často psané v Dartu, je toto použití kritickou součástí SDK. Tyto nástroje obsahují dart2js kompilátor a správce balíčků nazývaného pub. Dart obsahuje kompletní standardní knihovnu, která uživatelům umožňuje psát plně funkční systémy aplikací, jako například kustomizované webové servery.
Dart kód může být předkompilovaný do strojového kódu. Aplikace postavené za použití Flutter, SDK pro mobilní aplikace vyvinutého v Dartu, jsou nahrávány do aplikačních obchodů v této formě.
Google zavedl Flutter pro nativní vývoj mobilních aplikací jak pro Android, tak pro iOS. Flutter je SDK pro tvorbu mobilních aplikací, které je doplněno o Framework, widgety a nástroje, které vývojářům dávají možnost stavět a deployovat mobilní aplikací. Flutter pracuje s Firebase a dalšími SDK pro tvorbu mobilních aplikací a je open-sourcový.
Snapshoty jsou součástí jádra Dart VM. Jedná se o soubory, které ukládají objekty a další data ohledně spuštění.
Dart programy mohou být kompilovány do snapshot souborů. Tyto soubory obsahují veškerý programový kód a závislosti, které jsou před-parsované a připravené ke spuštění. Díky tomu je možné maximálně rychlé spuštění.
Jádrové knihovny Dart mohou být kompilovány do snapshot souboru, což umožňuje rychlé načítání knihoven. Většina standardních distribucí hlavního Dart VM má přednastavené snaphoty pro hlavní knihovny, které jsou při spuštění používány.
Dart je velmi asynchronním jazykem. Dokáže použít izoláty pro paralelní spuštění. Vzhledem k tomu, že si izoláty posílají zprávy, je potřeba najít způsob, jakým serializovat zprávu. To je vyřešeno za pomoci snapshotů, které jsou zobecněné z daného objektu a to je následně předáno dalšímu izolátu pro deserializaci.