Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

Node.js

aus Wikipedia, der freien Enzyklopädie
Node.js

Basisdaten

EntwicklerOpenJS Foundation, Ryan Dahl
Erscheinungsjahr27. Mai 2009[1]
Aktuelle Version25.4.0 (Current)
19. Jan 2025[2]

24.13.0 (LTS)
13. Jan. 2026[3]

22.21.1 (LTS)
28. Oct. 2025[4]

20.19.6 (LTS)
25. Nov. 2025[5]

BetriebssystemLinux, Microsoft Windows[6], BSD-Betriebssystem[6], macOS[6], Unix-ähnliches System, AIX, Android[7], iOS
Programmier­spracheC[8], C++, JavaScript[9]
KategorieFramework,Interpreter
LizenzMIT-Lizenz[10]
nodejs.org

Node.js ist eineplattformübergreifendeOpen-Source-JavaScript-Laufzeitumgebung, die JavaScript-Code außerhalb einesWebbrowsers ausführen kann. Damit kann zum Beispiel einWebserver betrieben werden. Node.js wird in der JavaScript-LaufzeitumgebungV8 ausgeführt, die ursprünglich fürGoogle Chrome entwickelt wurde, und bietet eine ressourcensparende Architektur, die eine besonders große Anzahl gleichzeitig bestehender Netzwerkverbindungen ermöglicht.[11][12][13] Node.js wurde ursprünglich vonRyan Dahl 2009 entwickelt, einem Software-Entwickler ausSan Diego,Kalifornien.[14] 2018 stellte Ryan Dahl mitDeno einen Nachfolger für Node.js vor, der einige als grundlegende Probleme identifizierte Eigenschaften von Node.js beheben soll.[15]

Architektur

[Bearbeiten |Quelltext bearbeiten]

Die Skriptsprache JavaScript gibt eineereignisgesteuerte Architektur vor. Diese hat im Server-Betrieb den Vorteil, pro bestehender Verbindung wenigerArbeitsspeicher zu benötigen als bei vergleichbaren Anwendungen, die für jede geöffnete Verbindung einen eigenenThread starten.

Performance

[Bearbeiten |Quelltext bearbeiten]

Node.js wird mit besonderem Fokus auf die Performance entwickelt. So kommtnonblocking I/O statt standardmäßigem blockierendem I/O zum Einsatz.

Zugriffe auf das Netzwerk und Dateisystem werden über die vonLibuv bereitgestellteEreignisschleife(event loop) und den darunterliegendenThread Pool abgearbeitet.[16] Dadurch werden weniger eigene Threads erstellt und derOverhead minimal gehalten.

Module

[Bearbeiten |Quelltext bearbeiten]

Node.js enthält einigeModule, die direkt in das Binärpaket kompiliert wurden. Dazu gehören neben dem Modul für asynchronen Netzwerkzugriff auchAdapter für das Dateisystem,Puffer,Zeitgeber und eine allgemein gehalteneDatenstrom-Klasse.

Darüber hinaus können zusätzliche Module eingebunden werden, zum Beispiel über vorkompilierte Dateien mit derDateiendung.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 namensexports Zugriff auf Funktionen und Variablen des entsprechenden Moduls her.[17]

Zur Verwaltung der Module gibt es den Paketmanagernpm, in dessenDepot sich über 751.000 Pakete (Stand: Juli 2018) befinden.[18] Dieser sorgt unter Berücksichtigung von Abhängigkeiten für die Installation, Aktualisierung und dasKompilieren von Binärmodulen.[19]

Kritik

