fbpx
Wikipedia

Node.js

Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.

Node.js
Original author(s)Ryan Dahl
Developer(s)OpenJS Foundation
Initial releaseMay 27, 2009; 14 years ago (2009-05-27)[1]
Stable release
21.6.1[2]  / January 22, 2024; 24 days ago (January 22, 2024)
Repository
  • github.com/nodejs/node
Written inJavaScript, C++, Python
Operating systemz/OS, Linux, macOS, Microsoft Windows, SmartOS, FreeBSD, OpenBSD, IBM AIX[3]
TypeRuntime environment
LicenseMIT License[4][5]
Websitenodejs.org 

Node.js lets developers use JavaScript to write command line tools and for server-side scripting. The ability to run JavaScript code on the server is often used to generate dynamic web page content before the page is sent to the user's web browser. Consequently, Node.js represents a "JavaScript everywhere" paradigm,[6] unifying web-application development around a single programming language, as opposed to using different languages for the server- versus client-side programming.

Node.js has an event-driven architecture capable of asynchronous I/O. These design choices aim to optimize throughput and scalability in web applications with many input/output operations, as well as for real-time Web applications (e.g., real-time communication programs and browser games).[7]

The Node.js distributed development project was previously governed by the Node.js Foundation,[8] and has now merged with the JS Foundation to form the OpenJS Foundation. OpenJS Foundation is facilitated by the Linux Foundation's Collaborative Projects program.[9]

History edit

 
Ryan Dahl, creator of Node.js, in 2010

Node.js was initially written by Ryan Dahl in 2009,[10] about 13 years after the introduction of the first server-side JavaScript environment, Netscape's LiveWire Pro Web.[11] The initial release supported only Linux and Mac OS X. Its development and maintenance was led by Dahl and later sponsored by Joyent.[12]

Dahl criticized the limited capability of Apache HTTP Server to handle many (10,000+) concurrent connections, as well as the dominant programming paradigm of sequential programming, in which applications could block entire processes or cause the creation of multiple execution stacks for simultaneous connections.[13]

Dahl demonstrated the project at the inaugural European JSConf on November 8, 2009.[14][15][16] Node.js combined Google's V8 JavaScript engine, an event loop, and a low-level I/O API.[17]

In January 2010, a package manager was introduced for the Node.js environment called npm.[18] The package manager allows programmers to publish and share Node.js packages, along with the accompanying source code, and is designed to simplify the installation, update and uninstallation of packages.[17]

In June 2011, Microsoft and Joyent implemented a native Windows version of Node.js.[19] The first Node.js build supporting Windows was released in July 2011.

In January 2012, Dahl yielded management of the project to npm creator Isaac Schlueter.[20] In January 2014, Schlueter announced that Timothy J. Fontaine would lead the project.[21]

In December 2014, Fedor Indutny created io.js, a fork of Node.js created because of dissatisfaction with Joyent's governance as an open-governance alternative with a separate technical committee. The goal was to enable a structure that would be more receptive to community input, including the updating of io.js with the latest Google V8 JavaScript engine releases, diverging from Node.js's approach at that time.[22]

The Node.js Foundation, formed to reconcile Node.js and io.js under a unified banner, was announced in February 2015.[23] The merger was realized in September 2015 with Node.js v0.12 and io.js v3.3 combining into Node v4.0.[24] This merge brought V8 ES6 features into Node.js and started a long-term support release cycle.[25] By 2016, the io.js website recommended returning to Node.js and announced no further io.js releases, effectively ending the fork and solidifying the merger's success.[26]

In 2019, the JS Foundation and Node.js Foundation merged to form the OpenJS Foundation.

On September 6, 2023, Node.js 20.6.0 was released. The update brought the addition of built-in support for .env files, the unflagging of import.meta.resolve, the introduction of a new node:module API register for module customization hooks and a new initialize hook. Additionally, the module customization load hook now supported CommonJS, and Node.js C++ add-ons have gained experimental support for cppgc (Oilpan), which is a C++ garbage collection library for V8.[27]

Overview edit

Node.js allows the creation of web servers and networking tools using JavaScript and a collection of "modules" that handle various core functionalities.[14][17][28][29][30] Modules are provided for file system I/O, networking (DNS, HTTP, TCP, TLS/SSL or UDP), binary data (buffers), cryptography functions, data streams and other core functions.[17][29][31] Node.js's modules use an API designed to reduce the complexity of writing server applications.[17][29]

JavaScript is the only language that Node.js supports natively, but many compile-to-JS languages are available.[32] As a result, Node.js applications can be written in CoffeeScript,[33] Dart, TypeScript, ClojureScript and others.

Node.js is primarily used to build network programs such as web servers.[28] The most significant difference between Node.js and PHP is that most functions in PHP block until completion (commands execute only after previous commands finish), while Node.js functions are non-blocking (commands execute concurrently or even in parallel,[34][35][improper synthesis?] and use callbacks to signal completion or failure).[28]

Node.js is officially supported by Linux, macOS and Microsoft Windows 8.1 and Server 2012 (and later),[3] with Tier 2 support for SmartOS and IBM AIX and experimental support for FreeBSD. OpenBSD also works, and LTS versions are available for IBM i (AS/400).[36] The source code may also be built on similar operating systems that are not officially supported, such as NonStop OS[37] and Unix servers.

Platform architecture edit

Node.js enables development of fast web servers in JavaScript using event-driven programming.[17] Developers can create scalable servers without using threading by using a simplified model that uses callbacks to signal the completion of a task.[17][page needed] Node.js connects the ease of a scripting language (JavaScript) with the power of Unix network programming.[17]

