Dart (programozási nyelv)

A Wikipédiából, a szabad enciklopédiából
Dart

Paradigmaopcionálisan típusos
Jellemző kiterjesztés.dart
Megjelent2011. október 10. (4584 napja)
Tervező
  • Lars Bak
  • Kasper Lund
FejlesztőLars Bak
KiadóGoogle Inc.
Utolsó kiadás2.9.3[1] (2020. szeptember 8. (1328 napja))
Fordítóprogramdart2js
Hatással volt ráJava, JavaScript, CoffeeScript, Go
Operációs rendszerplatformfüggetlen
LicencBSD licenc
Weboldal

A Dart (eredeti neve: Dash) a Google által fejlesztett, webes programozási nyelv. Hivatalosan a 2011. október 10-12 között megrendezett, aarhusi GOTO konferencián jelentették be.[2]

A Dart célkitűzése a webböngészőkszkriptnyelvének, a JavaScriptnek a lecserélése. Kísérletet tesznek a JavaScript problémáinak megoldására (ami, egy kikerült belső levél szerint nem oldható meg a JavaScript továbbfejlesztésével[3]), miközben a nyelv jobb teljesítményt nyújt (ez a tervezési célok közé tartozik), könnyebben lehet fejlesztőeszközöket alkalmazni a nagyobb szabású projektekhez, és egyben biztonságosabb is.[4] Fejlesztenek egy felhő-alapú IDE-t, a Brightlyt, ami talán az első Dart alkalmazás lesz. A Google tervei szerint a Chrome tartalmazni fog natív Dart virtuális gépet (már létezik egy ilyen Chromium-fejlesztési ág[5]), és arra biztatja a többi gyártót, hogy ők is építsék bele a böngészőbe. A Dart VM és a Dart Cross Compiler (egyrészt a Dart kód ECMAScript 3-ra való röpfordításához, hogy a nem-Dart böngészőkkel is kompatibilisek maradjanak, másrészt a típusos Closure kód Dartra konvertálásához[6]) 2011 vége felé jelenhet majd meg.[4]

Használata[szerkesztés]

Három fő lehetőség létezik a Dart programkód futtatására:

JavaScriptre lefordítva: Dart kód böngészőben történő futtatásakor az elsődlegesen használni javasolt mechanizmus az, hogy a kódot elő-fordítják JavaScript nyelvre a dart2js compiler segítségével. JavaScriptre fordítva a Dart nyelvű kód az összes elterjedtebb böngészővel kompatibilis, nem szükséges a böngészőkben semmi változtatást végrehajtani. A lefordított JavaScript kimenet optimalizálása szükséges lehet a „drága” ellenőrzések és műveletek elkerülésére, ennek ellenére a Dart kód néha gyorsabban lefut, mint a megegyező funkcionalitású kézzel írt JavaScript kód.[7]

A Dartium böngészőben: A Dart SDK tartalmaz egy módosított Chromium webböngészőt, ami tartalmaz egy Dart virtuális gépet. Ez a böngésző képes a Dart kód közvetlen, JavaScriptre való fordítás nélküli lefuttatására. Jelenleg a böngészőt nem ajánlják általános célú használatra, csak a Dart alkalmazások tesztelésének céljára.[8] Dart kód webalkalmazásokban való használatakor a jelenleg ajánlott procedúra az, hogy egy kis előtöltő JavaScript fájl („dart.js”) először ellenőrzi a Dart VM meglétét vagy hiányát, és betölti a megfelelő natív Dart vagy lefordított JavaScript kódot,[9] így garantálva a böngészőkompatibilitást.

Önállóan: A Dart SDK tartalmaz egy önállóan futtatható Dart virtuális gépet is, amivel a Dart kód parancssori környezetben is futhat. Mivel a Dart SDK programnyelvi eszközei maguk is főleg Dartban íródtak, az önálló Dart VM kritikusan fontos része az SDK-nak. Ezek az eszközök a dart2js fordítón kívül tartalmaznak egy pub nevű csomagkezelő rendszert és egy teljes általános programkönyvtárat (standard library), amivel teljes funkcionalitású rendszeralkalmazások is elkészíthetők, akár egyedi webkiszolgáló is.[10]

Futás idejű üzemmódok[szerkesztés]

A Dart programok két különböző üzemmódban futhatnak. A külön bekapcsolható, nem alapértelmezett „ellenőrzött mód” (checked mode) használatakor a futásidejű típusellenőrzés (dynamic type assertion) engedélyezve van. Ezek bekapcsolhatnak, ha a kód tartalmaz statikus típusokat, és bizonyos típusú hibákat el lehet kapni vele, ha a típusok nem egyeznek. Például ha egy metódus meg van jelölve, hogy karakterláncot fog visszaadni, de valójában egy egész típust ad vissza, a futásidejű típusellenőrzés ezt elkapja és dob egy kivételt. Az ellenőrzött módban való futás fejlesztés és tesztelés céljára javasolt.

A Dart programok alapértelmezés szerint „üzemi módban” (production mode) futnak, azaz a futásidejű típuselllenőrzés ki van kapcsolva. Ez az alapértelmezett mód, mivel jelenleg ez a leggyorsabb módja egy Dart program futtatásának.

JavaScriptre való fordítás[szerkesztés]

