Dropbox ersetzt Java- durch CoffeeScript

Weniger Code zu tippen und zu warten, einfacher zu lesen, klarere Syntax: Das waren die Hauptgründe für die Entwickler des Cloud-Dienstes Dropbox, von JavaScript auf CoffeeScript umzusteigen.

In Pocket speichern vorlesen Druckansicht 146 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Durch die Umstellung ihres Web-Interfaces von JavaScript auf CoffeeScript haben die Entwickler des Cloud-Speichers Dropbox ihren Quellcode um rund 20 Prozent reduziert. Das berichten sie in einem Blog-Eintrag, der die Gründe für den Umstieg und seine Folgen erläutert.

So sei der CoffeeScript-Code rund 5000 Zeilen und 200.000 Zeichen kürzer als das JavaScript-Original. Für Anwender hat das allerdings keine Auswirkungen, denn damit der Web-Browser die Anwendung überhaupt ausführen kann, muss zuvor aus Coffee- wieder JavaScript erzeugt werden. Das übernimmt ein Compiler.

Vorteile der innerhalb einer Woche abgeschlossenen Umstellung sind aus Sicht der Dropbox-Entwickler vor allem weniger Tipparbeit, mehr Übersichtlichkeit ("es passt mehr Code auf eine Bildschirmseite"), die klarere Syntax sowie verhinderte Fehler. So erzeugt der CoffeeScript-Compiler Definitionen von JavaScript-Variablen automatisch mit einem vorangestellten var, was das versehentliche Erzeugen globaler Variablen vermeidet.

Die Erfahrungen beim Umstellen des vorhandenen Web-Interface mit seinen 23.000 Code-Zeilen auf CoffeeScript waren so überzeugend, dass neuer Code bei Dropbox nur noch in CoffeeScript geschrieben werde, heißt es am Ende des Blog-Beitrags. Allerdings geben sie nur wenig Auskunft zu ihren Erfahrungen bei der Fehlersuche im Browser: Die findet im JavaScript-Code statt, und das Auffinden der jeweiligen CoffeeScript-Stellen dürfte mit Aufwand verbunden sein. Etablieren sich die in Chrome vorhandenen JavaScript Source Maps, wird diese Arbeit leichter.

CoffeeScript verwendet eine Syntax, mit der sich etwa Funktionen und Schleifen sehr kompakt formulieren lassen. Zudem bietet es Konstrukte zum Iterieren über JavaScript-Objekte. Es nutzt ähnlich wie Python Leerraum, um Statements zu trennen, ist jedoch weniger streng als jenes. (ck)