Suche
Über den Stand der Dinge bei Googles Programmiersprache Dart

Google Dart: Version 1.22 bringt mehr Geschwindigkeit und Assert Messages [Update]

Redaktion JAXenter

© Shutterstock/erashov

Mit Dart hat Google im Jahr 2010 eine Web-Programmiersprache vorgestellt, die als Alternative zu JavaScript ins Rennen geschickt wurde. Welche Chancen sich Dart in dieser Position ausrechnen darf, und wie es um die aktuelle Entwicklung von Dart bestellt ist, beleuchten wir in diesem Artikel.

Update vom 16.02.2017

Google Dart 1.22: Schnellere Tools & Assert Messages

Im aktuellen Index von TIOBE steht Dart auf Platz 25, der PYPL-Index führt Dart nicht einmal auf und in der großen JAXenter-Umfrage für 2017 fanden lediglich 12 Teilnehmer (1.3 Prozent) Dart sehr interessant und 56 Teilnehmer (6 Prozent) zumindest noch interessant. So richtig in Fahrt scheint die als moderne Alternative zu JavaScript konzipierte Sprache nicht zu kommen, was Google allerdings nicht daran hindert, die Entwicklung von Dart stetig voranzutreiben.

Bis Dezember letzten Jahres war die Unterstützung generischer Programmierung noch auf Klassen wie List<T> beschränkt. Für Dart 1.21 wurde dann eine Syntax eingeführt, die Typenparameter auf Methoden und Funktionen erlaubt. Außerdem konnte man endlich = verwenden, um einen Standardwert für einen benannten Parameter zu spezifizieren.

Generic Method Syntax in Dart / Quelle: Google Dart

Generic Method Syntax in Dart / Quelle: Google Dart

Mit dem nun veröffentlichten Update auf Dart 1.22 wird dazu übergegangen, Anwendungs-Snapshots für das Ausführen von SDK-Tools wie dart2js, Analyzer und Pub zu verwenden. Das Ziel war eine verbesserte Performanz beim Start. Wie genau man diese Anwendungs-Snapshots verwendet, wird im SDK Wiki erklärt.

Um dem fail-fast-Prinzip gerecht zu werden, das ein wichtiger Faktor für die Entwicklung qualitativ hochwertiger Software ist, unterstützt Dart Asserts. Dies sei, so die Entwickler, die einfachste Methode um schnell zu failen. Ab Dart 1.22 können den Asserts auch Nachrichten hinzugefügt werden, sodass es nicht mehr nötig ist, eine komplette Ausnahme einzufügen. Außerdem werden Asserts im Produktionsprozess nun übersprungen, was für einen Geschwindigkeitszuwachs in der Produktion sorgt.

Asserts in Google Dart / Quelle: Google Dart

Asserts in Google Dart / Quelle: Google Dart

Eine weitere wichtige Änderung stellt die Einführung des covariant-Modifiers für Parameter dar. Der Modifier gibt an, dass ein Parameter und der korrespondierende Parameter in allen Methoden, der ihn überschreibt, weniger strikte Regeln zum Überschreiben haben. Um die Korrektheit zu gewährleisten, wird hierfür im Strong Mode ein Runtime Type Check benötigt, eröffnet Entwicklern aber gleichzeitig die Anwendung eines nützlichen Architekturmusters.

Weitere Informationen zum aktuellen Update gibt es im Changelog auf GitHub und auf dem Blog von Google Dart. Auf der Homepage von Dart finden sich alle benötigten Informationen und Downloads, um mit Dart durchzustarten.



Update vom 18.10.2016

Google Dart 1.20: Aus für Symlinks und verbesserte virtuelle Maschine

Wie bereits in der Vorgängerversion von Google Dart angekündigt, gehört das /packages/ -Verzeichnis nun soweit der Vergangenheit an. Damit einher geht die Abschaffung der Symlinks, die das Verzeichnis meist zu hunderten enthielt. Als Ersatz hierfür wurde in Version 1.19 von Dart die Unterstützung der .package-Datei eingeführt, welche optional aktiviert werden konnte.

Nachdem diese Funktion nun ausgiebig getestet wurde, hat das Dart-Team das Feedback gesichtet und ist zum Entschluss gekommen, es nun als Standard festzulegen. Bei wem dies zu Problemen führt, kann die Symlinks immer noch bekommen. Dafür muss er das Kommando pub get --packages-dir verwenden.