A dartc volt az első fordítóprogram, ami JavaScriptet állított elő Dart kódból. Ez már elavultnak tekinthető. A Frog volt a második próbálkozás egy Dart-to-JavaScript fordító elkészítésére, ezúttal Dart nyelven megírva. A Frog soha nem tartalmazta a nyelv teljes szemantikai készletét, ezért egy újabb fordítót hoztak létre dart2js néven. Szintén Dartban íródott, és a teljes Dart nyelvi specifikációt és szemantikát megvalósítja.

2013. március 28-án a Dart csapat egy blogbejegyzésében[11] azt írta, hogy a dart2js fordítóval JavaScriptre fordított Dart kód gyorsabb lefuttatja a DeltaBlue benchmarkot a kézzel írott JavaScriptnél a Chrome V8 JavaScript-motorján.[12]

Kódszerkesztők[szerkesztés]

2011. november 18-án a Google megjelentette a nyílt forrású, Eclipse komponensekre épülő Dart Editort Mac OS X-re, Windows-ra és Linux-alapú operációs rendszerekre.[13] A szerkesztő támogatja a szintaxiskiemelést, kódkiegészítést, JavaScriptre való fordítást, webes és szerveroldali Dart-alkalmazások futtatását és hibakeresését.

2012. augusztus 13-án a Google bejelentette a Dart-alapú fejlesztésre kihozott Eclipse-pluginját.[14]

A JetBrains IDE-k szintén támogatják a Dart nyelvet. Dart pluginek[15] hozzáférhetők az IntelliJ IDEA-hoz, a PhpStormhoz és a WebStormhoz. Ez a plugin sok képességgel rendelkezik, köztük szintaxiskiemeléssel, kódkiegészítéssel és -refaktoringgal, hibakereséssel.

Spark[szerkesztés]

2013 novembere óta ismert,[16] hogy a Chromium fejlesztői csapata egy Spark kódnévvel ellátott, nyílt forrású, Chrome App-alapú fejlesztői környezeten dolgozik, mely újrahasznosítható GUI widgeteket is tartalmaz.[17] Dartban fordul le a fejlesztői környezet is, és Polymer-alapú GUI widget-könyvtár is része.[18]

Böngészőtámogatás[szerkesztés]

A Dart JavaScriptre fordítható, így a Dart nyelvű alkalmazásokat a legtöbb webböngésző képes lefuttatni. A Chromium webböngésző egy speciális változata, a Dartium tartalmazza a Dart virtuális gépet.[19] Így a böngésző képes közvetlenül lefuttatni a Dart kódot. Az M1-es kiadásban a Dartból fordított JavaScript kb. 78%-át éri el a kézzel írott JavaScript kód teljesítményének, a natív Dart kód mintegy 21%-kal gyorsabb annál, V8 alatt futtatva.[7]

2013-ban a Microsoft Internet Explorer, a Mozilla Firefox, az Opera és a Safari egyikébe sem terveznek Dart virtuális gépet beépíteni.

Példakódok[szerkesztés]

A „Helló, világ!”-példa:

void main() {
  print('Hello, World!');
}

Az n. sorszámú Fibonacci-számot kiszámoló függvény:

int fib(int n) {
    return (n <= 1) ? n : (fib(n - 1) + fib(n - 2));
}

void main() {
    print('fib(20) = ${fib(20)}');
}

Jegyzetek[szerkesztés]

  1. [1]
  2. Presentation: "Opening Keynote: Dart, a new programming language for structured web programming" Archiválva 2011. október 13-i dátummal a Wayback Machine-ben - GOTO Aarhus 2011 conference. Planned official presentation of the Dart language, on October 10.
  3. "Future of Javascript" doc from our internal "JavaScript Summit" last week - Leaked internal Google email]
  4. a b Google Operating System: Dash, Google's Alternative to JavaScript
  5. Dart is on Chromium – and Dart meets Scala
  6. Google Dart to “ultimately ... replace JavaScript”
  7. a b JavaScript as a compilation target : Making it fast. Dartlang.org. [2013. november 2-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. augusztus 18.)
  8. Dartium | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.
  9. Embedding Dart in HTML | Dart: Structured web apps Archiválva 2013. november 2-i dátummal a Wayback Machine-ben. Dartlang.org. Hozzáférés ideje: 2013-07-21.
  10. An Introduction to the dart:io Library | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.
  11. Ladd, Seth. (2013-03-28) Dart News & Updates: Why dart2js produces faster JavaScript code from Dart. News.dartlang.org. Hozzáférés ideje: 2013-07-21.
  12. Dart Performance | Dart: Structured web apps Archiválva 2017. január 3-i dátummal a Wayback Machine-ben. Dartlang.org. Hozzáférés ideje: 2013-07-21.
  13. Google Releases Dart Editor for Windows, Mac OS X, and Linux. [2013. december 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. november 24.)
  14. Google Release Dart Eclipse Plugin
  15. JetBrains Plugin Repository :: Dart. Plugins.intellij.net. Hozzáférés ideje: 2013-07-21.
  16. François Beaufort: The chromium team is currently actively working...
  17. GitHub: Spark – A Chrome app based development environment
  18. Chrome Story: Spark, A Chrome App from Google is an IDE for Your Chromebook. [2016. március 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. november 24.)
  19. Dartium | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.

További információk[szerkesztés]