Part 1 – Yet another Story about JavaScript

29. Juli 2013

JavaScript – eine Sprache die entstanden ist, um das Web dynamischer zu machen. Ursprünglich für kleine Aufgaben gedacht, hat sie sich heute zu einer universalen Allzweckwaffe entwickelt. Schon seit einer ganzen Weile läuft JavaScript nicht mehr nur im Browser, sondern hat durch Frameworks wie NodeJS den Sprung auf die Server geschafft und setzt dort ihren Siegeszug fort.

JavaScript ist nicht mehr wegzudenken. Ich für meinen Teil finde das super, weil ich die Sprache ziemlich gut finde. Das liegt zum einen daran, dass JavaScript leicht zu erlenen ist – es gibt nicht hunderte Konstrukte, die man kennen muss, um die Sprache zu beherrschen. Zum anderen liegt das an der Flexibilität, die mir die Sprache bietet.

Frameworks – The Beginning

Von der Sprache her ist alles super. Leider gab es in nicht so ferner Vergangenheit diverse Probleme mit der Kompatibilität der Sprache in den einzelnen Browsern. Vor allem was den Zugriff auf das DOM betraf. Das hat die Arbeit mit JavaScript erheblich erschwert, da Funktionen, die in dem einen Browser geklappt haben, in dem nächsten nicht mehr funktionierten. Die Zeiten sind aber mit dem Auftauchen von Frameworks wie jQuery, ExtJS, Dojo und vielen anderen beliebten Frameworks glücklicherweise vorbei.

All diese Frameworks erleichterten den Umgang mit unterschiedlichen Browsern und brachten die Entwicklung mit JavaScript auf ein neues Level. Für mich sind das die Urgesteine der JavaScript Frameworks 🙂

Frameworks – Next Generation

Mittlerweile gibt es eine neue Generation von Frameworks, die beliebte Patterns wie MVC oder auch MVVM unterstützen. Diese Patterns werden gerne in der Entwicklung von Webanwendungen genutzt und sind auch stark in der Entwicklung von WPF oder Windows Store Apps verankert.

Mit dem Erscheinen solcher Frameworks – wie BackboneJS, knockoutJS, AngularJS und EmberJS – wird der Entwicklung mit JavaScript erneut ein Schub nach vorne gegeben. Der große Vorteil dieser Frameworks ist für mich das “Abholen” der Desktop-Entwickler, die mit dem MVVM-Pattern schon vertraut sind und ihr Wissen somit fast eins-zu-eins übernehmen können.

Ein gutes Beispiel für dieses “Abholen” ist das Framework knockoutJS, das sich stark an die Entwicklung von WPF-Anwendungen, mit dessen MVVM-Pattern und Data Binding Mechanismus, anlehnt und mit dem sich der “Desktop Entwickler” schon fast wie zu Hause fühlt 🙂

Ein großer Vorteil der Frameworks ist das schon kurz erwähnte Data Binding, das in den meisten Fällen in zwei Richtungen erfolgt. Dadurch ist es nicht mehr notwendig Eventhandler zu erstellen, die auf onchange/onleave usw. hören, um dort die eingegebenen Werte in entsprechende JavaScript Objekte zu übergeben. Diese Aufgabe übernimmt das ausgewählte Framework.

Testing

Neben den ganzen tollen Features, die einem das Entwickeln erleichtern, gibt es einen weiteren wichtigen Aspekt, der immer mehr Tragweite bekommt. Das Testen. Dadurch, dass JavaScript nicht mehr nur partiell Verwendung findet, um mal eben ein paar Daten per AJAX zu laden oder Bilder in einer Slideshow darzustellen, sondern im Client mehr und mehr komplexe Anwendungen entstehen, muss hier natürlich sichergestellt werden, dass der Code funktioniert.

Ein bekanntes Framework, das sich mit dem Testen auseinander setzt, ist QUnit. Dabei schreibt man seine Unit-Tests in einer separaten Seite und führt diese durch einen Aufruf der Seite aus.

Ein anderes Framework ist Jasmin, das den BDD-Weg verfolgt. Dieses Framework wird auch für AngularJS empfohlen und bietet in Zusammenarbeit mit Karma, neben den klassischen Unit-Tests, auch die Möglichkeit End-To-End Tests zu machen. Im Prinzip sind das automatisierte UI Tests. Dabei können bestimmte Seiten geladen, Felder mit Werten gefüllt und danach überprüft werden, ob sich die richtigen Folgeschritte ergeben haben.

Ausblick und Fazit

Dies war eine – aus meiner Sicht – kleine Geschichte zur Entwicklung und dem Beginn der Revolution von JavaScript durch diverse Frameworks.

Auch in Zukunft führt – meiner Meinung nach – kein Weg an JavaScript vorbei! Durch die kontinuierliche Entwicklung der diversen Frameworks wird JavaScript mehr und mehr zu einer professionellen Sprache, mit der sich komplexe und vor allem auch testbare Anwendungen erstellen lassen. Das Einsatzgebiet von JavaScript steigt ständig.

Wie zu Beginn erwähnt, läuft JavaScript nicht mehr nur im Browser, sondern dank NodeJS auch auf dem Server. Cordova (ehemals Phonegap) erlaubt die Erstellung von mobilen Anwendungen, die vollständig auf dem Gerät laufen. Seit der Einführung von Windows 8 ist es möglich, Windows Store Apps ebenfalls in JavaScript zu erstellen. Mit FirefoxOS hat Mozilla ein Handy Betriebssystem auf den Markt gebracht, welches vollständig und nativ auf HTML5, JavaScript und CSS setzt. Mit asm.js ist es möglich, JavaScript fast so schnell auszuführen wie nativen Code. Es passiert also eine ganze Menge in diesem Bereich und es wird noch einiges auf uns zukommen.

In den kommenden Beiträgen gehe ich auf die für mich gerade wichtigsten Frameworks knockoutJS und AngularJS ein.

Stay tuned! 😉