Wie das Laden von Ressourcen zukünftig genau funktionieren wird, legt das Dart-Team im Artikel So Long, Symlinks detailliert dar. Zusammenfassend kann man sagen, dass Entwickler zwei Möglichkeiten haben: Entweder zerlegen sie einen Uniform Resource Identifier (URI) unter Verwendung des neuen resolvePackageUri-APIs in eine Ressource, oder sie nutzen das neue package:test, das ein etwas abstrakteres API zur Verfügung stellt.

Zu guter Letzt wurde auch die virtuelle Maschine (VM) von Dart auf Stand gebracht und gibt nun erfassbare Errors aus, wenn die Kompilierung einer Methode fehlschlägt. Dies erleichtert, besonders beim Testen, das Debuggen von Syntaxfehlern.

Eine vollständige Liste mit Änderungen gibt es auf GitHub, das aktuelle Release kann hier heruntergeladen werden.



Update vom 29. August 2016

Google Dart 1.19: Einfachere Codebearbeitung und die Abschaffung von Symlinks

Mit dem kürzlich veröffentlichten Update von Googles Programmiersprache Dart wurde die Unterstützung für sogenannte trailing commas nach dem letzten Parameter eines Calls implementiert. Dadurch wird es für Entwickler nun deutlich einfacher, Parameter neu zu sortieren oder den letzten einfach zu löschen. Vorher führten Neusortierungen oder das Entfernen des letzten Parameters häufig zu Syntax-Fehlern. Diese Änderung ist besonders für Nutzer des Frameworks Flutter interessant, da der Code für Flutter-Anwendungen häufig aus sehr langen Parameter-Listen besteht.

Nun noch einfacher: Das Sortieren und Entfernen von Parametern / Quelle: Google Dart

Nun noch einfacher: Das Sortieren und Entfernen von Parametern / Quelle: Google Dart

Eine etwas größere Änderung ist die Einführung der neuen Flag --no-packages-dir. Durch sie werden pub get, pub upgrade und pub downgrade ermöglicht. Wird die neue Flag genutzt, wird pub kein packages/-Verzeichnis erstellen, bestehende Verzeichnisse entfernen und sämtliche korrespondierende Symlinks entfernen. In zukünftigen Updates soll --no-packages-dir die eingesetzte Standard-Methode werden.

Auch an der Dart Virtual Machine wurde weiter gefeilt und die Abhängigkeit von BoringSSL vorangetrieben. Builds der Dart VM, die Secure Sockets enthalten, benötigen nun einen Compiler, der C++ 11 unterstützt. Für Strong Mode gibt es ebenfalls zwei neue Features, nämlich die Möglichkeit zum Abstellen von implizierten Down Casts und der implizierten Nutzung von dynamic.

Für weitere Informationen über die Verwendung der neuen Flag lohnt es sich, den Artikel „So Long, Symlinks!“ von Natalie Weizenbaum zu lesen, in dem die Änderungen detailliert besprochen werden. Eine komplette Übersicht der Neuerungen in Dart 1.19 gibt es auf der GitHub-Seite von Google Dart.



Update vom 29. Juli 2016

Google Dart 1.18: Speed, Stabilität und Sprachoptimierungen

Update 1.18 der Programmiersprache Dart bringt keine Fülle an neuen Features, aber die Entwickler von Google haben am Fundament für neue Funktionen gearbeitet. Im Bereich SDK gibt es allerdings eine kleinere Änderung und zwar gibt es neue Sperrmodi. FileLock.BLOCKING_SHARED und FileLock.BLOCKING_EXCLUSIVE sind für Entwickler nun verfügbar. Zudem wurde der Dart Analyzer verbessert: Er soll nun schneller und stabiler laufen, besonders im Zusammenspiel mit dem dev_compiler.

Auch die Arbeit am Framework Flutter für das Erstellen und Deployen von hochperformanten und mobilen Cross-Plattform-Apps wurde vorangetrieben. Insbesondere die Entwicklungs- und Laufzeit-Experience standen im Fokus der Weiterentwicklung.

Mit der aktuellen Version wurden zwei Sprachoptimierungen finalisiert: So ist unter anderem die Arbeit an einem ausschließlichen Lesezugriff auf formale Methoden zur Initialisierung abgeschlossen. Für eine Verbesserung der Wartbarkeit von langen Argumenten- und Parameterlisten, wurde die Verwendung eines optionalen Kommas nun finalisiert.

