BASTA! Countdown

Entwickeln mit HTML5 und JavaScript ist angenehmer als mit WPF und C#
Kommentare

JavaScript ist auch im .NET-Umfeld immer weiter verbreitet. Auf der BASTA! 2013 wird Ingo Rammer (thinktecture) verschiedene Sessions zu JavaScript, HTML5 und mehr halten. Wir haben ihm im Interview einige Fragen zu seiner bevorzugten Sprache gestellt und nachgefragt, auf welchem Status sich diese denn eigentlich befindet.

Windows Developer: Ingo, auf der BASTA! 2013 hältst du eine Session mit dem Titel „Modernes JavaScript für .NET-Entwickler: Strukturieren & Modernisieren“. Inwiefern unterscheidet sich modernes JavaScript denn überhaupt von seiner ursprünglichen Variante?

Ingo Rammer: Von der Sprache selbst her handelt es sich größtenteils noch um das gleiche JavaScript wie vor zehn Jahren. Bei der angesprochenen Modernität geht es vor allem um ein grundlegendes Verständnis „um die Sprache herum“. Waren die ersten Bibliotheken vor mehr als zehn Jahren z.B. noch durchwegs einfache Methodensammlungen, so wurden diese später durch Frameworks wie jQuery zumindest soweit gekapselt, dass – auf Quellcode-Ebene – eine gewisse Isolation stattgefunden hat. Eine Applikations-Funktion „dialog()“ und die gleichlautende Funktion des jQuery-Frameworks konnten damit einigermassen problemlos nebeneinander existieren.

Mit der dritten Phase von JavaScript-Anwendungen, in der wir uns momentan befinden, wurde damit begonnen, diese Isolation weiterzuführen. Heute gibt es nicht mehr nur isolierte JavaScript-Blöcke, sondern aktuelle Frameworks erlauben, auch HTML-Elemente gemeinsam mit Programmcode als klassische Komponenten zu verpacken. Erst dadurch wird es in der Praxis möglich, große Applikationen einigermaßen wartbar zu machen. Im Prinzip handelt es sich dabei auch nicht um einzelne Technologien, sondern um Kombinationen von neuen Arten, CSS zu schreiben, von (mindestens) Closure-basierten Entwurfsmustern im JavaScript-Umfeld bis hin zu den aktuellen Frameworks für große, clientseitige Anwendungen.

Das klingt für den Novizen jetzt möglicherweise erst einmal verwirrend, ist aber in der Praxis einfacher als in der Theorie, sobald man sich für ein Framework entschieden hat.

Windows Developer: Wieso ist JavaScript in letzter Zeit auch für .NET-Entwickler interessant geworden und welche Vorteile haben diese durch die Verwendung der Sprache?

Ingo Rammer: Viele der Entwickler, die uns zu diesem Thema ansprechen, stehen einfach vor der grundsätzlichen Herausforderung, mobile Geräte anbinden zu müssen. Je nach Applikationstyp bietet es sich an, entweder einzelne native Applikationen für alle Plattformen zu entwickeln (meist Windows klassisch, Windows 8, Android, iOS, evtl. Mac sowie oft auch noch eine Web-Version) oder an einer gemeinsamen JavaScript-Basis zu arbeiten. Die kann – bei entsprechendem Design – in Folge sowohl als Web-Anwendung, als auch (mit Wrappern wie PhoneGap/Cordova, Awesomium oder CEF) als native Applikation verpackt ausgeliefert werden.

Gleichzeitig bieten sich viele Interoperabilitätsmöglichkeiten an: Wir haben zum Beispiel im letzten Jahr an verschiedenen Projekten gearbeitet, die neue Funktionalitäten bereits in JavaScript entwickeln (als Basis für eine spätere Migration), und diese innerhalb von existierenden WPF, WinForms, Delphi und sogar Access-Anwendungen einbinden.

Windows Developer: Wie sieht es mit dem Tooling für JavaScript-Anwendungen in der Microsoft-Welt aus? Wäre es aufgrund mangelnder Optionen vielleicht doch besser, an C#, Silverlight etc. festzuhalten?

Ingo Rammer: Gerade beim Tooling erinnern sich viele Entwickler leider an frühere JavaScript-Erfahrungen, die fünf oder mehr Jahre zurückliegen. Die heutigen Entwicklungswerkzeuge haben damit relativ wenig zu tun. IDEs wie Visual Studio 2013 oder vor allem mein persönlicher Favorit WebStorm von JetBrains bieten durch automatische Codeanalyse Funktionen wie IntelliSense für die dynamischen JavaScript-Objekte an.

Dieses IntelliSense kann aufgrund der dynamischen Natur der Sprache nicht zu 100 Prozent vollständig sein. Mit ein wenig zusätzlicher Vorbereitung erreicht man jedoch sogar ein vollständiges „Typ-basierendes“ IntelliSense, wie man es von statisch kompilierten Sprachen gewöhnt ist.