Node.js was built on top of Google's V8 JavaScript engine since it was open-sourced under the BSD license, and it contains comprehensive support for fundamental protocols such as HTTP, DNS and TCP.[14] JavaScript's existing popularity made Node.js accessible to the web-development community.[14]

Industry support edit

There are thousands of open-source libraries for Node.js, most of which are hosted on the npm website. Multiple developer conferences and events are held that support the Node.js community, including NodeConf, Node Interactive and Node Summit, as well as a number of regional events.

The open-source community has developed web frameworks to accelerate the development of applications. Such frameworks include Connect, Express.js, Socket.IO, Feathers.js, Koa.js, Hapi.js, Sails.js, Meteor and Derby.[17][38] Various packages have also been created for interfacing with other languages or runtime environments such as Microsoft .NET.[39]

Modern desktop IDEs provide editing and debugging features specifically for Node.js applications. Such IDEs include Atom, Brackets, JetBrains WebStorm,[40][41] Microsoft Visual Studio (with Node.js Tools for Visual Studio,[42] or TypeScript with Node definitions[43][44][45][46]), NetBeans,[47] Nodeclipse Enide Studio[48] (Eclipse-based) and Visual Studio Code.[49][50] Some web-based IDEs also support Node.js, such as Codeanywhere, Codenvy, Cloud9 IDE, Koding and the visual flow editor in Node-RED.

Node.js is supported across a number of cloud-hosting platforms such as Jelastic, Google Cloud Platform, AWS Elastic Beanstalk, Azure Web Apps andJoyent.

Releases edit

Release[51] Status Code name Release date Maintenance end
Old version, no longer maintained: 0.10.x Old version, no longer maintained: End-of-Life 2013-03-11 2016-10-31
Old version, no longer maintained: 0.12.x Old version, no longer maintained: End-of-Life 2015-02-06 2016-12-31
Old version, no longer maintained: 4.x Old version, no longer maintained: End-of-Life Argon[52] 2015-09-08 2018-04-30
Old version, no longer maintained: 5.x Old version, no longer maintained: End-of-Life 2015-10-29 2016-06-30
Old version, no longer maintained: 6.x Old version, no longer maintained: End-of-Life Boron[52] 2016-04-26 2019-04-30
Old version, no longer maintained: 7.x Old version, no longer maintained: End-of-Life 2016-10-25 2017-06-30
Old version, no longer maintained: 8.x Old version, no longer maintained: End-of-Life Carbon[52] 2017-05-30 2019-12-31
Old version, no longer maintained: 9.x Old version, no longer maintained: End-of-Life 2017-10-01 2018-06-30
Old version, no longer maintained: 10.x Old version, no longer maintained: End-of-Life Dubnium[52] 2018-04-24 2021-04-30
Old version, no longer maintained: 11.x Old version, no longer maintained: End-of-Life 2018-10-23 2019-06-01
Old version, no longer maintained: 12.x Old version, no longer maintained: End-of-Life Erbium[52] 2019-04-23 2022-04-30
Old version, no longer maintained: 13.x Old version, no longer maintained: End-of-Life 2019-10-22 2020-06-01
Old version, no longer maintained: 14.x Old version, no longer maintained: End-of-Life Fermium[52] 2020-04-21 2023-04-30
Old version, no longer maintained: 15.x Old version, no longer maintained: End-of-Life 2020-10-20 2021-06-01
Old version, no longer maintained: 16.x Old version, no longer maintained: End-of-Life Gallium[52] 2021-04-20 2023-09-11[53]
Old version, no longer maintained: 17.x Old version, no longer maintained: End-of-Life 2021-10-19 2022-06-01
Older version, yet still maintained: 18.x Older version, yet still maintained: Maintenance LTS Hydrogen[52] 2022-04-19 2025-04-30
Old version, no longer maintained: 19.x Old version, no longer maintained: End-of-Life 2022-10-18 2023-06-01
Older version, yet still maintained: 20.x Older version, yet still maintained: Active LTS Iron[54] 2023-04-18 2026-04-30
Current stable version: 21.x Current stable version: Current [52] 2023-10-17 2024-05-30
Future release: 22.x Future release: Planned Jod [54][52] 2024-04-15 2027-04-28
Future release: 23.x Future release: Planned [52] 2024-10-14 2025-05-27
Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release

New major releases of Node.js are cut from the GitHub main branch every six months. Even-numbered versions are cut in April and odd-numbered versions are cut in October. When a new odd version is released, the previous even version undergoes transition to Long Term Support (LTS), which gives that version 18 months of active support from the date it is designated LTS. After these 18 months expire, an LTS release receives an additional 12 months of maintenance support. An active version receives non-breaking backports of changes a few weeks after they land in the current release. A maintenance release receives only critical fixes and documentation updates.[52] The LTS Working Group manages strategy and policy in collaboration with the Technical Steering Committee of the Node.js Foundation.

Technical details edit

Node.js is a JavaScript runtime environment that processes incoming requests in a loop, called the event loop.

Internals edit

Node.js uses libuv under the hood to handle asynchronous events. Libuv is an abstraction layer for network and file system functionality on both Windows and POSIX-based systems such as Linux, macOS, OSS on NonStop, and Unix. Node.js relies on nghttp2 for HTTP support. As of version 20, Node.js uses the ada library which provides up-to-date WHATWG URL compliance. As of version 19.5, Node.js uses the simdutf library for fast Unicode validation and transcoding. As of version 21.3, Node.js uses the simdjson library for fast JSON parsing.