Weitere Informationen zum Update des SDKs gibt es auf GitHub, über Dart 1.18 schreibt außerdem Kevin Moore auf der Homepage von Dart. Auf dartlang.org findet man die entsprechenden Links zum Download.



Update vom 10. Juni 2016

Google Dart 1.17 ist da (und schneller)

Mit der Veröffentlichung von 1.16 hatten die Dart-Entwickler eine deutlichen Performanceschub für 1.17 versprochen. Und dieses Versprechen haben sie – zumindest nach eigenen Angaben – auch eingehalten. Bei großen Anwendungen sei die Geschwindigkeit des Dart Analyzers um 200 Prozent schneller. Große Anwendungen bremsen die Startup-Zeit von Dartium nicht länger aus. Um den Faktor vier soll es schneller gehen. Außerdem laufe Dartium jetzt deutlich stabiler als in älteren Versionen. Außerdem hat es auch einige kleinere Änderungen in den Core SDK APIs gegeben, die übersichtlich im SDK Changelog zu finden sind. Dart 1.17 steht wie immer auf der Downloadseite zum Herunterladen bereit.



Update vom 3. Mai 2016:

Google Dart 1.16 erschienen

Google hat die Version 1.16 von Dart freigegeben. Im Fokus standen dabei die Verbesserung der Entwicklertools sowie die Aktualisierung der HTML APIs. In Zusammenarbeit mit Dart-Usern bei Google wurde an einer besseren Entwicklerproduktivität gearbeitet: So soll das Laden von Anwendungen in Dartium nun bis zu 40% schneller gehen. Wurde Dartium in Dart 1.15 auf Chrome 45 aktualisiert, so ziehen in Dart 1.16 nun Browser APIs wie dart:html, dart:svg nach.

Das Entwicklerteam rät dazu, bei einem Update existierende Anwendungen auf etwaige Kompatibilitäsbrüche zu untersuchen. Die Marschroute sieht vor, die nächsten Wochen in schnellere Code-Analysen und flinkere JavaScript-Compile-Zeiten zu investieren.

You should see improved performance in this and future releases.

Detaillierte Infos zu den Fixes und Features in Dart 1.16 hält das SDK Changelog bereit.



Original-Artikel erschienen am Moritz Hoffmann:

Ist das noch Dart oder ist das schon tot?

Google veröffentlicht Websprache auf GitHub

shutterstock_159755450-300x199Google hat sein Dart-Projekt auf GitHub veröffentlicht und hofft, damit mehr „Dartisans“ außerhalb der internen Entwicklungsabteilung zu aktivieren und die Innovationskraft der Community nutzen zu können. Aus der sind bislang aber überwiegend verhaltene Stimmen zu vernehmen. Ist Dart wieder einmal am Ende?

Wir erinnern uns: Seit dem Projektstart im Jahr 2010 sollte Dart, dessen Entwicklungsprozess maßgeblich von Google vorangetrieben wurde, als einfach erlernbare, strukturierte und flexible Websprache entwickelt werden. Damit verbunden waren zwei Zielvorgaben: Unter dem diplomatisch gewählten Motto „developers should have a choice“ sollte eine Alternative zum allgegenwärtigen JavaScript im Browser geschaffen werden. Zum anderen wurde die Entwicklung einer serverseitig einsetzbaren Sprache zum Bau von Webanwendungen angestrebt.

Noch Ende letzten Jahres bescheinigte der nicht unumstrittene TIOBE-Index Dart einen steilen Aufstieg von Platz 81 auf 17. Doch schon damals wurden sogleich Einwände erhoben, die diesen Sprung unter Bezug auf andere Rankings, relativierten. In keinem Ranking lief JavaScript wirklich Gefahr, von Dart aus den Top Ten gestoßen zu werden. Schon damals aber erregte Googles Konkurrent die Gemüter.

Strategiewechsel und Zuversicht

Im März dieses Jahres gab Google dann bekannt, nicht mehr auf eine Browser-Unterstützung der DartVM zu setzen, mit der Dart-Code direkt im Browser ausführbar wird. Stattdessen sollte der Dart-to-JavaScript-Compiler breitere Anwendungsmöglichkeiten eröffnen. Lars Bak und und Kasper Lund, beide Mitgründer von Dart, bezeichneten die Kursänderung lediglich als Erneuerung der Web-Strategie.