Der wirkliche Vorteil von JavaScript- und HTML-basierten Applikationen ist jedoch (bei entsprechendem Aufbau der Applikation) die Möglichkeit, Code einfach zu ändern und mit F5 (oder Cmd-R auf MacOS) im Browser sofort zu testen. Kompilierungszyklen, die bei komplexen WPF-Anwendungen gerne mal 30, 60 oder mehr Sekunden dauern können, gehören damit definitiv der Vergangenheit an. Ähnliches gilt für das interaktive Styling von Elementen: In praktisch allen aktuellen Browsern kann man CSS interaktiv bearbeiten und sieht sofort das geänderte Styling. Mit Chrome kann man die dynamischen Informationen sogar mit den zugrundeliegenden Dateien auf der Festplatte verknüpfen und damit den Browser wie eine interaktive, dynamische IDE verwenden.

Gerade aus diesen beiden letzten Gründen empfinde ich persönlich das Tooling und den Entwicklungsprozess mit HTML und JavaScript sogar um einiges angenehmer als mit WPF und C#.

Windows Developer: Hand auf’s Herz: Wie viel ist an den Vorurteilen rund um JavaScript wirklich dran? Und wenn ein Fünkchen Wahrheit dabei ist: Wie kann man vermeiden, den Nachteilen der Sprache zum Opfer zu fallen?

Ingo Rammer: JavaScript hat historisch gesehen einen großen Vorteil, der bei komplexen Programmen leider auch zum Nachteil werden kann: Es ist eine Mehr-Paradigmen-Sprache. Man kann es prozedural, funktional und objektorientiert programmieren. Aufgrund der – für einen C#-Entwickler ungewohnten – Verwendung von prototypischer Vererbung statt der Nutzung von Klassendefinitionen ergibt sich dadurch zusätzlich ein gewisser Mangel an gemeinsamer Struktur.

Das bedeutet in der Praxis, dass es mit JavaScript oft verschiedenste Wege gibt, um ähnliche Ziele zu erreichen: Zum Beispiel gibt es eine Handvoll komplett unterschiedlicher Möglichkeiten, um klassenähnliche Basisobjekte zu definieren. Für mich persönlich ist es daher bei einem Projekt ungemein wichtig, dass sich alle Entwickler auf bestimmte Wege einigen, sodass die zugrundeliegenden Entwurfsmuster im Code auch eindeutig erkannt werden. Man sollte sich also auf eine Art der „Klassendefinition“ einigen, sodass jeder Entwickler des Projekts beim Lesen des Codes sofort auf einen Blick erkennt, dass es sich um diese Art der Definition handelt, ohne dass er den Code komplett im Kopf parsen und interpretieren muss.

Ganz generell gibt es natürlich zusätzlich auch syntaktische und semantische Besonderheiten in JavaScript, die man unbedingt kennen sollte. Ich empfehle dafür oft das sehr dünne und einfach zu lesende Buch „JavaScript – The Good Parts“ von Douglas Crockford. Dieses Buch hilft meiner Meinung nach ungemein dabei, JavaScript als Sprache zu verstehen und effektiv nutzen zu können.

Windows Developer: Inwiefern können Frameworks wie etwa AngularJS die Entwicklung mit JavaScript erleichtern?

Ingo Rammer: Gerade die aktuellen clientseitigen Frameworks (nicht nur AngularJS, sondern auch fast alle anderen) geben dem Entwickler gewisse Strukturrichtlinien vor. Diese geben dem Code ein einheitliches Aussehen und erlauben damit, dass man sich schneller in eine Codebasis einarbeiten kann.

AngularJS geht durch die konsequente Kapselung von DOM-Zugriffen noch einen Schritt weiter und zwingt den Entwickler fast schon zur Entwicklung von gekapselten GUI-Komponenten und davon isolierter, testbarer Applikationslogik.

Die Lesbarkeit von AngularJS-Applikationen ist daher in meinen Augen um einiges besser als die der meisten anderen Frameworks. Insbesondere „Framework-freie“ Entwicklung (z.B. mit einfacher direkter Nutzung von jQuery unter Verzicht auf jede weitergehende clientseitige Strukturvorgaben) würde ich jeweils etwas kritisch sehen, da dies oft mit schlecht lesbarem, tief verschachtelten, gemischten GUI- und Applikations-Code endet.

Windows Developer: Danke für das Gespräch!

© Ingo Rammer

Ingo Rammer ist Mitgründer und Geschäftsführer von thinktecture, wo er seit mehr als einem Jahrzehnt Softwareentwickler und -Architekten zum optimalen Einsatz von Entwicklungstechnologien und -tools berät. Seit einigen Jahren liegt sein Schwerpunkt bei der Entwicklung von großen HTML5-Anwendungen, sowie beim Multi-Targeting dieser Applikationen von Desktop, über iPad-/Android-/Windows-Tablets bis hin zu Smartphones der wichtigsten Hersteller. Ingo Rammer ist einer der beiden Autoren von http://henriquat.re, einem kontinuierlich veröffentlichtem E-Book zu AngularJS für .NET-Entwickler. Sie erreichen ihn unter ingo.rammer@thinktecture.com, sowie bei twitter unter @ingorammer.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -