Mertl, M. (2016). Comparision and evaluation of JavaScript preprocessing languages [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2016.25153
JavaScript preprocessor languages; programming language comparison
en
Abstract:
In den vergangenen Jahren hat das Internet große Veränderungen erlebt. Anfangs war es nur eine Umgebung um einfache Dokumente darzustellen. Heutzutage bietet das Netz eine Plattform für eine Vielzahl von modernen Web-Anwendungen. Ein entscheidender Grund für diese Entwicklung war unter anderem das Bedürfnis der Menschen, Informationen zu jeder Zeit, an jedem beliebigen Ort, so komfortabel wie möglich zu konsumieren. Dieses Bedürfnis ist mit dem Aufkommen von Smartphones und Tablet Computern weiter gewachsen. Etwa zu dieser Zeit stieg auch die Verwendung von Ajax Technologie. Dies war, neben der nicht vorhandenen Unterstützung von Flash Technologie auf einigen mobilen Endgeräten, ein Grund dafür, dass JavaScript diesen rasanten Aufstieg erleben durfte. Seit dieser Zeit erhöhte sich die Anzahl an JavaScript basierten Webseiten und wächst noch immer stetig. JavaScript wurde in sehr kurzer Zeit entwickelt, dabei wurden wichtige Design-Entscheidungen vernachlässigt. Diese wirken sich unter anderem in einem fehlenden Modul-System, schwacher Typisierung und später Variablen-Bindung aus, um nur einige Schwächen zu nennen. Um diese Nachteile zu lösen wurden JavaScript-Präprozessoren entwickelt. Diese Präprozessoren kapseln nicht nur einige dieser oben genannten JavaScript-Schwächen, sondern fügen der Sprache auch noch sinnvolle Erweiterungen hinzu. Heutzutage existiert eine große Anzahl an JavaScript-Präprozessoren, jeder mit eigenen Stärken und Schwächen. Da die Verwendung von JavaScript im Web wächst, steigt auch die Anzahl an JavaScript-Präprozessoren. Für einen Entwickler ist es daher sehr aufwendig auf dem Laufenden zu bleiben, welche JavaScript-Präprozessoren existieren und welcher Präprozessor für welche Art von Software-Projekt besonders geeignet ist. Den richtigen Präprozessor zu finden kann sich als äußert mühsam herausstellen. In dieser Arbeit werden wir uns die Eigenschaften von Web-Projekten genauer ansehen, welche für einen guten Projektausgang erforderlich sind, davon abhängige Präprozessoren-Eigenschaften suchen, diese beschreiben und in den jeweiligen Sprachen miteinander vergleichen. Mit Hilfe dieser Vergleichswerte werden wir, unter Anwendung einer Kosten-Nutzen Analyse, die Entscheidung treffen, welche der vier untersuchten JavaScript Präprozessoren (CoffeeScript, TypeScript, LiveScript, Dart) für ein bestimmtes Web-Projekte am besten zu wählen wäre. Wir werden sehen, dass Dart und Typescript in den meisten Fällen die beste Wahl ist, gefolgt von CoffeeScript. LiveScript ist bei sehr bestimmten Projekten überlegen ist.
de
In this thesis we will have a detailed look at web application projects, and determine important web project properties for a good project outcome. Therefore we will have a look at related work that points out which factors are affecting such a software development project outcome. Then we will further investigate the given web project properties and see which pre-processing language features are related to those properties and how they influence them. Given that list of pre-processing language features, we will then describe and measure them in detail. We will again have a look at related work, to see how languages features can be properly measured and compared across languages. Given that comparison results we will be able to decide which of the four inspected JavaScript preprocessors (CoffeeScript, TypeScript, LiveScript, Dart) fits which kind of projects best, using a cost-benefit analysis. Our comparison will show that in most of the cases Dart and TypeScript will be the best fitting pre-processing languages, followed by CoffeeScript. LiveScript is only a good choice for a very limited set of web projects.