We currently have one million lines of Dart code and the number is growing fast. […] Our new web strategy makes it easier for developers to build with, and for, the modern web with Dart.

Man wolle, dass sich die Entwickler einerseits im Bau, im Testen und im Deployment von Dart-Anwendungen auf das Web als Arbeitsumgebung festlegen können. Zum anderen sollte die Entwicklung von Dart-Anwendungen möglichst vielen Entwicklern offen stehen. Dazu würde sich die zukünftige Entwicklungsarbeit auf die Kompilierbarkeit von Dart in JavaScript konzentrieren.

Dass die DartVM indes nur in Googles Heimbrowser Chrome wirklich effektiv zum Einsatz kam und sich Konkurrenten wie Firefox, Safari und IE nicht auf ein Dart-Spiel einlassen wollten, dürfte der eigentliche Grund für die damalige Entscheidung gewesen sein.

Ziel verfehlt…

Schon dieser Schritt wurde von einem Teil der Community als Anfang vom Ende des Dart-Projekts interpretiert. Vor allem Ranking-Daten wurden herangezogen, um Dart im Vergleich zu JavaScript einen entscheidenden Rückschlag nachzuweisen und Googles Projekt für gescheitert zu erklären. Andere, wie der Medium-Autor Richard Eng, verwiesen neben den noch nicht ausgeräumten Schwächen der clientseitigen Webentwicklung auf die Chancenlosigkeit von Dart im Angesicht vieler Alternativen:

No matter what are Dart’s features, or how easy Dart makes web development, the fact is, there are a lot of other options out there and they all make the same claims. They all compile to JavaScript. They’re all easy to learn. Just about any one of them is easier than programming directly in JavaScript.

Aufruhr im Double Ring

Dass Google Dart nun auf GitHub zur Verfügung steht, hat die Diskussion um ein mögliches Ende von Dart wieder neu entfacht. Obwohl Seth Ladd auf der Projektseite den Schritt mit der Hoffnung begründet, von der möglichen Unterstützung der Community zu profitieren, und dabei das eigene SDK-Repository und die Optimierung der Dart-Development-Tools in den Vordergrund rückt, zweifeln andere weiter an der Zukunft der Websprache.

Die einen machen die Aufgabe der Integration der DartVM in Chrome dafür verantwortlich und stellen in Frage, dass Dart die Browser-Vielfalt in einer großen Entwickler-Community bewältigen kann. Und wie schon im März wird auch jetzt die Frage nach der Notwendigkeit für Dart gestellt. Während sich viele Entwickler an JavaScript selbst gewöhnt hätten, könnten andere den einfacheren Migrationspfad bevorzugen, der mittlerweile mit TypeScript oder CoffeeScript offen steht.

Andere wollen den Ball flach halten und warnen vor einem zu frühen Urteil. In diesem Sinne wird Jeff Hammond (Forrester Research) auf JavaWorld zitiert:

Before thinking of this as a ‚drop and run‘ exercise, I’d watch the ongoing level of commits from Google email addresses to the project through something like OpenHub.net over the next few months. If check-ins lag, then I’d be concerned.

Darts im Sinkflug?

Eindeutig ist, dass mit der GitHub-Veröffentlichung abermals ein Strategiewechsel von Dart erfolgt ist. Weil der erste nach überwiegender Meinung der Community in der beabsichtigten Konkurrenz zu JavaScript nicht zum großen Sprung nach vorn geführt hat, ist die Zuversicht nicht besonders groß. Und manche Entwickler sind es wie Richard Eng schlichtweg leid, auf die vielen angekündigten Alternativen zu JavaScript zu hoffen, die mit CoffeeScript, AtScript oder dem Google Web Toolkit auf den Durchbruch hoffen:

Betting on the future is all fine and good. That, and a buck seventy five, will get you a coffee and muffin at McDonald’s.

Die nun von Google eingeräumte Möglichkeit, an der Entwicklung von Dart mitzuwirken, könnte vor diesem Hintergrund die erhoffte Wirkung verfehlen. Ein überwiegender Teil der Stimmen geht von einem schlechten Zeichen für die Zukunft von Dart aus. Bis aber wirklich klar ist, ob auch Google selbst Dart wirklich abgeschrieben hat, werden noch einige Contributor-Mailadressen zu studieren sein.

Aufmacherbild: Three darts in bullseye of dartboard von Shutterstock.com
Urheberrecht: erashov

Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.