[Bearbeiten |Quelltext 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-Prozesskompiliert werden müssen.[20] Auch kritisierte er die Komplexität des Modulsystems. Seine Vorstellung einer neuen LaufzeitumgebungDeno 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.[21]

Beispiele

[Bearbeiten |Quelltext bearbeiten]

HTTP-Server-Version einesHallo-Welt-Programmes in Node.js, das text/html alsContent-Type-Header und denPort 3000 verwendet:

consthttp=require('http');http.createServer(function(req,res){res.writeHead(200,{'Content-Type':'text/html'});res.write('Hallo Welt');res.end();}).listen(3000);

Als weiteres Beispiel ein einfacherTCP-Server, der auf Port 7000 Daten empfängt, mit „Hallo“ antwortet und dann alle empfangenen Daten unverändert zum Client zurücksendet:

constnet=require('net');constendOfLine=require('os').EOL;constserver=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');

Ehemaliger Fork „io.js“

[Bearbeiten |Quelltext bearbeiten]

Aufgrund von Unzufriedenheit mit dem Tempo der Weiterentwicklung spaltete sich das Projektio.js von Node.js ab, in dem einige der wichtigsten Node.js-Entwickler weiterarbeiteten, die mit dem Mutterprojekt unzufrieden waren.[22][23] Das erste Release wurde am 13. Januar 2015 freigegeben. DerFork ist kompatibel zu Node.js und demNode Package Manager.[24] Am 15. Mai 2015 verkündeten beide Projekte die Zusammenführung zur Node.js-Foundation, die eine gemeinsame Weiterentwicklung unter einemOpen-Government-Modell ermöglichen soll.[25][26] Die Zusammenführung wurde mit dem Erscheinen von Node.js 4.0 abgeschlossen.[27]

Versionen

[Bearbeiten |Quelltext 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.[28]

VersionCodenameVeröffentlichungLTS-StatusStart aktives LTSStart WartungEnde Wartung
Ältere Version; nicht mehr unterstützt: v0.10.x2013-03-11Ältere Version; nicht mehr unterstützt: eingestellt-2015-10-012016-10-31
Ältere Version; nicht mehr unterstützt: v0.12.x2015-02-06Ältere Version; nicht mehr unterstützt: eingestellt-2016-04-012016-12-31
Ältere Version; nicht mehr unterstützt: 4.xArgon[28]2015-09-08Ältere Version; nicht mehr unterstützt: eingestellt2015-10-012017-04-012018-04-30
Ältere Version; nicht mehr unterstützt: 5.x2015-10-29kein LTSN/A2016-06-30
Ältere Version; nicht mehr unterstützt: 6.xBoron[28]2016-04-26Ältere Version; nicht mehr unterstützt: eingestellt2016-10-182018-04-302019-04-30
Ältere Version; nicht mehr unterstützt: 7.x2016-10-25kein LTSN/A2017-06-30
Ältere Version; nicht mehr unterstützt: 8.xCarbon[28]2017-05-30Ältere Version; nicht mehr unterstützt: eingestellt2017-10-312019-01-01[29]2019-12-31
Ältere Version; nicht mehr unterstützt: 9.x2017-10-01kein LTSN/A2018-06-30
Ältere Version; nicht mehr unterstützt: 10.xDubnium[28]2018-04-24Ältere Version; nicht mehr unterstützt: eingestellt2018-10-302020-04-012021-04-01
Ältere Version; nicht mehr unterstützt: 11.x2018-10-23kein LTSN/A2019-06-01
Ältere Version; nicht mehr unterstützt: 12.xErbium[28]2019-04-23Ältere Version; nicht mehr unterstützt: eingestellt2019-10-222020-10-202022-04-30
Ältere Version; nicht mehr unterstützt: 13.x2019-10-22Ältere Version; nicht mehr unterstützt: eingestelltN/A2020-04-012020-06-01
Ältere Version; nicht mehr unterstützt: 14.xFermium[28]2020-04-21Ältere Version; nicht mehr unterstützt: eingestellt2020-10-202021-10-202023-04-30
Ältere Version; nicht mehr unterstützt: 15.x2020-10-21Ältere Version; nicht mehr unterstützt: eingestelltN/A2021-04-012021-06-01
Ältere Version; nicht mehr unterstützt: 16.xGallium[28]2021-04-20Ältere Version; nicht mehr unterstützt: eingestellt2021-10-262022-10-182023-09-11[30]
Ältere Version; nicht mehr unterstützt: 17.x2021-10-19Ältere Version; nicht mehr unterstützt: eingestelltN/A2022-04-012022-06-01
Ältere Version; nicht mehr unterstützt: 18.xHydrogen[28]2022-05-03Ältere Version; nicht mehr unterstützt: eingestellt2022-10-252023-10-182025-04-30
Ältere Version; nicht mehr unterstützt: 19.x2022-10-17Ältere Version; nicht mehr unterstützt: eingestelltN/A2023-04-012023-06-01
Ältere Version; noch unterstützt: 20.xIron[28]2023-04-18Ältere Version; noch unterstützt: Wartung2023-10-242024-10-222026-04-30
Ältere Version; nicht mehr unterstützt: 21.x2023-10-17Ältere Version; nicht mehr unterstützt: eingestelltN/A2024-04-012024-06-01
Ältere Version; noch unterstützt: 22.xJod[28]2024-04-24Ältere Version; noch unterstützt: Wartung2024-10-292025-10-212027-04-30
Ältere Version; nicht mehr unterstützt: 23.x2024-10-15Ältere Version; nicht mehr unterstützt: eingestelltN/A2025-04-012025-06-01
Ältere Version; noch unterstützt: 24.xKrypton[28]2025-05-06Ältere Version; noch unterstützt: LTS2025-10-282026-10-202028-04-30
Aktuelle Version:25.x2025-10-15Aktuelle Version:aktuellN/A2026-04-012026-06-01
Zukünftige Version: 26.x2026-04-22Zukünftige Version: geplant2026-10-282027-10-202028-04-30

Projekte

[Bearbeiten |Quelltext bearbeiten]

Eine Liste von ausgewählten Projekten, die auf Node.js basieren:

Darüber hinaus enthält das offizielle Node.js-Wiki eine Liste von Projekten, Anwendungen und Unternehmen, die Node.js einsetzen.[41]

Auszeichnungen

[Bearbeiten |Quelltext bearbeiten]
  • Im Juli 2011 wurde dem Node.js-Entwickler Ryan Dahl auf der KonferenzOscon einer derO’Reilly Open Source Awards verliehen.[42]
  • InfoWorld zeichnete Node.js im August 2011 mit demBossie Award für die beste Open-Source-Software in der Kategorie „Entwicklertools“ aus.[43]

Literatur

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]
Commons: Node.js – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. node-v0.x-archive on GitHub. (abgerufen am 2. September 2016).
  2. 2026-01-19, Version 25.4.0 (Current), @RafaelGSS. Abgerufen am 20. Januar 2026 (englisch). 
  3. 2026-01-13, Version 24.13.0 'Krypton' (LTS), @marco-ippolito. Abgerufen am 20. Januar 2026 (englisch). 
  4. 2025-10-28, Version 22.21.1 'Jod' (LTS), @aduh95. Abgerufen am 5. November 2025 (englisch). 
  5. 2025-11-25, Version 20.19.6 'Iron' (LTS), @marco-ippolito. Abgerufen am 8. Dezember 2025 (englisch). 
  6. abcIn:Free Software Directory.
  7. In:GitHub.
  8. The node Open Source Project on Open Hub: Languages Page. In:Open Hub. (abgerufen am 18. Oktober 2018).
  9. github.com. 6. Juli 2025.
  10. node/LICENSE at master · nodejs/node · GitHub. (abgerufen am 27. November 2020).
  11. About Node.js®. Abgerufen am 8. Juni 2020 (englisch). 
  12. Sebastian Springer: Node.js: Das JavaScript-Framework im Überblick. 31. März 2013, abgerufen am 8. Juni 2020. 
  13. Was ist Node.js? (Memento vom 29. Mai 2018 imInternet Archive)
  14. training.com Developed originally in 2009 by Ryan Dahl, Node.js is an open-source, JavaScript run time environment. (Memento vom 1. April 2017 imInternet Archive)
  15. heise.de Ryan Dahl: Designfehler von Node.js und sein neues Projekt
  16. Welcome to the libuv documentation — libuv documentation. Abgerufen am 24. Mai 2020. 
  17. Getting CommonJS (Memento vom 21. Februar 2014 imInternet Archive) (englisch).
  18. npmjs.com npmjs.com npm registry
  19. Module in Node.js (Memento vom 4. Juli 2018 imInternet Archive)
  20. heise.de: Build-System größter Fehler von Node.js
  21. 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.
  22. Node.js gains a new fork, much to Joyent’s dismay, infoworld.com, abgerufen am 5. Dezember 2014.
  23. io.js – JsWiki.de (Memento vom 18. März 2016 imInternet Archive)
  24. Golo Roden: Hoffnung für Node.js-Community: io.js 1.0 planmäßig veröffentlicht. In: Heise online. 14. Januar 2015, abgerufen am 10. März 2016. 
  25. Node.js and io.js leaders are building an open, neutral Node.js Foundation to support the future of the platform. nodejs.org, 15. Mai 2015, abgerufen am 17. Juni 2015. 
  26. io.js Week of May 15th (io.js decides to join the Node Foundation). medium.com, 15. Mai 2015, abgerufen am 29. Juli 2022. 
  27. Node.js Foundation: Node v4.0.0 (Stable). 8. September 2015, abgerufen am 9. September 2015 (englisch). 
  28. abcdefghijklÜbersicht der Node.js-Versionen auf GitHub. Abgerufen am 25. Juli 2025. 
  29. Node 8 reschedule. Abgerufen am 22. Januar 2019. 
  30. Bringing forward the End-of-Life Date for Node.js 16. Abgerufen am 13. März 2023. 
  31. Wie Etherpad Lite entstand
  32. EtherPad (Memento vom 12. Oktober 2013 imInternet Archive)
  33. PDFKit: PDF-Dokumente generieren mit JavaScript aufgolem.de
  34. Introducing HP webOS 2.1 (Memento vom 19. März 2011 imInternet Archive) (englisch).
  35. StackVM: Virtuelle Maschinen für die Mitbenutzung auf golem.de
  36. browserling.com
  37. NodeBB.org
  38. NodeBB – das Node.js Forum (Memento vom 9. November 2013 imInternet Archive)
  39. Ghost – Just a blogging platform, ein CMS.
  40. Ghost CMS: Endlich ist es da! (Memento vom 19. Dezember 2013 imInternet Archive)
  41. Projects, Applications, and Companies Using Node. In: nodejs/node-v0.x-archive. GitHub, 25. März 2016, abgerufen am 29. Dezember 2016 (englisch). 
  42. Andrea Müller: Oscon: Open Source Awards verliehen. In: Heise online. 29. Juli 2011, abgerufen am 10. März 2016. 
  43. Bossie Awards 2011: The best open source application development software. InfoWorld’s Test Center picks the best open source development tools of 2011 (Memento vom 29. Juli 2014 imInternet Archive) (englisch).
Normdaten (Sachbegriff):GND:1027030742 (GND Explorer,lobid,OGND,AKS)
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Node.js&oldid=263496747
Kategorien:

[8]ページ先頭

©2009-2026 Movatter.jp