Schreibe einen Kommentar

Node.js: Blitzschnelles und stabiles JavaScript

Was verbirgt sich eigentlich hinter Node.js? Wir begeben uns auf Spurensuche.

In Berlin nahm die Geschichte des Frameworks Node.js ihren Anfang: An einem grauen Novembertag im Jahr 2009, so grau, wie es Novembertage wahrscheinlich nur in Berlin gibt, trafen sich einige hundert Webentwickler zur JavaScript­Konferenz JSConf.eu. Der europäische Ableger einer sehr erfolgreichen US-­Konferenz, die außerdem die weltweit erste JavaScript-­Konferenz überhaupt war, feierte Premiere.

Gekommen waren echte Größen der JavaScript­-Szene: der JSON-­Entwickler Douglas Crockford, Googles Performance-­Spezialist und O’Reilly­-Autor Steve Souders, und, neben anderen, auch ein junger Programmierer namens Ryan Dahl. Unter der unspektakulären, fast zu nüchternen Überschrift „Node.js, Evented I/O for V8 Javascript“ (Slides) stellte Dahl eine neuartige Programmierumgebung für JavaScript vor, die die Anwesenden sofort durch ihre hohe Performance überzeugte. Dahl erhielt Standing Ovations, und Node.js empfahl sich als das „upcoming“ Projekt, das inzwischen über eine eigene Konferenz sowie Entwicklercamps verfügt. Doch was verbirgt sich hinter Node.js?

JavaScript für moderne Webanwendungen

nodeupandrunningger.sAls erfahrener IT’ler wissen Sie: Die Branche lebt von Trends – sie werden von hochgejubelt und niedergeschrieben, auch im Fall von Node.JS. Auch vor Node.js gab es bereits einige Frameworks, die die Webentwicklung revolutionieren sollten, und sicherlich noch mehr junge Program­mierer, die geradezu als Wunderkinder gehandelt wurden, weil sie ein vielversprechendes Projekt begründeten. Die Plattform »Ruby on Rails« und ihre Leichtgewichtigkeit und bausteinartige Funktiona­lität führten etwa dazu, dass Webanwen­dungen sehr viel schneller als bisher erstellt werden konnten. Rails überzeugt noch heute, wird jedoch längst nicht so häufig eingesetzt wie zunächst gedacht.

Um nun die Bedeutung der Plattform Node.js nachzuvollziehen, sollte man sich zu ­nächst deren Besonderheiten genauer an ­sehen: Zunächst ist Node.js eine Programmierumgebung für die Skriptsprache Java­Script – die wiederum neben HTML und CSS als wichtigste Technologie für moderne Webseiten gilt. Kaum eine Webanwendung kommt mehr ohne JavaScript aus, und jeder Entwickler muss zwingend JavaScript­-Know­how mitbringen. JavaScript übernimmt dabei die Interaktion der Webanwendung mit dem User: Füllt dieser ein Webformular aus, prüft JavaScript die Plausibilität der Daten und lädt entsprechende Rückmeldungen der Anwendung nach. Ein weiteres Beispiel für im Hintergrund laufendes JavaScript ist das automatische Vorschlagen von Suchbe­griffen, noch während man diese in eine Suchmaschine eintippt. Diese für den User zeitsparende und äußerst nützliche Funk­tionalität ist jedoch fehleranfällig. Gerade bei komplexeren Anwendungen, die eine Vielzahl von Abfragen zwischen Browser und Web­server erfordern, kann es dazu kommen, dass diese sich gegenseitig blockieren. Die Folge: Der User muss warten.

Asynchroner, ereignisgesteuerter Ablauf

Genau hier setzte Ryan Dahl an: In seinem Framework Node.js setzt er auf Asynchronität, alle Prozesse laufen komplett unabhängig voneinander ab. Während eine PHP­-Anwen­dung beispielsweise alle Anfragen an einen Server nacheinander abarbeitet, kann Node.js dies parallel erledigen. Außerdem ist Node.js so konstruiert, dass kein Prozess zum Stocken der Anwendung führt. Dieses Verhalten wird als non­blocking, also »nicht­blockierend« bezeichnet und garantiert gerade modernen, vielschichtigeren Webanwendungen eine schnelle und stabile Ausführung.

