Dart (programozási nyelv)
Dart | |
Paradigma | opcionálisan típusos |
Jellemző kiterjesztés | .dart |
Megjelent | 2011. október 10. (4774 napja) |
Tervező |
|
Fejlesztő | Lars Bak |
Kiadó | Google Inc. |
Utolsó kiadás | 2.9.3[1] (2020. szeptember 8. (1518 napja)) |
Fordítóprogram | dart2js |
Hatással volt rá | Java, JavaScript, CoffeeScript, Go |
Operációs rendszer | platformfüggetlen |
Licenc | BSD 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ők fő szkriptnyelvé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]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]
- ↑ 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.
- ↑ "Future of Javascript" doc from our internal "JavaScript Summit" last week - Leaked internal Google email]
- ↑ a b Google Operating System: Dash, Google's Alternative to JavaScript
- ↑ Dart is on Chromium – and Dart meets Scala
- ↑ Google Dart to “ultimately ... replace JavaScript”
- ↑ 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.)
- ↑ Dartium | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.
- ↑ 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.
- ↑ An Introduction to the dart:io Library | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.
- ↑ 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.
- ↑ 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.
- ↑ 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.)
- ↑ Google Release Dart Eclipse Plugin
- ↑ JetBrains Plugin Repository :: Dart. Plugins.intellij.net. Hozzáférés ideje: 2013-07-21.
- ↑ François Beaufort: The chromium team is currently actively working...
- ↑ GitHub: Spark – A Chrome app based development environment
- ↑ 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.)
- ↑ Dartium | Dart: Structured web apps. Dartlang.org. Hozzáférés ideje: 2013-07-21.
További információk
[szerkesztés]- A Dart hivatalos weboldala
- Magyar nyelvű Dart közösség és fórum
- Google Dart to “ultimately ... replace JavaScript”
- 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.
- "Future of Javascript" doc from our internal "JavaScript Summit" last week - Leaked internal Google email.
- HwSw: JavaScript-versenytársat fejleszt a Google
- A Walk on the Dart Side: A Quick Tour of Dart — lecture given at Stanford University by Google software engineer, Gilad Bracha (video archive). The lecture on YouTube, a transcription
- Dart News