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í.

Různé možnosti použití

Existují tři základní možnosti, jak lze spustit Dart kód.

Kompilovaný do JavaScriptu

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.

Samostatně stojící

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.

Předkompilovaný

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ě.

Nativní mobilní aplikace

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

Snapshoty jsou součástí jádra Dart VM. Jedná se o soubory, které ukládají objekty a další data ohledně spuštění.

Snapshoty skriptů

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í.

Plné snapshoty

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.

Objektové snapshoty

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.

Výhody použití Dartu

  • Je možné ho kompilovat do JavaScriptu. Je tak bez dalších úprav kompatibilní s libovolným webovým prohlížečem.
  • Optimalizace kódu. Kompilace za využití dart2js zajišťuje redukci kódu a může dosahovat velmi dobrého výkonu.
  • Užitečné funkce. Použití mixinů, implicitních interface nebo jednořádkových funkcí může být velmi užitečné.
  • Rychlost. Virtuální stroj je velmi rychlý.
  • Robustní knihovny. Dart obsahuje robustní jádrové knihovny, které jsou přímo součástí SDK.

Nevýhody použití Dartu

  • Stabilita. Dart je méně ustálený nežli například Java.
  • Balíčky. Dart obsahuje méně balíčků nežli například Node.js.