© DrHitch/Shutterstock.com
JavaScript für .NET-Entwickler

2 Charakteristika der Programmiersprache JavaScript


Anwendungen laufen schon lange nicht mehr ausschließlich auf dem Desktop oder Server. Mit der Einführung von HTML5 und JavaScript als native Programmiersprache für die Entwicklung von Windows-8-Apps wird diese Technologie für Entwickler von Windows-8-Apps gleichermaßen interessant wie für Entwickler von webbasierten mobilen Anwendungen. In jedem Fall sollte kein .NET-Entwickler Angst davor haben, sich intensiv mit JavaScript zu beschäftigen.

Durch konsequente Weiterentwicklung verschiedener JavaScript-Frameworks lassen sich Anwendungen inzwischen plattformübergreifend innerhalb und außerhalb des Browsers in einer den Desktopanwendungen ähnlichen Architektur und Qualität erstellen. Die vorgestellten Konzepte sind größtenteils unabhängig davon, ob die Applikation als Webanwendung oder als Windows-Store-Anwendung in HTM5 und JavaScript laufen wird. Dieses Kapitel soll einen Überblick über die wichtigsten Konzepte sowie die Architektur einer in JavaScript entwickelten Anwendung geben.

Viele .NET-Entwickler stehen der „neuen JavaScript-Welt“ relativ skeptisch, gleichzeitig aber auch neugierig gegenüber. Lassen sich damit „richtige“ Anwendungen entwickeln? Wie soll das überhaupt gehen, so ganz ohne Typsicherheit? Diesen Fragen möchte ich auf den grund gehen. Begleiten Sie mich also auf einer Entdeckungsreise durch die alte neue JavaScript-Welt.

JS verändert .NET

Welche Auswirkungen hat die Einführung von JavaScript als First-Class-Language in der Windows-8-App-Entwicklung auf die Zukunft von .NET? Im Windows-Umfeld bedeutet die Einführung dieser neuen Möglichkeit, plattformübergreifend Oberflächen zu erstellen, auf längere Sicht, dass es eine Verschiebung geben wird. Oberflächen mobiler und verteilter Anwendungen werden mit zunehmender Tendenz in JavaScript entwickelt werden. Im Backend-Bereich wird .NET voraussichtlich seine Position sogar verstärken können, da mit JavaScript als Frontend-Technologie Windows Azure zunehmend auch attraktiver für nicht Windows-basierte Clients wird. Ein Blick auf die Möglichkeiten von JavaScript lohnt sich also in jedem Fall.

Das wahrscheinlich größte Missverständnis ist der Name der Programmiersprache JavaScript selbst. Weder hat diese Programmiersprache große Gemeinsamkeiten mit der Programmiersprache Java noch ist dies eine Script-Sprache im klassischen Sinne. JavaScript wird interpretiert, und die modernen Implementierungen der JavaScript-Engines (z. B. IE mit Chakra oder Chrome mit Google V8) müssen sich keinesfalls hinter den Implementierungen des .NET-Runtime oder Java-Runtime-Interpreters verstecken.

Seit der ersten Implementierung der Programmiersprache LiveScript (damals von Netscape zunächst so genannt) hat sich sehr viel verändert, von einer zur Manipulation von DOM-Elementen im Browser erschaffenen Sprache hin zu einer vollwertigen Umgebung für die Entwicklung plattformübergreifender client-, aber auch serverseitiger Anwendungen. Aber nicht nur im Webumfeld, sondern auch bei der Entwicklung mobiler Applikationen spielt JavaScript mit zunehmender Tendenz eine Rolle.

Was bedeutet das für uns Entwickler? Neben den klassischen Möglichkeiten einer rein serverseitigen Multiplattformanwendungsentwicklung kommt eine weitere Option zur Erstellung von plattformunabhängigen clientseitigen Anwendungen hinzu. Das bedeutet nicht, dass alle bisherigen Techniken durch JavaScript vollständig abgelöst werden, vielmehr werden vorhandene Techniken und Technologien ergänzt.

Die Qual der Wahl

Mittlerweile gibt es sehr viele leistungsfähige und umfangreiche Bibliotheken sowie Frameworks im JavaScript-Umfeld. Viele dieser Bibliotheken und Framewoks überschneiden sich teilweise in ihrer Funktionalität, ergänzen sich oder schließen sich manchmal auch aus. Da es nicht die eine Kombination gibt, soll im Folgenden zunächst die Architektur einer JavaScript-Anwendung genauer betrachtet werden, um im Anschluss die verschiedenen Verwendungsmöglichkeiten der einzelnen Bibliotheken und Frameworks innerhalb dieser Architektur etwas genauer zu betrachten sowie einen Überblick und eine erste Einführung in das Thema zu geben.

Bei der Entscheidung, welches das richtige Framework oder welches die richtige Bibliothek für eine der benötigten Teilfunktionen ist, kommen oft verschiedene Aspekte zusammen. So lassen sich in manchen Fällen bereits erworbene Kenntnisse mit anderen Technologien übertragen bzw. weiter nutzen. Möglicherweise soll die Abhängigkeit zu verschiedenen Anbietern von Bibliotheken eher gering gehalten werden, dann wäre ein Framework mit besonders großem Funktionsumfang wie AngularJS [1] oder Ember.js [2] zu empfehlen. Möchte man hingegen eher nicht von einem einzelnen Framework abhängig sein, lassen sich die Funktionen, die in der geplanten Single Page Application (SPA) benötigt werden, auch durch individuelles Zusammenstellen der einzelnen Bibliotheken abbilden.

JavaScript als Programmiersprache

Auf den ersten Blick erscheint diese Programmiersprache C/C++, C# oder Java sehr ähnlich. Jedoch verwendet diese Sprache teilweise sehr unterschiedliche Konzepte und Paradigmen. JavaScript ist eine dynamisch typisierte, objektorientierte, aber klassenlose Programmiersprache. Objekthierarchien und Vererbung lassen sich mithilfe der so genannten prototypischen Vererbung realisieren. Vereinfacht kann man sich vorstellen, dass es eine Vorlage (den Prototyp) anstelle der Klassendefinition gibt, die instanziiert würde. Dabei werden alle Eigenschaften des Prototyps auf die jeweiligen Klassen übertragen. Das Besondere hierbei ist, dass auch die Eigenschaften und Funktionen vererbt werden, die erst nachträglich zur Laufzeit hinzugefügt wurden.

Dazu kommen weitere Besonderheiten wie der Funktions-Scope, automatisches Konvertieren von Typen sowie teilweises automatisches Einfügen von Semikolons. Diese Eigenheiten führen zu einem anderen Verhalten als bei prozeduralen, imperativen, klassenbasierten Programmiersprachen mit strenger Typisierung und einem Block-Scope für lokale Variablen, wie in C# oder Java. Gerade weil die Syntax anderen Programmiersprachen teilweise zum Verwechseln ähnlich ist, ist es besonders wichtig, sich mit den Eigenheiten der Sprache auseinanderzusetzen.

Eine Mögli...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang