Open Source im professionellen Einsatz
Linux-Magazin 06/2012
© mihail1981, 123RF

© mihail1981, 123RF

Googles Javascript-Alternative Dart

Der große Wurf?

Mit Dart will Google eine moderne Alternative zu Javascript etablieren und hat dazu interessante Features anderer Sprachen aufgegriffen. Dart soll vor allem in Browsern laufen, lässt sich aber auch auf der Kommandozeile sowie auf Servern als PHP-Ersatz nutzen. Also ein Volltreffer?

802

Programmcode in Googles Sprache Dart [1] liest sich wie eine Mischung aus Javascript und Java, gewürzt mit einer Prise Scala. Diese Anleihen haben einen Hintergrund: Die Programmiersprache entstand aus dem Wunsch, einige Probleme und Altlasten von Javascript zu eliminieren. So sollen Dart-Programme schneller ablaufen, eine höhere Sicherheit bieten, auf allen internetfähigen Geräten arbeiten und zugleich für größere Projekte geeignet sein [2]. Wer in den genannten Sprachen schon mal programmiert hat, dürfte sich zudem auch schnell in Dart zurechtfinden – und das sind fast alle Webprogrammierer.

In Dart geschriebene Programme sollen in einer speziellen virtuellen Maschine direkt im Browser laufen. Das Dart-Projekt stellt dazu auf seinen Seiten eine Referenzimplementierung bereit, die sogar in der Lage ist, Dart-Programme direkt auf der Kommandozeile beziehungsweise auf einem Internetserver auszuführen. Dart eignet sich damit prinzipiell als PHP-Ersatz. Das Leben erleichtern zudem einige nützliche Werkzeuge wie der auf Eclipse basierende Dart Editor (Abbildung 1).

Abbildung 1: Der Dart Editor ist eine Entwicklungsumgebung auf Eclipse-Basis.

Das alles klingt verlockend, wäre da nicht ein kleiner Haken: Die Sprache befindet sich derzeit noch in einem frühen Entwicklungsstadium und taugt somit nicht für den produktiven Einsatz. Die Väter von Dart haben ihre Spezifikation bewusst vorzeitig veröffentlicht, um möglichst viele Verbesserungsvorschläge zu sammeln und gleichzeitig die Akzeptanz zu erhöhen. Gerade auch deshalb steht die Sprachspezifikation unter einer liberalen Creative-Commons-Lizenz, der vom Projekt veröffentlichte Programmcode unter der Google BSD License [3]. Zum Redaktionsschluss war die Dart-Version 0.08 aktuell, die auch dem folgenden Überblick zugrunde liegt.

main() und Klassen

Ein erstes, einfaches Dart-Programm zeigt Listing 1. Insbesondere für Javascript-Programmierer dürfte »main()« neu sein. Wie in Java bildet diese Funktion den Startpunkt des Dart-Programms. Javascript-Programmierer müssen noch ein zweites Mal schlucken: Dart ist eine durch und durch objektorientierte Sprache. Listing 2 zeigt die Deklaration einer Klasse namens »Auto« . Diese definiert zunächst die neue Variable »farbe« . Wie das Schlüsselwort »var« andeutet, können Variablen zu jeder Zeit beliebige Werte aufnehmen – Dart ist wie Javascript eine typenlose Sprache.

Listing 2

Eine einfache Klasse

01 class Auto {
02         var farbe;
03
04         Auto() {
05                 this.farbe = "Blau";
06         }
07
08         Auto.lackieren(this.farbe);
09 }
10
11 main() {
12         Auto ferrari = new Auto.lackieren("Rot");
13         Auto bmw = new Auto();
14         print(ferrari.farbe); // gibt Rot aus
15         print(bmw.farbe); // gibt Blau aus
16 }

Listing 1

"Hello World" in Dart

01 main() {
02         // Ein kleiner Kommentar
03         print("Hallo Welt!");
04 }

