Am 11.12. traf sich die JUG-DA zu einem Vortrag von Golo Roden zum Thema “node.js & Co.". Der Vortrag an sich startete für meinen Geschmack etwas zu high-level-mäßig. Das war allerdings weniger der Kompetenz des Redners geschuldet, sondern eher der Tatsache, dass er die meisten Leute mit einem möglichst einfachen Beispiel abholen wollte. Der Speaker selbst ist in der node.js-Szene kein Unbekannter. Golo Roden hat u. A. das deutschsprachige Buch node.js & Co. geschrieben und ist häufig auf Konferenzen - allerdings eher im .NET-Bereich - vertreten.
Nach einer kurzen Einführung in die Konzepte von node.js hat Golo Roden anhand einer Live-Demo eine Web-Applikation entwickelt, die m. M. n. sehr schön gezeigt hat, was node.js leistet. Man muss an dieser Stelle insbesondere das reichhaltige Ökosystem um node.js erwähnen: So existieren Anbindungen für zahlreiche Datenbanken, sowie Unterstützung für eine Vielzahl von High- und Low-Level-Netzwerkprotokollen uvm.
Aufgrund der Kürze hat sich die Demonstration natürlich auf ein Thema beschränkt: Webentwicklung mit node.js am Beispiel einer Chat-Applikation. Backend-seitig kamen hier im Wesentlichen zwei Bibliotheken zum Einsatz:
- express: express ist eine Bibliothek, die Unterstützung für ein URI-basiertes Routing-Konzept mitbringt
- now: now erweitert einen node.js Server um die Möglichkeit, per WebSockets zu kommunizieren. Das Schöne an now ist, dass es auf socket.io basiert und damit eine Vielzahl von Fallback-Lösungen mitbringt, um das Verhalten von WebSockets auf Basis anderer Technologien (Long Polling, Flash Sockets, ...) zu emulieren, sofern ein client-seitiger Browser WebSockets nicht unterstützt. Dadurch erreichen WebSocket-basierte Lösungen mit node.js eine Abwärtskompatibilität bis hin zum IE 5.5.
Die Einsatzszenarien von node.js beschränken sich aber nicht nur auf die Webentwicklung. Man kann genauso gut auf einer weitaus tieferen Ebene im Netzwerkstack arbeiten und (Applikations-)Protokolle auf Basis von IP/UDP/TCP entwickeln - entsprechende Bibliotheken stellen den nötigen Abstraktionsgrad bereit.
Kleine Randnotiz: node.js läuft wunderbar auf Embedded-Plattformen wie bspw. dem Raspberry Pi. Das ist nicht nur für Bastler interessant, sondern potentiell auch für Firmen, die an Low-Cost-Servern interessiert sind - z. B. um interne Services anzubieten.
Ein paar Kritikpunkte an node.js hat der Speaker dennoch angesprochen. So gestaltet sich das Debugging einer node.js-Applikation aufgrund der asynchronen Natur und potentiell verschachtelten Callback-Strukturen im Code nicht unbedingt einfach. Ein wenig Abhilfe schafft hier node-inspector in Kombination mit Chrome, der als einziger Browser eine umfangreiche Debugging-Konsole für node.js mitbringt. Den mangelhaften IDE-Support sieht Golo Roden jedoch nicht als Problem an.
Insgesamt war das eine durchaus interessante JUG-Veranstaltung. Der praktische Teil zur Entwicklung mit node.js hat überzeugt, v. a. da man End-to-End mit dem selben Technologiestack arbeiten kann. Wenn man sich also mit server-seitigem JavaScript anfreunden kann, dann hat man sicherlich auch Spaß an node.js. Wer Interesse hat, tiefer in den Kaninchenbau hinabzusteigen, dem sei zum Einstieg http://nodejs.org empfohlen. Dort findet man neben einer guten Einführung weiterführende Links zu API-Dokumenten usw.