Node.js
| Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden.
| |
|---|---|
| [[Datei:Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.|150px]] | |
| Basisdaten
| |
| Maintainer | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Entwickler | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Erscheinungsjahr | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Aktuelle Version | 26.3.0 (Current) 1. Jun. 2026<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> 24.16.0 (LTS) 22.22.3 (LTS) |
| Aktuelle Vorabversion | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.) |
| Betriebssystem | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Programmiersprache | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Kategorie | Framework, Interpreter |
| Lizenz | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| nodejs.org | |
Node.js ist eine plattformübergreifende Open-Source-JavaScript-Laufzeitumgebung, die JavaScript-Code außerhalb eines Webbrowsers ausführen kann. Damit kann zum Beispiel ein Webserver betrieben werden. Node.js wird in der JavaScript-Laufzeitumgebung V8 ausgeführt, die ursprünglich für Google Chrome entwickelt wurde, und bietet eine ressourcensparende Architektur, die eine besonders große Anzahl gleichzeitig bestehender Netzwerkverbindungen ermöglicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Sebastian Springer: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> Node.js wurde ursprünglich von Ryan Dahl 2009 entwickelt, einem Software-Entwickler aus San Diego, Kalifornien.<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> 2018 stellte Ryan Dahl mit Deno einen Nachfolger für Node.js vor, der einige als grundlegende Probleme identifizierte Eigenschaften von Node.js beheben soll.<ref>heise.de Ryan Dahl: Designfehler von Node.js und sein neues Projekt</ref>
Architektur[Bearbeiten]
Die Skriptsprache JavaScript gibt eine ereignisgesteuerte Architektur vor. Diese hat im Server-Betrieb den Vorteil, pro bestehender Verbindung weniger Arbeitsspeicher zu benötigen als bei vergleichbaren Anwendungen, die für jede geöffnete Verbindung einen eigenen Thread starten.
Performance[Bearbeiten]
Node.js wird mit besonderem Fokus auf die Performance entwickelt. So kommt nonblocking I/O statt standardmäßigem blockierendem I/O zum Einsatz.
Zugriffe auf das Netzwerk und Dateisystem werden über die von Libuv bereitgestellte Ereignisschleife (event loop) und den darunterliegenden Thread Pool abgearbeitet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Dadurch werden weniger eigene Threads erstellt und der Overhead minimal gehalten.
Module[Bearbeiten]
Node.js enthält einige Module, die direkt in das Binärpaket kompiliert wurden. Dazu gehören neben dem Modul für asynchronen Netzwerkzugriff auch Adapter für das Dateisystem, Puffer, Zeitgeber und eine allgemein gehaltene Datenstrom-Klasse.
Darüber hinaus können zusätzliche Module eingebunden werden, zum Beispiel über vorkompilierte Dateien mit der Dateiendung .node oder in Form einfacher JavaScript-Dateien. Die JavaScript-Module folgen der CommonJS-Konvention, einem Standard für JavaScript-Systeme, die außerhalb von Browsern betrieben werden, und stellen somit über eine Variable namens exports Zugriff auf Funktionen und Variablen des entsprechenden Moduls her.<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (englisch).</ref>
Zur Verwaltung der Module gibt es den Paketmanager npm, in dessen Depot sich über 751.000 Pakete (Stand: Juli 2018) befinden.<ref>npmjs.com npmjs.com npm registry</ref> Dieser sorgt unter Berücksichtigung von Abhängigkeiten für die Installation, Aktualisierung und das Kompilieren von Binärmodulen.<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref>
Kritik[Bearbeiten]
Der ursprüngliche Entwickler von Node.js, Ryan Dahl, kritisierte das Node.js-Projekt stark. Das Build-System von Node.js (node-gyp) bezeichnete er als den größten Fehler des Projekts. Im Rahmen der JSConf EU 2018 benannte er zehn große Designfehler der Laufzeitumgebung. Das Build-System von Node.js sei immens kompliziert und von gewöhnlichen Programmierern schwer zu handhaben. Damit meinte er Module, die nicht in JavaScript, sondern in anderen Sprachen wie C++ geschrieben wurden und im Build-Prozess kompiliert werden müssen.<ref>heise.de: Build-System größter Fehler von Node.js</ref> Auch kritisierte er die Komplexität des Modulsystems. Seine Vorstellung einer neuen Laufzeitumgebung Deno klang wie eine Entschuldigung an all die Programmierer, die unter der von ihm entwickelten Technologie gelitten hatten. Dabei wurden die meisten Design-Entscheidungen nicht von ihm, sondern anderen Entwicklern gefällt. Ryan Dahl war nur bis 2012 Projektleiter von Node.js.<ref>Entwickler.de: Ann-Cathrin Klose: Node.js ist der De-facto-Standard in Sachen serverseitigem JavaScript. Neben Node konnten sich wenig Alternativen am Markt etablieren – jetzt hat Ryan Dahl, Erfinder von Node, mit Deno einen neuen Anlauf gestartet. Seine Präsentation wirft Fragen auf.</ref>
Beispiele[Bearbeiten]
HTTP-Server-Version eines Hallo-Welt-Programmes in Node.js, das text/html als Content-Type-Header und den Port 3000 verwendet: <syntaxhighlight lang="javascript"> const http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.write('Hallo Welt');
res.end();
}).listen(3000); </syntaxhighlight>
Als weiteres Beispiel ein einfacher TCP-Server, der auf Port 7000 Daten empfängt, mit „Hallo“ antwortet und dann alle empfangenen Daten unverändert zum Client zurücksendet: <syntaxhighlight lang="javascript"> const net = require('net'); const endOfLine = require('os').EOL;
const server = net.createServer(function (socket) {
socket.setEncoding('utf8');
socket.write('Hallo' + endOfLine);
socket.pipe(socket, {
end: false
});
socket.on('end', function () {
socket.end('Auf Wiedersehen' + endOfLine);
});
});
server.listen(7000, 'localhost'); </syntaxhighlight>
Ehemaliger Fork „io.js“[Bearbeiten]
Aufgrund von Unzufriedenheit mit dem Tempo der Weiterentwicklung spaltete sich das Projekt io.js von Node.js ab, in dem einige der wichtigsten Node.js-Entwickler weiterarbeiteten, die mit dem Mutterprojekt unzufrieden waren.<ref>Node.js gains a new fork, much to Joyent’s dismay, infoworld.com, abgerufen am 5. Dezember 2014.</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> Das erste Release wurde am 13. Januar 2015 freigegeben. Der Fork ist kompatibel zu Node.js und dem Node Package Manager.<ref>Golo Roden: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Am 15. Mai 2015 verkündeten beide Projekte die Zusammenführung zur Node.js-Foundation, die eine gemeinsame Weiterentwicklung unter einem Open-Government-Modell ermöglichen soll.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. nodejs.org, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. medium.com, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Die Zusammenführung wurde mit dem Erscheinen von Node.js 4.0 abgeschlossen.<ref>Node.js Foundation: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Versionen[Bearbeiten]
Neue Hauptversionen werden alle sechs Monate veröffentlicht. Mit geraden Nummern versehene Versionen werden im April veröffentlicht, mit ungeraden Nummern versehene im Oktober. Wenn eine neue ungerade Versionsnummer veröffentlicht wird, wechselt die vorige gerade in den LTS-Zustand (Long Term Support), wird zunächst weitere 12 Monate aktiv gepflegt und anschließend weitere 18 Monate nur noch gewartet.<ref name="Release">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
| Version | Codename | Veröffentlichung | LTS-Status | Start aktives LTS | Start Wartung | Ende Wartung |
|---|---|---|---|---|---|---|
| v0.10.x | 2013-03-11 | eingestellt | - | 2015-10-01 | 2016-10-31 | |
| v0.12.x | 2015-02-06 | eingestellt | - | 2016-04-01 | 2016-12-31 | |
| 4.x | Argon<ref name="Release"/> | 2015-09-08 | eingestellt | 2015-10-01 | 2017-04-01 | 2018-04-30 |
| 5.x | 2015-10-29 | kein LTS | N/A | 2016-06-30 | ||
| 6.x | Boron<ref name="Release"/> | 2016-04-26 | eingestellt | 2016-10-18 | 2018-04-30 | 2019-04-30 |
| 7.x | 2016-10-25 | kein LTS | N/A | 2017-06-30 | ||
| 8.x | Carbon<ref name="Release" /> | 2017-05-30 | eingestellt | 2017-10-31 | 2019-01-01<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> | 2019-12-31 |
| 9.x | 2017-10-01 | kein LTS | N/A | 2018-06-30 | ||
| 10.x | Dubnium<ref name="Release"/> | 2018-04-24 | eingestellt | 2018-10-30 | 2020-04-01 | 2021-04-01 |
| 11.x | 2018-10-23 | kein LTS | N/A | 2019-06-01 | ||
| 12.x | Erbium<ref name="Release"/> | 2019-04-23 | eingestellt | 2019-10-22 | 2020-10-20 | 2022-04-30 |
| 13.x | 2019-10-22 | eingestellt | N/A | 2020-04-01 | 2020-06-01 | |
| 14.x | Fermium<ref name="Release" /> | 2020-04-21 | eingestellt | 2020-10-20 | 2021-10-20 | 2023-04-30 |
| 15.x | 2020-10-21 | eingestellt | N/A | 2021-04-01 | 2021-06-01 | |
| 16.x | Gallium<ref name="Release" /> | 2021-04-20 | eingestellt | 2021-10-26 | 2022-10-18 | 2023-09-11<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> |
| 17.x | 2021-10-19 | eingestellt | N/A | 2022-04-01 | 2022-06-01 | |
| 18.x | Hydrogen<ref name="Release" /> | 2022-05-03 | eingestellt | 2022-10-25 | 2023-10-18 | 2025-04-30 |
| 19.x | 2022-10-17 | eingestellt | N/A | 2023-04-01 | 2023-06-01 | |
| 20.x | Iron<ref name="Release" /> | 2023-04-18 | eingestellt | 2023-10-24 | 2024-10-22 | 2026-04-30 |
| 21.x | 2023-10-17 | eingestellt | N/A | 2024-04-01 | 2024-06-01 | |
| 22.x | Jod<ref name="Release" /> | 2024-04-24 | Wartung | 2024-10-29 | 2025-10-21 | 2027-04-30 |
| 23.x | 2024-10-15 | eingestellt | N/A | 2025-04-01 | 2025-06-01 | |
| 24.x | Krypton<ref name="Release" /> | 2025-05-06 | LTS | 2025-10-28 | 2026-10-20 | 2028-04-30 |
| 25.x | 2025-10-15 | eingestellt | N/A | 2026-04-01 | 2026-06-01 | |
| 26.x | 2026-04-22 | aktuell | 2026-10-28 | 2027-10-20 | 2028-04-30 | |
Projekte[Bearbeiten]
Eine Liste von ausgewählten Projekten, die auf Node.js basieren:
- Etherpad Lite, ein kollaborativer Text-Editor<ref>Wie Etherpad Lite entstand</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref>
- PDFKit<ref>PDFKit: PDF-Dokumente generieren mit JavaScript auf golem.de</ref>
- WebOS von vormals HP<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (englisch).</ref>
- StackVM,<ref>StackVM: Virtuelle Maschinen für die Mitbenutzung auf golem.de</ref> darauf aufbauend browserling<ref>browserling.com</ref> (Cross-Browser-Testen im Browser)
- NodeBB,<ref>NodeBB.org</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> eine Echtzeit-Internetforen-Software
- Ghost,<ref>Ghost – Just a blogging platform, ein CMS.</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> das von der Blog-Software WordPress inspiriert wurde
- Trello, eine webbasierte Projektmanagement-Software
Darüber hinaus enthält das offizielle Node.js-Wiki eine Liste von Projekten, Anwendungen und Unternehmen, die Node.js einsetzen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. GitHub, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Auszeichnungen[Bearbeiten]
- Im Juli 2011 wurde dem Node.js-Entwickler Ryan Dahl auf der Konferenz Oscon einer der O’Reilly Open Source Awards verliehen.<ref>Andrea Müller: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
- InfoWorld zeichnete Node.js im August 2011 mit dem Bossie Award für die beste Open-Source-Software in der Kategorie „Entwicklertools“ aus.<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (englisch).</ref>
Literatur[Bearbeiten]
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
- Golo Roden: Gestatten, Node.js, Heise online, 18. Oktober 2012.
- Felix Geisendörfer: Wie Node.js JavaScript auf dem Server revolutioniert: Schubrakete für JavaScript. t3n, 8. Dezember 2010.
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
Weblinks[Bearbeiten]
Vorlage:Wikidata-Registrierung
- Website des Projektes node.js (englisch)
- Website der Paketverwaltung npm (englisch)
- Bericht über Node.js auf Chaosradio Express
- <templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (englisch)
- tech:lounge, ein ausführlicher und kostenfreier Einführungs-Videokurs
- Beispielanwendung TextUrl von sharkbyte
- Node.js Tutorial – Learn basics of Node.js (englisch)
Einzelnachweise[Bearbeiten]
<references responsive />