Ein praktisches Beispiel: Ein User lädt ein Video auf einen Server hoch. Dieses Video soll gleichzeitig in ein anderes Format umge­wandelt werden und der User soll Rückmel­dungen über den Fortschritt des Uploads erhalten. Node.js kann diese Aufgaben parallel erfüllen, indem eine While­Schleife (»Event­ Loop«) sie anstößt und dann regelmäßig
nachfragt (»Callback­Funktion«), ob inzwischen Daten verfügbar sind. Falls nicht, läuft sie weiter – bis sie das nächste Mal am Prozess vorbeikommt. Stockt dabei ein Prozess, so
blockiert nicht gleich die ganze Anwendung. Der gleichzeitige Zugriff auf Festplatte und Netzwerk – unter Entwicklern als I/O be zeich­net – gefährdet also nicht den Ablauf der Anwendung. Dies gilt auch, wenn nicht nur mehrere Anfragen eines Users kommen, son­dern mehrere User gleichzeitig auf eine Website zugreifen. Überlastete Server und unerreichbare
Websites sollen mit Node.js die Ausnahme bleiben.

Node.js auf einen Blick
Node.js ist eine JavaScript­Programmier­umgebung, die das völlig asynchrone Ablaufen von Skripten ermöglicht. Dadurch laufen die Webanwendungen deutlich schneller und sicherer ab, Endlosschleifen und dadurch bedingte Abstürze des Browsers werden zur Ausnahme. Die JavaScript­-Prozesse laufen außerdem nicht im Browser des Users (clientseitig), sondern auf dem jeweiligen Webserver (serverseitig).

Begründer: Ryan Dahl
Mittlerweile wird der Amerikaner, der übrigens auch schon in Deutschland lebte, von einer weltweit aktiven Community unterstützt. Hinter Node.js und Ryan Dahl steht auch dessen Arbeitgeber, das Softwarehaus Joyent (Kalifornien).

Versionsgeschichte:
Version 0.0 / Sommer 2009
Version 0.5 / Juli 2011
Version 0.6 / November 2011
Version 0.8 / Juni 2012 Aktuelle, stabile Version.
Version 0.9 soll im Januar 2013 veröffentlicht werden.

Node.js steht unter der MIT-­Lizenz, d.h. es darf frei verwendet und auch kommerziell eingesetzt werden (Open Source).

Auszeichungen:
Open Source Award von O’Reilly Media auf der Konferenz Oscon 2011. Bossie Award für beste Open­Source­ Software 2011.

Weitere Informationen:
Im Oktober 2010 sprach Tim Pritlove mit einem der Mitentwickler, Felix Geisendörfer, im Chaosradio Express über node.jsDas t3n-­Magazin berichtete über Node.js, außerdem Heise.de. Im O’Reilly Radar finden Sie einen vertiefenden Artikel (englisch).

Projektseite:
http://nodejs.org

Serverseitig

Dazu kommt, dass Node.js­-Anwendungen auf dem Server ausgeführt werden. Diese Idee ist nicht neu, schon seit Mitte der Neunziger gibt es immer wieder Versuche, JavaScript vom Browser auf den Server zu verlagern. Vorteil ist auch hier eine höhere Performance: Node.js basiert nämlich auf Googles Hochgeschwin­digkeitswunder, der JavaScript Engine V8. Verschiedene Vergleichsmessungen bewiesen eine deutlich schnellere Reaktionszeit eines Node.js­-Servers im Vergleich etwa zu Apache­-Servern.

Node.js in der Praxis

Webentwickler sind darüber hinaus nicht nur von der sehr guten Performance, sondern auch von der Funktionalität des Frameworks beeindruckt: Node.js selbst ist zunächst sehr schlank, kann bei Bedarf jedoch durch mehrere tausend verfügbare Module erweitert werden. Und der Einstieg gelingt leicht, zumal im Web einige gute Manuals verfügbar sind. Eine fundierte Einführung in Node.js bekommen Sie auch bei O’Reilly-Autor Tom Hughes-Croucher, der als Chief Evangelist bei Node.js beteiligt war. Gemeinsam mit seinem Co-Autor Mike Wilson schrieb er „Node.js: Up and Running“, das seit einigen Wochen nun auch in deutscher Übersetzung vorliegt (auch als E-Book).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.