Webkrauts Logo

Webkrauts Webkrauts Schriftzug

- für mehr Qualität im Web

Neues aus dem Maschinenraum

Node.js

Neues aus dem Maschinenraum

Zuerst erfolgte bei Node.js der großen Sprung von Version 0.12 zu 4.0, dann kam schon kurz darauf Ende Oktober die Version 5. Was ist in der Zwischenzeit passiert und wie geht es zukünftig weiter?

Das Jahr 2015 war ein ereignisreiches für die Node.js-Community: Ende 2014 führte Unmut über den langsamen Fortschritt der Plattform unter Joyents Regie (der Firma hinter Node.js) zur Abspaltung des »io.js« getauften Projektes. Schon im Januar 2015 erfolgte dann das erste Release (Version 1.0). Ziel war es, die Community und die Mitwirkenden dabei zu unterstützen, effektiv die weitere Planung und Entwicklung voranzutreiben. Erst durch diesen Fork kam auch wieder sichtbare Bewegung in die Node.js-Entwicklung, und so folgte im Februar als Reaktion darauf endlich die lang ersehnte Node.js-Version v0.12.0 – fast zwei Jahre nach der Veröffentlichung der Version 0.10.

In der Zwischenzeit überflügelte die Entwicklungsaktivität bei io.js kurz nach der Gründung schon bei weitem die des Node.js-Projektes: Aktualisierungen und Verbesserungen, auf die Entwickler schon lange gewartet hatten, flossen nun in vielen Bereichen in den Code ein. Trotzdem gingen parallel dazu die Gespräche mit Joyent weiter, denn von Anfang an war es der Wunsch von allen Beteiligten, nicht die Community in zwei Lager spalten zu wollen. Der Plan entstand, die Verantwortung für Node.js an eine unabhängige Stiftung zu übertragen, und beide Entwicklungs-Stränge wieder zusammenzuführen.

Node.js v4 war im September schließlich die erste Version, die unter der Schirmherrschaft der neugegründeten Node.js-Foundation veröffentlicht wurde und die bisherigen Codebasen von Node.js und dem io.js-Fork wieder vereinte.

Zeitstrahl »The Node.js Journey«
»The Node.js Journey«, Grafik mit freundlicher Genehmigung von NodeSource

Was hat sich geändert?

Die aktuellen Node.js-Releases halten sich nun strikt an das bereits von npm-Modulen bekannte »Semantic Versioning« (kurz »semver«), so dass für Nutzer unmittelbar ersichtlich ist, ob ein neue Version Patches und Bugfixes enthält, neue abwärtskompatible Features, oder potentielle »Breaking Changes«. So profitieren Entwickler schneller von Geschwindigkeits- und Stabilitätsverbesserungen, ohne große Risiken beim Versionswechsel einzugehen.

Eine Liste mit allen Detail-Änderungen zwischen Version 0.10 und 4.0 hilft beim schnellen Umstieg auf die neue Version. Verwenden bereits installierte npm-Module native Funktionen in C (wie etwa node-sass oder mongoose), müssen diese nach dem Update lediglich einmal mit dem Befehl npm rebuild neu kompiliert werden. Ergänzend dazu finden sich hier die Änderungen in Version 5.0.

Neue JavaScript-Funktionen mit ES6

Die Node.js-Entwicklung ist eng an die Entwicklungen in Googles V8 JavaScript-Engine gekoppelt. Dadurch halten auch neue ES6-Sprachfeatures zeitnah Einzug in aktuelle Releases.

Mit dabei sind unter anderem Block-Scoping von Variablen mittels let und const, Klassen und neue Collections (wie Map und Set), Generator- und Arrow-Funktionen oder native Promises.

In Version 5 sind der Spread operator, Array.prototype.includes (erfordert momentan noch das Flag --harmony_array_includes) und Rest Parameter (erfordert --harmony_rest_parameters) neu hinzugekommen.

Neuer Langzeit-Support für Produktiveinsatz

Mit der Version 4 wurden jetzt auch erstmals verbindliche Regeln für den Long-Term-Support (LTS) definiert, von denen all jene profitieren, die auf Stabilität und Sicherheit in produktiven Umgebungen angewiesen sind:

Einmal im Jahr soll es künftig ein solches LTS-Release geben, das achtzehn Monate lang mit Bugfixes, Sicherheitsupdates und möglichen Performance-Verbesserungen versorgt wird, ohne dabei bestehende Funktionalitäten zu verändern. Nach Ablauf dieser Zeit, wandert diese LTS-Version in den sogenannten »Wartungsmodus«, in dem für weitere 12 Monate ausschließlich kritische Bugfixes und Sicherheitspatches zu Verfügung gestellt werden. So kann ein stabiler und sicherer Betrieb für zweieinhalb Jahre gewährleistet werden.

Node.js 4.2 (Codename »Argon«) ist das erste der neuen LTS-Releases. Die bisherige Node.js-Version 0.10 befindet sich bereits im erweiterten Wartungszeitraum, Version 0.12 tritt in diesen ab April 2016 ein.

Governance

Wurde früher die Entwicklung hauptsächlich von Joyent (der Firma hinter Node.js) und einer kleinen Gruppe von Kern-Entwicklern vorangetrieben, setzte der io.js-Fork auf ein »Open Source Governance«-Modell, das auch für die weitere Entwicklung von Node.js übernommen wurde: Kern dabei ist, dass möglichst viele Leute in die Lage versetzt werden sollen, gleichberechtigt am Projekt mitzuarbeiten (ähnlich einem Wiki-Eintrag) und Verantwortung übernehmen zu können.

Das zeigt sich vor allem an den vielen Working Groups, die an wichtigen Teilaspekten der Node.js-Entwicklung arbeiten: Neben der eigentlichen Hauptentwicklung tragen Teams für technische Komponenten wie Streams oder Debugging, aber auch Bereiche wie etwa die Node.js-Website, Dokumentation, Lokalisierung, Evangelism oder Long-Term-Support entscheidend bei.

Neben den vielen technischen Neuerungen ist es gerade diese Projektphilosophie, die eine der wichtigsten Änderungen darstellt und die Grundstimmung des Projektes neu definiert.

Fazit

Node.js hat sich mit den aktuellen Versionen entschieden weiterentwickelt. Wer auf durchgängige API-Stabilität angewiesen ist oder mit einer komplexen Produktivumgebung arbeitet, für den empfiehlt sich der Einsatz von Node.js v4.2.x. Wer hingegen stets die neusten Features nutzen will und schnell und flexibel seine Arbeitsumgebung aktualisieren kann, ist mit Node.js v5.x gut beraten. Die neuen Features machen Spaß und sind wirklich eine Bereicherung für die Arbeit mit JavaScript.

Kommentare

Gerald Forster
am 13.12.2015 - 13:17

Herzlichen Danke für den Artikel! Bringt Licht in die etwas unübersichtliche Historie von Node.js.

Permanenter Link

Die Kommentare sind geschlossen.