Node.js – ein Gastbeitrag von Jonathan Hethey

Von Niklas Resch @ro0kie4

Dieser Gastbeitrag ist von Jonathan M. Hethey. Er ist Blogger für jsnews.de, wo er regelmäßig über JavaScript bloggt. Außerdem führt er noch einen Blog names vollzeitblogger.de. Wer lieber in Englisch von Ihm lesen will sollte sein Glück mal bei jonathanmh.com versuchen.

In diesem Gastbeitrag geht es um Node.js. Aber lest doch einfach selbst.

Node.js Intro

Node.js ist ein relativ junges Webframework, das 2008 ins Leben gerufen wurde und JavaScript auf der Serverseite ausführt. Aufgebaut ist das Framework auf Googles V8 JavaScript engine, dass für seine Performance bekannt ist.

In diesem Artikel möchte ich einen kurzen Überblick verschaffen was Node.js ist, wofür es sich am Besten eignet und wo es schon im Einsatz ist, sowohl als Webserver, im Terminal oder in Desktopapplikationen.

Geschwindigkeit durch non-blocking I/O

Eine Besonderheit von Node.js ist, dass es in einem Prozessorthread läuft und die meisten Aufgaben asynchron ausführt. Das bedeutet häufig, dass der Code nicht unbedingt von Zeile 1 bis zum Ende der Datei ausgeführt wird, sondern in einer event loop, die nicht auf langsame Operationen wie Netzwerk- oder Festplattenzugriff wartet, sondern sich in der Wartezeit um die anderen Verbindungen kümmert und die Anfrage dann weiter beantwortet, wenn der Zugriff auf externe Ressourcen erfolgreich war.

Im Gegensatz zu PHP wird also nicht pro Anfrage / Request ein neuer Thread eröffnet, sondern es läuft alles in der node event loop, bis die Antwort / Response zurückgegeben wird. Alle Requests werden also von einem Prozess bedient, wo Apache für jeden Besucher oder jede Anfrage einen Prozess oder Thread eröffnet.

Pakete von der Community durch NPM

Ähnlich wie gem in ruby oder pythons pip gibt es einen Paketmanager, der von Entwicklern immer wieder gelobt wird, dank seiner lokalen Abhängkeitsauflösung. NPM, der Node Package Manager hat laut npmjs.org Zugriff auf 64 292 Pakete, die von der Community veröffentlicht und gepflegt werden. Einer der Ansätze der Node Community ist es, Pakete und Programmodule möglichst klein und wiederverwertbar zu halten.

Projekte rund um Node.js

Meiner Erfahrung nach scheuen Windowsbasierte Entwickler die Kommandozeile. Verständlich da alle Slashes falschrum sind, aber mit Node.js gibt es einen weiteren guten Grund mal wieder cmd auszuführen.

Die Bloggingplatform GHOST, die letztes Jahr veröffentlicht wurde, nachdem sie über Kickstarter finanziert wurde läuft mit Node.js. Forumsoftware, die Updates in Echtzeit liefert und nicht erst nach dem erneuten Laden der Seite ist als NodeBB verfügbar.

Das Buildtool Grunt, das teil des Yeoman Frameworks ist und die Alternative Gulp greifen beide sowohl auf Node als auch auf NPM zurück.

Adobe arbeitet an einem Editor, Brackets, der innherhalb der Creative Cloud als Adobe Edge Code verfügbar ist. Auch github hat kürzlich einen Editor namens Atom mit node-webkit als Kern angekündigt. Dies zeigt die wachsende Popularität für Node.js auch für Desktopapplikationen in Verbindung mit dem Chromiumbrowser.

Firmen, die Node.js einsetzen

Mehrere große Firmen haben schon teile ihrer Webapplikationen auf Node.js migriert und sparen dadurch entweder Serverkosten durch geringere Kapazitätsauslastung, sparen Entwicklungszeit oder erzielen geringere Latenzen.

Beispielsweise Trello, Walmart und PayPal setzen auf Node.js. Der NodeUP Podcast, der sich mit Themen und Firmen rund um Node.js beschäftigt hat Folgen, die ausschließlich den Entwicklern solcher Unternehmen gewidmet sind.

Node.js Geschichte

Ryan Dahl schrieb die erste Version von node 2009 um eine direktere Kommunikation zwischen Browser und Server zu ermöglichen. Das erste Release kam 2011 und lief nur unter Linux, heute sind MacOS und Windows auch sehr gut unterstützt.

Seit dem ersten Release haben sich zahlreiche Unternehmen an der Portierung und Entwicklung beteiligt. Hauptmaintainer von Node bleibt Joyent, Microsoft half bei der Portierungsarbeit auf Windows und machte Node.js in der Azure Cloud verfügbar.

Zusammenfassung

Auch wenn JavaScript auf dem Server zunächst merkwürdig klingen mag, ist es prinzipiell ja gleich welche Sprache interpretiert wird. Das Framework, das Node.js auf Googles V8 JavaScript Engine bildet ist ein mächtiges Werkzeug mit vorbildlichem Wachstum über die letzten Jahre. Niedrige Latenz, die Möglichkeit viele Verbindungen gleichzeitig zu versorgen und eine Community, die ständig neue Funktionalität in NPM Module verpackt sind für mich Gründe zunächst an Node zu denken wenn ich ein Webprojekt in Angriff nehme.

Für nicht-JavaScript Projekte kommen bei mir zumindest Grunt oder Gulp zum Einsatz um meine LESS Dateien zu kompilieren.

___

Das war ein Gastbeitrag von Jonathan M. Hethey. Wenn ihr weitere Fragen habt, dann wendet euch am besten über eine der oben genannten Seiten an Jonathan selbst oder schreibt mir eine E-Mail und ich werde den Kontakt versuchen herzustellen.

Euer Nik