Keine Webseite oder –anwendung, mit der man Geld verdienen möchte, kommt heutzutage ohne JavaScript aus. Denn JavaScript, kurz JS, ist DIE Programmiersprache des Browsers, die 1995 von Netscape und Sun Microsystems entwickelt wurde. Um genau zu sein, handelt es sich um eine dynamische, objektbasierte Skriptsprache, mit der Sie in der Softwareentwicklung eine Webseite zum Leben erwecken, z.B. um:
Wenn sich also plötzlich Dinge auf Ihrem HTML-Dokument wie von Geisterhand bewegen, ist kein Gespenst, sondern JavaScript dafür verantwortlich. Je nach Browser-Modell kann JavaScript etwas unterschiedlicher ausfallen. Deshalb gibt es mit ECMAScript einen standardisierten Sprachkern, um alle Varianten auf Linie zu halten.
JavaScript ist im Kern eine objektbasierte Programmiersprache, das heißt, Sie können zwar Objekte mit Methoden und Eigenschaften erzeugen, aber es ist nicht üblich, Klassen zu erstellen, wie in C# – auch, wenn die Deklaration von Klassen mittlerweile möglich ist. Zu allem Überfluss hat JavaScript noch eine weitere Eigenschaft: JavaScript ist dynamisch. Das heißt, dass aus einer Variablen alles werden kann, was Sie sich wünschen. Aus einer Zahl kann ein Text werden, aus einem Meerschweinchen ein Auto. Toll! Diese Flexibilität hat aber auch einige Haken:
Wie lässt der Browser nun mit JavaScript die Puppen tanzen? Kern der ganzen Zeremonie ist eine JavaScript Engine, die einen Teil des Browsers darstellt. Bei Google Chrome ist für JavaScript die sogenannte V8 Engine zuständig. Um nun JavaScript auszuführen, passiert folgendes auf Ihrer Webseite:
Deshalb spricht man in der Softwareentwicklung auch von einer interpretierten Programmiersprache. Einige JavaScript Engines nutzen aber ähnlich wie C# auch streckenweise einen Just-In-Time-Compiler, um die Performance zu steigern. Das hat man sich schön abgeschaut. Das ändert aber nichts an der Tatsache, dass ein Softwareentwickler beim Programmieren aufpassen muss, dass alle Skripte, Funktionen und Variablen brav in der richtigen Reihenfolge geladen werden. Ein Unterschied zu C#, wo Sie relativ freie Hand bei der Strukturierung des Quellcodes haben. Jedenfalls solange sich Ihre Kollegen nicht über die Lesbarkeit des Codes beschweren.
Aus der überschaubaren Skriptsprache, die eigentlich mal für ein bisschen DOM-Manipulation und Formular-Validierung entwickelt wurde, ist mittlerweile ein Allrounder der Softwareentwicklung geworden. Neben der client-seitigen Webentwicklung, wie die Programmierung für den Browser in der Softwareentwicklung auch bezeichnet wird, haben sich vor allem drei weitere Einsatzgebiete herauskristallisiert:
JavaScript hat die Programmier-Welt des Browsers fest im Griff. Viele Softwareentwicklungs-Technologien haben schon nach dem Thron gegriffen: Flash, Silverlight oder JavaFX. Keiner hat es überlebt. JavaScript hat ihnen den Rang abgelaufen und sich in der clientseitigen Webentwicklung unangefochten durchgesetzt und beherrscht nun das ganze Browser-Königreich. Das ganze Königreich? Nein! Wer keine Lust auf JavaScript hat und dennoch für den Browser programmieren möchte, hat prinzipiell zwei Alternativen:
Ein Transpiler ist ein Programm, dass aus dem Quellcode einer Programmiersprache A zu einer Programmiersprache B übersetzt. Einer der bekanntesten Transpiler ist der von TypeScript, einer von Microsoft entwickelten Programmiersprache. Und so funktionierts:
Für die Befreiung vom JavaScript-Schmerz nehmen einige Entwickler einiges auf sich. Denn so schön TypeScript auch sein mag, der Prozess hat einige Tücken:
Mit Transpiler wie TypeScript kann je nach Ansicht des Entwicklers die Lesbarkeit und Wartbarkeit des Codes verbessert werden. Die Anschließende Transformation zu JavaScript, in diesem Kontext auch Build-Prozess genannt, kann es aufgrund der vielen Möglichkeiten auch in sich haben.
WebAssembly, kurz Wasm, beschreibt einen portablen Bytecode, der für die Ausführung von Anwendungen in einer speziellen Laufzeitumgebung (virtual machine), der Wasm stack machine, entwickelt wurde. Bleibt nur die Frage offen, was ist Bytecode und was ist mit Laufzeitumgebung gemeint? Bytecode ist nichts anderes als ein Haufen Nullen und Einsen – halt binär und nichts was man mit einem Texteditor lesen kann – die eine Sammlung an Befehlen, z.B. ein Programm oder eine Bibliothek, enthalten. Eine Laufzeitumgebung können Sie sich einfach als ein Betriebssystem im Betriebssystem vorstellen – nur ohne den ganzen Luxus, wie grafische Oberflächen, etc. Wenn Sie sich bereits mit .NET angefreundet haben, kennen Sie dieses Prinzip. Wie praktisch. Und wenn man sich in der Softwareentwicklung schon was von anderen abschaut, dann muss das ja was wirklich Tolles sein. Ganz genau!
Dieses Konzept verleiht nämlich WebAssembly eine ganze Reihe an nützlichen Eigenschaften:
Klingt doch sehr gut. Wenn ein Softwareentwickler nun Anwendungen mit WebAssembly programmieren möchte, um von diesen Eigenschaften zu profitieren, geht das wie folgt:
Wer keine Lust hat, alles mühevoll per Hand zu erledigen, kann sich auf Softwareentwicklungs-Werkzeuge wie Visual Studio und dem Framework Blazor WebAssembly verlassen: Neues Projekt für Blazor Wasm angelegt, noch schnell das Template angepasst, auf F5 gedrückt und schon kann es losgehen. Naja. Eigentlich geht die Programmier-Arbeit jetzt erst los. Aber wenigstens kann man mit der Arbeit anfangen. Eigentlich ist der Rest ja auch nur noch ein bisschen Programmierung – nur noch.
Für alle, die keine Lust mehr auf JavaScript-Chaos haben, stellt WebAssembly damit eine Alternative parat, die man sich auf jeden Fall mal anschauen kann oder Sie wählen den bequemen Weg und rufen einfach mal bei uns durch.