Threading edit

Node.js operates on a single-thread event loop, using non-blocking I/O calls, allowing it to support tens of thousands of concurrent connections without incurring the cost of thread context switching.[55] The design of sharing a single thread among all the requests that use the observer pattern is intended for building highly concurrent applications, where any function performing I/O must use a callback. To accommodate the single-threaded event loop, Node.js uses the libuv library—which, in turn, uses a fixed-sized thread pool that handles some of the non-blocking asynchronous I/O operations.[7]

A thread pool handles the execution of parallel tasks in Node.js. The main thread function call posts tasks to the shared task queue, which threads in the thread pool pull and execute. Inherently non-blocking system functions such as networking translate to kernel-side non-blocking sockets, while inherently blocking system functions such as file I/O run in a blocking way on their own threads. When a thread in the thread pool completes a task, it informs the main thread of this, which in turn, wakes up and executes the registered callback.

A downside of this single-threaded approach is that Node.js does not allow vertical scaling by increasing the number of CPU cores of the machine it is running on without using an additional module, such as cluster,[34] StrongLoop Process Manager,[56] or pm2.[57] However, developers can increase the default number of threads in the libuv thread pool. The server operating system (OS) is likely to distribute these threads across multiple cores.[58] Another problem is that long-lasting computations and other CPU-bound tasks freeze the entire event-loop until completion.[citation needed]

V8 edit

V8 is the JavaScript execution engine which was initially built for Google Chrome. It was then open-sourced by Google in 2008. Written in C++, V8 compiles JavaScript source code to native machine code at runtime.[7] As of 2016, it also includes Ignition, a bytecode interpreter.

Package management edit

npm is the pre-installed package manager for the Node.js server platform. It installs Node.js programs from the npm registry, organizing the installation and management of third-party Node.js programs.

Event loop edit

Node.js registers with the operating system so the OS notifies it of asynchronous I/O events such as new connections. Within the Node.js runtime, events trigger callbacks and each connection is handled as a small heap allocation. Traditionally, relatively heavyweight OS processes or threads handled each connection. Node.js uses an event loop for concurrent I/O, instead of processes or threads.[59] In contrast to other event-driven servers,[which?] Node.js's event loop does not need to be called explicitly. Instead, callbacks are defined, and the server automatically enters the event loop at the end of the callback definition. Node.js exits the event loop when there are no further callbacks to be performed.

WebAssembly edit

Node.js supports WebAssembly and as of Node 14 has experimental support of WASI, the WebAssembly System Interface.

Native bindings edit