Es folgt der Konstruktor »Auto()« , der den gleichen Namen wie die Klasse tragen muss. »this« steht wie in Java für das eigene Objekt, »this.farbe« stellt folglich sicher, dass der Wert nicht in einer globalen oder gar neuen Variablen landet.

Benannte Konstruktoren

Die achte Zeile zeigt zwei Besonderheiten von Dart. In typisierten Sprachen wie Java kann der Entwickler mehrere Konstruktoren mit unterschiedlichen Parametern vorgeben (überladen). Die Sprache ruft dann bei der Erzeugung eines Objekts automatisch den passenden Konstruktor auf. Bei typenlosen Sprachen wie Dart ist diese Wahl nicht so einfach. Abhilfe schaffen benannte Konstruktoren. In Listing 2 erhält der zweite Konstruktor den Namen »lackieren« . Möchte man später beim Anlegen eines konkreten »Autos« in der »main()« -Funktion genau diesen aufrufen, gibt man dort den Namen mit an:

Auto ferrari = new Auto.lackieren("Rot");

Ein schlichtes »new Auto()« ruft hingegen den normalen Konstruktor auf.

Als zweite Besonderheit verwendet der Konstruktor »Auto.lackieren()« noch eine Kurzschreibweise: Den ihm übergebenen Wert weist Dart direkt der Variablen »farbe« zu. Wer mag, darf natürlich auch die Langfassung verwenden:

Auto.lackieren(var einefarbe) {
 this.farbe = einefarbe;
}

Dass Variablen beliebige Werte aufnehmen, ist zwar bequem, verleitet Entwickler in der Praxis aber zum Schludern. So entstehen Fehler, die zu ergründen oft aufwändig ist. Deshalb darf der Programmierer optional den Typ einer Variablen angeben (»String farbe« ).

Sollte das Dart-Programm im weiteren Verlauf versuchen in »farbe« eine Zahl zu speichern, erzeugt die virtuelle Maschine eine Warnung. Wohlgemerkt eine Warnung, keinen Fehler – das Programm läuft einfach weiter. Dieses Verhalten macht Programmierer auf Zuweisungsfehler aufmerksam und den Code besser lesbar, während Benutzer der Anwendung keinen urplötzlichen Programmabsturz fürchten müssen.

Neben Zeichenketten (»String« ) kennt Dart derzeit noch die Typen aus Tabelle 1. Die sind übrigens intern allesamt auch Objekte. Listen und Maps darf man sogar mit »new« anlegen:

var autos = new List();

Variablen, die noch keinen Wert zugewiesen bekommen haben, besitzen den speziellen Wert »null« .

Ähnlich wie PHP kann Dart den Inhalt von Variablen in andere Strings einsetzen. Der Code

String name = "Herr Meier";
print ("Hallo ${name}");

würde »Hallo Herr Meier« ausgeben. Innerhalb der Klammern »{}« dürfen sogar ganze Ausdrücke beziehungsweise Funktionsaufrufe stehen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Javascript-Alternativen

    Javascript ist der Stoff, aus dem der Client-Teil vieler interaktiver Webanwendungen gemacht ist, schleppt aber Altlasten mit. Gegen die schreiben die Macher der vier vorgestellten Skriptsprachen an.

  • Bücher

    Das Linux-Magazin nimmt zwei Programmierbücher unter die Lupe: Das eine führt in die 3-D-Programmierung ein, das andere absolviert einen Schnelldurchgang durch Googles Sprache Dart.

  • Googles Dart unter den Top-20-Programmiersprachen

    Im Tiobe-Index der beliebtesten Programmiersprachen hat sich Googles JavaScript-Konkurrent Dart unter die ersten 20 gekämpft.

  • Angular 2

    Mit Typescript statt Javascript, JiT- und AoT-Kompilation und einem konsequenten Einsatz von Components brühen die Macher das Javascript-Framework Angular in Version 2 neu auf. Das Linux-Magazin probiert einen kräftigen Schluck von dem Gebräu.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.