Programmiersprache Dart soll mit Version 2 frisch durchstarten

Nach langer Ruhepause und Unsicherheit soll das für die Cliententwicklung optimierte Dart 2 frischen Wind für den JavaScript-Herausforderer bringen.

 –  25 Kommentare
Programmiersprache Dart will mit Version 2.0 frisch durchstarten

Das Dart-Team hat einen Neustart des JavaScript-Herausforderers mit Version 2 angekündigt. Das Release bringt der Sprache ein strikteres Typsystem und ist klar auf die Entwicklung für Web- und mobile Clients ausgerichtet. Das Team beruft sich auf die Erfahrung, die Entwickler vor allem mit AdWords und AdSense sowie dem Cross-Platform-Framework Flutter gesammelt haben.

Bei der Zusammenarbeit mit den für AdWords und Adsense verantwortlichen Entwicklern sind Anregungen bezüglich des Typsystems eingeflossen. Die diesbezügliche Freiheit von Skriptsprachen wie dem Dart zugrunde liegenden JavaScript, aber auch Python führen regelmäßig zu kontroversen Debatten. Einerseits befreit es Entwickler von der Notwendigkeit, bei der Variablendefinition einen Typ angeben zu müssen. Andererseits ist es eine häufige Fehlerquelle, wenn beispielsweise Zeichenketten beziehungsweise Zahlenwerte falsch verwendet werden. So beruft sich auch der Dart-Blog auf folgendes einfaches Beispiel:

void main() { 
List<int> prices = ['99', '27', '10000', '20000000'];
// Sort in place from smallest to largest
prices.sort();
print('Lowest price is ${prices[0]}!'); }

Beim ersten Lesen mag man vermuten, dass die Ausgabe des niedrigsten Preises den Wert '27' zurückgibt. Da es sich aber in der Liste um String-Angaben statt int-Werte handelt, wäre das Ergebnis '10000', was mit Blick auf die Sortierung nach Zeichenketten korrekt, aber unerwünscht ist. Dart 2 erkennt im Gegensatz zu reinem JavaScript die Typangabe und meldet für den Code einen Type-Error.

Strikte Typenangaben sind freilich kein Alleinstellungsmerkmal, sondern beispielsweise auch Bestandteil von TypeScript. Auch waren sie bereits in Dart 1.x enthalten, allerdings war der sogenannte Strong Mode seinerzeit noch optional. Bereits im Sommer 2017 hatte das Team angekündigt, dass dieser strikte Modus in Dart 2 Standard werden solle.

Die Schlüsselwörter new und const sind neuerdings optional. Das soll der konsistenten und einfacheren Einbindung von Code zur Definition von UI-Elementen helfen. Somit lässt sich nun ein Widget folgendermaßen definieren:

Widget build(BuildContext context) =>
Container(
height: 56.0,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
child: Row(
...
),
);

Zuvor wäre ein Block nötig gewesen, der den Container mit return new zurückgibt. Außerdem hätten BoxDecoration und Row jeweils das Schlüsselwort new und EdgeInserts das Schlüsselwort const erfordert.

Dart ist neben der Webentwicklung auch für mobile Clients vorgesehen. Das Framework dafür ist Flutter, das das Paradigma des reaktiven Programmierens nutzt. Flutter-Programme lassen sich beispielsweise mit Swift- und Java-Code verbinden. Obwohl das Open-Source-Projekt bereits seit geraumer Zeit existiert, hat es jedoch immer noch Alphastatus.

Viele Dart-Entwickler werden sich über die Ankündigung von Dart 2 freuen, zumal es im vergangenen Jahr sehr ruhig um Googles Projekt geworden war. Besonderen Wirbel gab es nach der Angular-Konferenz ng-conf im April 2017, auf dem das Angular-Team sich verstärkt TypeScript zugewandt hatte. Kurz darauf erklärte daher Brad Green, der als Engineering Director bei Google für die Entwicklung des Angular-Frameworks verantwortlich ist, dass er TypeScript als Ergänzung, aber nicht als Ersatz für Dart sähe. Dennoch schritt die Entwicklung der von Microsoft vorangetriebenen Skriptsprache nicht nur, aber auch in Kombination mit Angular, deutlich schneller und öffentlicher voran als Googles Dart.

Interessanterweise fehlt ein Hinweis auf AngluarDart in der Ankündigung von Dart 2. Seit 2013 lässt sich das JavaScript-Framework Angular mit Dart verwenden, und seit 2016 ist die Kombination AngularDart ein eigenständiges Projekt. Es ist jedoch bei Versionsnummer 4 stehengeblieben, während Angular im Zusammenspiel mit JavaScript bei Version 5.2 angekommen ist und auf die sechste Hauptversion vorbereitet.

Angular wäre nicht das erste Projekt in Kombination mit Dart, das ein jähes Ende findet. Das anfangs ambitioniert vorangetriebene Dartino, das Googles Skriptsprache in den Embedded-Bereich bringen sollte, ist nach wie vor auf GitHub verfügbar. Aber die letzten Neuerungen sind zwei Jahre alt. Im September 2016 hatte das Team auf der Projektseite angekündigt, es nicht weiter zu pflegen. Stattdessen wolle man sich rein auf Dart im Web und für mobile Endgeräte konzentrieren.

Google stellte Dart erstmals 2011 als Alternative zu JavaScript vor und gestaltet es weitgehend mit. Der Suchmaschinenanbieter setzt es selbst ein und hat beispielsweise das Frontend für AdWords Anfang 2016 in Dart umgesetzt. Als Vorzüge gegenüber JavaScript preisen die Macher unter anderem die bessere Lesbarkeit des Quellcodes. (rme)