Node.js provides a way to create "add-ons" via a C-based API called N-API, which can be used to produce loadable (importable) .node modules from source code written in C/C++.[60] The modules can be directly loaded into memory and executed from within JS environment as simple CommonJS modules. The implementation of the N-API relies on internal C/C++ Node.js and V8 objects requiring users to import (#include) Node.js specific headers into their native source code.[60]

As the Node.js API is subject to breaking changes at a binary level, modules have to be built and shipped against specific Node.js versions to work properly. To address the issue, third parties have introduced open-sourced С/С++ wrappers on top of the API that partially alleviate the problem. They simplify interfaces, but as a side effect they may also introduce complexity which maintainers have to deal with. Even though the core functionality of Node.js resides in a JavaScript built-in library, modules written in C++ can be used to enhance capabilities and to improve performance of applications.

In order to produce such modules one needs to have an appropriate C++ compiler and necessary headers (the latter are typically shipped with Node.js itself), e.g., gcc, clang or MSVC++.

The N-API is similar to Java Native Interface.

Project governance edit

In 2015, various branches of the greater Node.js community began working under the vendor-neutral Node.js Foundation. The stated purpose of the organization "is to enable widespread adoption and help accelerate development of Node.js and other related modules through an open governance model that encourages participation, technical contribution, and a framework for long-term stewardship by an ecosystem invested in Node.js' success."[61]

The Node.js Foundation Technical Steering Committee (TSC) is the technical governing body of the Node.js Foundation. The TSC is responsible for the core Node.js repo as well as dependent and adjacent projects. Generally the TSC delegates the administration of these projects to working groups or committees.[62] The LTS group that manages long term supported releases is one such group. Other current groups include Website, Streams, Build, Diagnostics, i18n, Evangelism, Docker, Addon API, Benchmarking, Post-mortem, Intl, Documentation, and Testing.[63]

In August 2017, a third of the TSC members resigned due to a dispute related to the project's code of conduct.[64]

See also edit

  • Deno—a back-end runtime environment for JavaScript and TypeScript, also created by Ryan Dahl.

References edit

  1. ^ "node-v0.x-archive on GitHub". GitHub. Retrieved 2 August 2014.
  2. ^ "Release 21.6.1". 22 January 2024. Retrieved 1 February 2024.
  3. ^ a b "nodejs/node". GitHub. 13 April 2022.
  4. ^ "node/LICENSE at master". GitHub. Node.js Foundation. 17 September 2018. Retrieved 17 September 2018.
  5. ^ "The MIT License". Open Source Initiative. 17 September 2018. Retrieved 17 September 2018.
  6. ^ gcuomo (24 October 2013). . www.ibm.com. Archived from the original on 14 November 2013. Retrieved 24 October 2013.
  7. ^ a b c Laurent Orsini (7 November 2013). "What You Need To Know About Node.js". readwrite.com. Retrieved 6 February 2022.
  8. ^ "Node.js Foundation - Node.js". nodejs.org. Retrieved 4 July 2015.
  9. ^ "Linux Foundation Collaborative Projects". linuxfoundation.org. 4 July 2015. Retrieved 4 July 2015.
  10. ^ "About Node.js, and why you should add Node.js to your skill set?". Training.com. 11 September 2016. Retrieved 23 October 2016.
  11. ^ Staff, CNET News (15 October 1996). "Netscape opens intranet attack". CNET. Retrieved 20 April 2017.
  12. ^ Ryan Dahl (9 November 2010). "Joyent and Node". Google Groups. Retrieved 5 February 2015.
  13. ^ Garbar, Dzmitry. "PHP 7 vs Node.js? They Can Be Partners, Not Competitors For a Developer!". belitsoft.com. Retrieved 21 December 2016.
  14. ^ a b c d Sams Teach Yourself Node.js in 24 Hours, Sams Publishing, 05-Sep-2012
  15. ^ Ubl, Malte (9 September 2009). "JSConf.eu 2009, Berlin, Germany". www.jsconf.eu. Retrieved 9 September 2009.
  16. ^ "Ryan Dahl: Original Node.js presentation". Archived from the original on 15 December 2021 – via www.youtube.com.
  17. ^ a b c d e f g h i Professional Node.js: Building JavaScript Based Scalable Software, John Wiley & Sons, 01-Oct-2012
  18. ^ "Earliest releases of npm". GitHub. Retrieved 27 July 2016.
  19. ^ Ryandahl (23 June 2011). "Porting Node to Windows With Microsoft's Help". nodejs.org. Retrieved 17 April 2016.
  20. ^ Dahl, Ryan. "New gatekeeper". Retrieved 26 October 2013.
  21. ^ Schlueter, Isaac (15 January 2014). "The Next Phase of Node.js". Retrieved 21 January 2014.
  22. ^ Q&A: Why io.js decided to fork Node.js, InfoWorld Tech Watch
  23. ^ . Archived from the original on 24 June 2015. Retrieved 4 July 2015.
  24. ^ "Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release". nodejs.org. 14 September 2015. Retrieved 28 January 2016.
  25. ^ "io.js and Node.js merge". medium.com. 19 May 2015. Retrieved 27 June 2015.
  26. ^ Io.js, JavaScript I/O, "io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above."
  27. ^ "Previous Releases". Node.js.
  28. ^ a b c Node.js for PHP Developers, O'Reilly Media, Inc., 2013
  29. ^ a b c Node.js Essentials, Packt Publishing, 10-Nov-2015
  30. ^ Smashing Node.js: JavaScript Everywhere, John Wiley & Sons, 14-Aug-2012
  31. ^ Modules, Nodejs Website
  32. ^ "List of languages that compile to JS". Github.
  33. ^ CoffeeScript on Node.js. O'Reilly Media, Inc. 15 April 2013. ISBN 9781449316846. Retrieved 17 May 2015.
  34. ^ a b "Node.js's cluster module". nodejs.org. Retrieved 19 October 2017.
  35. ^ "Node.js's child_process module". nodejs.org. Retrieved 19 October 2017.
  36. ^ Foundation, Node js. "Installing Node.js via package manager". Node.js. Retrieved 19 May 2019.
  37. ^ . infrasoft.com.au. Infrasoft. Archived from the original on 11 March 2018. Retrieved 14 August 2015.
  38. ^ Express.js Guide: The Comprehensive Book on Express.js, Azat Mardan, 28-May-2014
  39. ^ Edge.js bridges the gap between Node.js and .NET, TechRepublic, Tony Patton, 1 July 2014
  40. ^ Node.js, WebStorm supports integration with the Node.js runtime environment, WebStorm Help
  41. ^ Running and Debugging Node.js, WebStorm Help
  42. ^ "Node.js Tools for Visual Studio". microsoft.com. Retrieved 1 February 2016.
  43. ^ soywiz/typescript-node-definitions TypeScript's typings for some popular node.js modules, GitHub
  44. ^ DefinitelyTyped, GitHub
  45. ^ . definitelytyped.org. Archived from the original on 3 February 2016.
  46. ^ ImageBoard, A Node.js + Express + MongoDB application built using TypeScript on the server, TypeScript Samples
  47. ^ Krill, Paul (10 November 2015). "Node.js takes center stage in NetBeans 8.1". infoworld.com. InfoWorld. Retrieved 10 November 2015.
  48. ^ Nodeclipse, Enide -- Node.JS development in Eclipse, Nodeclipse Website
  49. ^ Hello Visual Studio Code (with NodeJS), Channel 9, Microsoft
  50. ^ Node.js Applications with VS Code, Visual Studio Code
  51. ^ "Releases". Node.js. 23 August 2023.
  52. ^ a b c d e f g h i j k l "nodejs/Release". GitHub. Retrieved 3 May 2018.
  53. ^ Bringing forward the End-of-Life Date for Node.js 16, Node.js Website
  54. ^ a b "Node.JS CODENAMES.md". GitHub. Retrieved 6 September 2023.
  55. ^ "Node.js w/1M concurrent connections!". caustik's blog. 19 August 2012.
  56. ^ "StrongLoop Process Manager". strong-pm.io.
  57. ^ "GitHub - Unitech/pm2: Production process manager for Node.js applications with a built-in load balancer". GitHub. 12 June 2021.
  58. ^ Aleksander Kasiuk (22 April 2015). "On problems with threads in node.js - Future Processing".
  59. ^ About Node.js, Node.js Website
  60. ^ a b "C++ addons | Node.js v14.12.0 Documentation". nodejs.org. Retrieved 26 September 2020.
  61. ^ Foundation, Node.js. "Node.js Foundation | Node.js". nodejs.org. Retrieved 8 March 2017.
  62. ^ "nodejs/TSC". GitHub. Retrieved 8 March 2017.
  63. ^ Foundation, Node.js. . nodejs.org. Archived from the original on 27 February 2017. Retrieved 8 March 2017.
  64. ^ Whittaker, Zack, After governance breakdown, Node.js leaders fight for its survival, ZDNet, 25 August 2017

Further reading edit

External links edit

  • Official website  
  • node on GitHub

node, cross, platform, open, source, javascript, runtime, environment, that, windows, linux, unix, macos, more, runs, javascript, engine, executes, javascript, code, outside, browser, original, author, ryan, dahldeveloper, openjs, foundationinitial, releasemay. Node js is a cross platform open source JavaScript runtime environment that can run on Windows Linux Unix macOS and more Node js runs on the V8 JavaScript engine and executes JavaScript code outside a web browser Node jsOriginal author s Ryan DahlDeveloper s OpenJS FoundationInitial releaseMay 27 2009 14 years ago 2009 05 27 1 Stable release21 6 1 2 January 22 2024 24 days ago January 22 2024 Repositorygithub wbr com wbr nodejs wbr nodeWritten inJavaScript C PythonOperating systemz OS Linux macOS Microsoft Windows SmartOS FreeBSD OpenBSD IBM AIX 3 TypeRuntime environmentLicenseMIT License 4 5 Websitenodejs wbr org Node js lets developers use JavaScript to write command line tools and for server side scripting The ability to run JavaScript code on the server is often used to generate dynamic web page content before the page is sent to the user s web browser Consequently Node js represents a JavaScript everywhere paradigm 6 unifying web application development around a single programming language as opposed to using different languages for the server versus client side programming Node js has an event driven architecture capable of asynchronous I O These design choices aim to optimize throughput and scalability in web applications with many input output operations as well as for real time Web applications e g real time communication programs and browser games 7 The Node js distributed development project was previously governed by the Node js Foundation 8 and has now merged with the JS Foundation to form the OpenJS Foundation OpenJS Foundation is facilitated by the Linux Foundation s Collaborative Projects program 9 Contents 1 History 2 Overview 2 1 Platform architecture 2 2 Industry support 3 Releases 4 Technical details 4 1 Internals 4 2 Threading 4 3 V8 4 4 Package management 4 5 Event loop 4 6 WebAssembly 4 7 Native bindings 5 Project governance 6 See also 7 References 8 Further reading 9 External linksHistory edit nbsp Ryan Dahl creator of Node js in 2010Node js was initially written by Ryan Dahl in 2009 10 about 13 years after the introduction of the first server side JavaScript environment Netscape s LiveWire Pro Web 11 The initial release supported only Linux and Mac OS X Its development and maintenance was led by Dahl and later sponsored by Joyent 12 Dahl criticized the limited capability of Apache HTTP Server to handle many 10 000 concurrent connections as well as the dominant programming paradigm of sequential programming in which applications could block entire processes or cause the creation of multiple execution stacks for simultaneous connections 13 Dahl demonstrated the project at the inaugural European JSConf on November 8 2009 14 15 16 Node js combined Google s V8 JavaScript engine an event loop and a low level I O API 17 In January 2010 a package manager was introduced for the Node js environment called npm 18 The package manager allows programmers to publish and share Node js packages along with the accompanying source code and is designed to simplify the installation update and uninstallation of packages 17 In June 2011 Microsoft and Joyent implemented a native Windows version of Node js 19 The first Node js build supporting Windows was released in July 2011 In January 2012 Dahl yielded management of the project to npm creator Isaac Schlueter 20 In January 2014 Schlueter announced that Timothy J Fontaine would lead the project 21 In December 2014 Fedor Indutny created io js a fork of Node js created because of dissatisfaction with Joyent s governance as an open governance alternative with a separate technical committee The goal was to enable a structure that would be more receptive to community input including the updating of io js with the latest Google V8 JavaScript engine releases diverging from Node js s approach at that time 22 The Node js Foundation formed to reconcile Node js and io js under a unified banner was announced in February 2015 23 The merger was realized in September 2015 with Node js v0 12 and io js v3 3 combining into Node v4 0 24 This merge brought V8 ES6 features into Node js and started a long term support release cycle 25 By 2016 the io js website recommended returning to Node js and announced no further io js releases effectively ending the fork and solidifying the merger s success 26 In 2019 the JS Foundation and Node js Foundation merged to form the OpenJS Foundation On September 6 2023 Node js 20 6 0 was released The update brought the addition of built in support for env files the unflagging of import meta resolve the introduction of a new node var module var API register for module customization hooks and a new initialize hook Additionally the module customization load hook now supported CommonJS and Node js C add ons have gained experimental support for cppgc Oilpan which is a C garbage collection library for V8 27 Overview editNode js allows the creation of web servers and networking tools using JavaScript and a collection of modules that handle various core functionalities 14 17 28 29 30 Modules are provided for file system I O networking DNS HTTP TCP TLS SSL or UDP binary data buffers cryptography functions data streams and other core functions 17 29 31 Node js s modules use an API designed to reduce the complexity of writing server applications 17 29 JavaScript is the only language that Node js supports natively but many compile to JS languages are available 32 As a result Node js applications can be written in CoffeeScript 33 Dart TypeScript ClojureScript and others Node js is primarily used to build network programs such as web servers 28 The most significant difference between Node js and PHP is that most functions in PHP block until completion commands execute only after previous commands finish while Node js functions are non blocking commands execute concurrently or even in parallel 34 35 improper synthesis and use callbacks to signal completion or failure 28 Node js is officially supported by Linux macOS and Microsoft Windows 8 1 and Server 2012 and later 3 with Tier 2 support for SmartOS and IBM AIX and experimental support for FreeBSD OpenBSD also works and LTS versions are available for IBM i AS 400 36 The source code may also be built on similar operating systems that are not officially supported such as NonStop OS 37 and Unix servers Platform architecture edit Node js enables development of fast web servers in JavaScript using event driven programming 17 Developers can create scalable servers without using threading by using a simplified model that uses callbacks to signal the completion of a task 17 page needed Node js connects the ease of a scripting language JavaScript with the power of Unix network programming 17 Node js was built on top of Google s V8 JavaScript engine since it was open sourced under the BSD license and it contains comprehensive support for fundamental protocols such as HTTP DNS and TCP 14 JavaScript s existing popularity made Node js accessible to the web development community 14 Industry support edit There are thousands of open source libraries for Node js most of which are hosted on the npm website Multiple developer conferences and events are held that support the Node js community including NodeConf Node Interactive and Node Summit as well as a number of regional events The open source community has developed web frameworks to accelerate the development of applications Such frameworks include Connect Express js Socket IO Feathers js Koa js Hapi js Sails js Meteor and Derby 17 38 Various packages have also been created for interfacing with other languages or runtime environments such as Microsoft NET 39 Modern desktop IDEs provide editing and debugging features specifically for Node js applications Such IDEs include Atom Brackets JetBrains WebStorm 40 41 Microsoft Visual Studio with Node js Tools for Visual Studio 42 or TypeScript with Node definitions 43 44 45 46 NetBeans 47 Nodeclipse Enide Studio 48 Eclipse based and Visual Studio Code 49 50 Some web based IDEs also support Node js such as Codeanywhere Codenvy Cloud9 IDE Koding and the visual flow editor in Node RED Node js is supported across a number of cloud hosting platforms such as Jelastic Google Cloud Platform AWS Elastic Beanstalk Azure Web Apps andJoyent Releases editRelease 51 Status Code name Release date Maintenance endOld version no longer maintained 0 10 x Old version no longer maintained End of Life 2013 03 11 2016 10 31Old version no longer maintained 0 12 x Old version no longer maintained End of Life 2015 02 06 2016 12 31Old version no longer maintained 4 x Old version no longer maintained End of Life Argon 52 2015 09 08 2018 04 30Old version no longer maintained 5 x Old version no longer maintained End of Life 2015 10 29 2016 06 30Old version no longer maintained 6 x Old version no longer maintained End of Life Boron 52 2016 04 26 2019 04 30Old version no longer maintained 7 x Old version no longer maintained End of Life 2016 10 25 2017 06 30Old version no longer maintained 8 x Old version no longer maintained End of Life Carbon 52 2017 05 30 2019 12 31Old version no longer maintained 9 x Old version no longer maintained End of Life 2017 10 01 2018 06 30Old version no longer maintained 10 x Old version no longer maintained End of Life Dubnium 52 2018 04 24 2021 04 30Old version no longer maintained 11 x Old version no longer maintained End of Life 2018 10 23 2019 06 01Old version no longer maintained 12 x Old version no longer maintained End of Life Erbium 52 2019 04 23 2022 04 30Old version no longer maintained 13 x Old version no longer maintained End of Life 2019 10 22 2020 06 01Old version no longer maintained 14 x Old version no longer maintained End of Life Fermium 52 2020 04 21 2023 04 30Old version no longer maintained 15 x Old version no longer maintained End of Life 2020 10 20 2021 06 01Old version no longer maintained 16 x Old version no longer maintained End of Life Gallium 52 2021 04 20 2023 09 11 53 Old version no longer maintained 17 x Old version no longer maintained End of Life 2021 10 19 2022 06 01Older version yet still maintained 18 x Older version yet still maintained Maintenance LTS Hydrogen 52 2022 04 19 2025 04 30Old version no longer maintained 19 x Old version no longer maintained End of Life 2022 10 18 2023 06 01Older version yet still maintained 20 x Older version yet still maintained Active LTS Iron 54 2023 04 18 2026 04 30Current stable version 21 x Current stable version Current 52 2023 10 17 2024 05 30Future release 22 x Future release Planned Jod 54 52 2024 04 15 2027 04 28Future release 23 x Future release Planned 52 2024 10 14 2025 05 27Legend Old versionOlder version still maintainedLatest versionLatest preview versionFuture releaseNew major releases of Node js are cut from the GitHub main branch every six months Even numbered versions are cut in April and odd numbered versions are cut in October When a new odd version is released the previous even version undergoes transition to Long Term Support LTS which gives that version 18 months of active support from the date it is designated LTS After these 18 months expire an LTS release receives an additional 12 months of maintenance support An active version receives non breaking backports of changes a few weeks after they land in the current release A maintenance release receives only critical fixes and documentation updates 52 The LTS Working Group manages strategy and policy in collaboration with the Technical Steering Committee of the Node js Foundation Technical details editNode js is a JavaScript runtime environment that processes incoming requests in a loop called the event loop Internals edit Node js uses libuv under the hood to handle asynchronous events Libuv is an abstraction layer for network and file system functionality on both Windows and POSIX based systems such as Linux macOS OSS on NonStop and Unix Node js relies on nghttp2 for HTTP support As of version 20 Node js uses the ada library which provides up to date WHATWG URL compliance As of version 19 5 Node js uses the simdutf library for fast Unicode validation and transcoding As of version 21 3 Node js uses the simdjson library for fast JSON parsing Threading edit Node js operates on a single thread event loop using non blocking I O calls allowing it to support tens of thousands of concurrent connections without incurring the cost of thread context switching 55 The design of sharing a single thread among all the requests that use the observer pattern is intended for building highly concurrent applications where any function performing I O must use a callback To accommodate the single threaded event loop Node js uses the libuv library which in turn uses a fixed sized thread pool that handles some of the non blocking asynchronous I O operations 7 A thread pool handles the execution of parallel tasks in Node js The main thread function call posts tasks to the shared task queue which threads in the thread pool pull and execute Inherently non blocking system functions such as networking translate to kernel side non blocking sockets while inherently blocking system functions such as file I O run in a blocking way on their own threads When a thread in the thread pool completes a task it informs the main thread of this which in turn wakes up and executes the registered callback A downside of this single threaded approach is that Node js does not allow vertical scaling by increasing the number of CPU cores of the machine it is running on without using an additional module such as cluster 34 StrongLoop Process Manager 56 or pm2 57 However developers can increase the default number of threads in the libuv thread pool The server operating system OS is likely to distribute these threads across multiple cores 58 Another problem is that long lasting computations and other CPU bound tasks freeze the entire event loop until completion citation needed V8 edit Main article V8 JavaScript engine V8 is the JavaScript execution engine which was initially built for Google Chrome It was then open sourced by Google in 2008 Written in C V8 compiles JavaScript source code to native machine code at runtime 7 As of 2016 it also includes Ignition a bytecode interpreter Package management edit npm is the pre installed package manager for the Node js server platform It installs Node js programs from the npm registry organizing the installation and management of third party Node js programs Event loop edit Node js registers with the operating system so the OS notifies it of asynchronous I O events such as new connections Within the Node js runtime events trigger callbacks and each connection is handled as a small heap allocation Traditionally relatively heavyweight OS processes or threads handled each connection Node js uses an event loop for concurrent I O instead of processes or threads 59 In contrast to other event driven servers which Node js s event loop does not need to be called explicitly Instead callbacks are defined and the server automatically enters the event loop at the end of the callback definition Node js exits the event loop when there are no further callbacks to be performed WebAssembly edit Node js supports WebAssembly and as of Node 14 has experimental support of WASI the WebAssembly System Interface Native bindings edit See also Foreign function interface Node js provides a way to create add ons via a C based API called N API which can be used to produce loadable importable node modules from source code written in C C 60 The modules can be directly loaded into memory and executed from within JS environment as simple CommonJS modules The implementation of the N API relies on internal C C Node js and V8 objects requiring users to import include Node js specific headers into their native source code 60 As the Node js API is subject to breaking changes at a binary level modules have to be built and shipped against specific Node js versions to work properly To address the issue third parties have introduced open sourced S S wrappers on top of the API that partially alleviate the problem They simplify interfaces but as a side effect they may also introduce complexity which maintainers have to deal with Even though the core functionality of Node js resides in a JavaScript built in library modules written in C can be used to enhance capabilities and to improve performance of applications In order to produce such modules one needs to have an appropriate C compiler and necessary headers the latter are typically shipped with Node js itself e g gcc clang or MSVC The N API is similar to Java Native Interface Project governance editMain article OpenJS Foundation In 2015 various branches of the greater Node js community began working under the vendor neutral Node js Foundation The stated purpose of the organization is to enable widespread adoption and help accelerate development of Node js and other related modules through an open governance model that encourages participation technical contribution and a framework for long term stewardship by an ecosystem invested in Node js success 61 The Node js Foundation Technical Steering Committee TSC is the technical governing body of the Node js Foundation The TSC is responsible for the core Node js repo as well as dependent and adjacent projects Generally the TSC delegates the administration of these projects to working groups or committees 62 The LTS group that manages long term supported releases is one such group Other current groups include Website Streams Build Diagnostics i18n Evangelism Docker Addon API Benchmarking Post mortem Intl Documentation and Testing 63 In August 2017 a third of the TSC members resigned due to a dispute related to the project s code of conduct 64 See also editDeno a back end runtime environment for JavaScript and TypeScript also created by Ryan Dahl References edit node v0 x archive on GitHub GitHub Retrieved 2 August 2014 Release 21 6 1 22 January 2024 Retrieved 1 February 2024 a b nodejs node GitHub 13 April 2022 node LICENSE at master GitHub Node js Foundation 17 September 2018 Retrieved 17 September 2018 The MIT License Open Source Initiative 17 September 2018 Retrieved 17 September 2018 gcuomo 24 October 2013 JavaScript Everywhere and the Three Amigos Into the wild BLUE yonder www ibm com Archived from the original on 14 November 2013 Retrieved 24 October 2013 a b c Laurent Orsini 7 November 2013 What You Need To Know About Node js readwrite com Retrieved 6 February 2022 Node js Foundation Node js nodejs org Retrieved 4 July 2015 Linux Foundation Collaborative Projects linuxfoundation org 4 July 2015 Retrieved 4 July 2015 About Node js and why you should add Node js to your skill set Training com 11 September 2016 Retrieved 23 October 2016 Staff CNET News 15 October 1996 Netscape opens intranet attack CNET Retrieved 20 April 2017 Ryan Dahl 9 November 2010 Joyent and Node Google Groups Retrieved 5 February 2015 Garbar Dzmitry PHP 7 vs Node js They Can Be Partners Not Competitors For a Developer belitsoft com Retrieved 21 December 2016 a b c d Sams Teach Yourself Node js in 24 Hours Sams Publishing 05 Sep 2012 Ubl Malte 9 September 2009 JSConf eu 2009 Berlin Germany www jsconf eu Retrieved 9 September 2009 Ryan Dahl Original Node js presentation Archived from the original on 15 December 2021 via www youtube com a b c d e f g h i Professional Node js Building JavaScript Based Scalable Software John Wiley amp Sons 01 Oct 2012 Earliest releases of npm GitHub Retrieved 27 July 2016 Ryandahl 23 June 2011 Porting Node to Windows With Microsoft s Help nodejs org Retrieved 17 April 2016 Dahl Ryan New gatekeeper Retrieved 26 October 2013 Schlueter Isaac 15 January 2014 The Next Phase of Node js Retrieved 21 January 2014 Q amp A Why io js decided to fork Node js InfoWorld Tech Watch Node js Foundation Advances Community Collaboration Announces New Members and Ratified Technical Governance Archived from the original on 24 June 2015 Retrieved 4 July 2015 Node js Foundation Combines Node js and io js Into Single Codebase in New Release nodejs org 14 September 2015 Retrieved 28 January 2016 io js and Node js merge medium com 19 May 2015 Retrieved 27 June 2015 Io js JavaScript I O io js has merged with the Node js project again There won t be any further io js releases All of the features in io js are available in Node js v4 and above Previous Releases Node js a b c Node js for PHP Developers O Reilly Media Inc 2013 a b c Node js Essentials Packt Publishing 10 Nov 2015 Smashing Node js JavaScript Everywhere John Wiley amp Sons 14 Aug 2012 Modules Nodejs Website List of languages that compile to JS Github CoffeeScript on Node js O Reilly Media Inc 15 April 2013 ISBN 9781449316846 Retrieved 17 May 2015 a b Node js s cluster module nodejs org Retrieved 19 October 2017 Node js s child process module nodejs org Retrieved 19 October 2017 Foundation Node js Installing Node js via package manager Node js Retrieved 19 May 2019 bomBora Node js for NonStop infrasoft com au Infrasoft Archived from the original on 11 March 2018 Retrieved 14 August 2015 Express js Guide The Comprehensive Book on Express js Azat Mardan 28 May 2014 Edge js bridges the gap between Node js and NET TechRepublic Tony Patton 1 July 2014 Node js WebStorm supports integration with the Node js runtime environment WebStorm Help Running and Debugging Node js WebStorm Help Node js Tools for Visual Studio microsoft com Retrieved 1 February 2016 soywiz typescript node definitions TypeScript s typings for some popular node js modules GitHub DefinitelyTyped GitHub The repository for high quality TypeScript type definitions definitelytyped org Archived from the original on 3 February 2016 ImageBoard A Node js Express MongoDB application built using TypeScript on the server TypeScript Samples Krill Paul 10 November 2015 Node js takes center stage in NetBeans 8 1 infoworld com InfoWorld Retrieved 10 November 2015 Nodeclipse Enide Node JS development in Eclipse Nodeclipse Website Hello Visual Studio Code with NodeJS Channel 9 Microsoft Node js Applications with VS Code Visual Studio Code Releases Node js 23 August 2023 a b c d e f g h i j k l nodejs Release GitHub Retrieved 3 May 2018 Bringing forward the End of Life Date for Node js 16 Node js Website a b Node JS CODENAMES md GitHub Retrieved 6 September 2023 Node js w 1M concurrent connections caustik s blog 19 August 2012 StrongLoop Process Manager strong pm io GitHub Unitech pm2 Production process manager for Node js applications with a built in load balancer GitHub 12 June 2021 Aleksander Kasiuk 22 April 2015 On problems with threads in node js Future Processing About Node js Node js Website a b C addons Node js v14 12 0 Documentation nodejs org Retrieved 26 September 2020 Foundation Node js Node js Foundation Node js nodejs org Retrieved 8 March 2017 nodejs TSC GitHub Retrieved 8 March 2017 Foundation Node js Working Groups Node js nodejs org Archived from the original on 27 February 2017 Retrieved 8 March 2017 Whittaker Zack After governance breakdown Node js leaders fight for its survival ZDNet 25 August 2017Further reading editHughes Croucher Tom Wilson Mike April 2012 Up and Running with Node js O Reilly Media ISBN 978 1 4493 9858 3 Ornbo George September 2012 Sams Teach Yourself Node js in 24 Hours SAMS Publishing ISBN 978 0 672 33595 2 Teixeira Pedro October 2012 Professional Node js John Wiley amp Sons ISBN 978 1 118 22754 1 Randal L Schwartz and Aaron Newcomb 9 January 2013 Episode 237 Node js twit tv show floss weekly Podcast TWiT tv Event occurs at 1 08 13 Retrieved 9 January 2013 Gackenheimer Cory October 2013 Node js Recipes A Problem Solution Approach Apress ISBN 978 1 4302 6058 5External links edit nbsp Wikimedia Commons has media related to Node js Official website nbsp node on GitHub Retrieved from https en wikipedia org w index php title Node js amp oldid 1207311970, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.