Programmiersprache: Dart 2 ist fertig

Der JavaScript-Herausforderer erhält in Version 2 zahlreiche Änderungen, die ihn für die Cliententwicklung attraktiv machen sollen.

 –  39 Kommentare
Programmiersprache: Dart 2 ist fertig

Ein halbes Jahr nach der ersten Ankündigung ist nun Dart 2 erschienen. Die frische Hauptversion bringt zahlreiche Änderungen gegenüber dem Vorgänger, die in vielen Fällen durchaus zu Inkompatibilitäten führen können.

Die bei Google entwickelte Programmiersprache ist klar auf die Cliententwicklung für Webanwendungen und mobile Clients ausgelegt. Für Letztere kommt das Cross-Platform-Framework Flutter ins Spiel, das seine Ursprünge ebenfalls beim Internetriesen hat. Dort befindet sich Dart auch in zahlreichen Projekten wie AdWords und AdSense im Einsatz.

Dart 2 setzt wie TypeScirpt nun standardmäßig auf strikte Typangaben, da die von vielen Entwickler geliebten Freiheiten in Skriptsprachen wie JavaScript oder Python häufige Fehlerquellen sind. Dart 2 erkennt fehlerhafte Zuweisungen und meldet beim Kompilieren einen Type-Error. Dart ermöglichte bereits in Version 1.x die strikten Typangaben, jedoch nur im optionalen Strong Mode. Im Sommer 2017 hatte das Team bereits angekündigt, dass dieser zum Standard werden sollte, wie es nun bei Dart 2 der Fall ist. Das Dart-Team hat eine Seite mit Hinweisen zum Umgang mit Problemen durch das strikte Typsystem zusammengestellt.

An anderen Stellen bietet Dart 2 dagegen mehr Freiheit als der Vorgänger: Das Schlüsselwort new ist neuerdings optional. Dasselbe gilt für const innerhalb eines konstanten Kontexts. Auf diese Weise soll vor allem der Code zur Definition von UI-Elementen einfacher und konsistenter werden. Dart 2 verzichtet auf den sogenannten Checked Mode. Entwickler können die für das Testen vorgesehenen assert-Anweisung mit dem Flag --enable-asserts aktivieren. In nur für die Entwicklung vorgesehenen Tools wie dem Dart Dev Compiler (dartdevc) sind Asserts standardmäßig aktiviert.

Vor allem dem Typsystem sind einige Änderungen an der Sprache und den Bibliotheken geschuldet. Eine Übersicht über Änderungen, die zu Inkompatibilitäten führen (Breaking Changes), finden sich im Changelog. Außerdem gibt es ein neues Build-System, das pub build und pub serve ersetzt. Dart arbeitet nicht mehr mit dem speziell auf die Programmiersprache zugeschnittenen Dartium. Stattdessen kommt der Compiler dartdevc zum Einsatz, der laut der Beschreibung Code für "alle modernen Webbrowser" erstellt.

Zur Anbindung an Angular gibt es zum offiziellen Release zwar keine Ankündigung, aber mit AngularDart 5.0 steht zumindest ein frisches Release an, das derzeit noch Betastatus hat. Im Frühjahr 2017 sorgte die Tatsache für Wirbel, dass auf der Angular-Konferenz ng-conf TypeScript eine wesentliche Rolle spielte. Brad Green, Engineering Director bei Google für die Entwicklung des Angular-Frameworks, erklärte kurz darauf, dass er TypeScript als Ergänzung, aber nicht als Ersatz für Dart sähe.

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.

Ob die Neuerungen Dart 2 neuen Antrieb auch außerhalb von Google geben, muss sich zeigen. Die anfängliche Euphorie scheint zurückgegangen zu sein. Die klare Ausrichtung auf die Cliententwicklung für Web und Mobile hilft sicher, aber einige Entwickler werden inzwischen dem konstant weiterentwickelten TypeScript den Vorzug gegeben haben.

Das Zusammenspiel mit Flutter zum Entwickeln mobiler Anwendungen ist zumindest charmant, aber auch hier gibt es mit NativeScript und Reactive Native Ansätze zur Cross-Platform-Entwicklung – und das, ohne eine neue Skriptsprache zu lernen. Für Flutter existiert derweil immer noch kein 1.0-Release, aber zumindest ist seit Ende Juni eine Release-Preview verfügbar. Aufgrund der engen Verflechtung mit Dart dürfen Entwickler wohl auf eine baldige Veröffentlichung von Flutter 1 hoffen. (rme)