Node.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Annullata la modifica 92426668 di 81.88.255.50 (discussione)
Etichetta: Annulla
introduzione ampliata, inserito abbozzo di storia tradotto a partire dalla voce inglese di wikipedia
Riga 12:
}}
 
'''Node.js''' è una [[Piattaforma (informatica)|piattaforma]] [[Open source]] [[Programmazione a eventi|event-driven]] per l'esecuzione di codice [[JavaScript]] [[Server-side]]. In origine [[JavaScript]] veniva utilizzato esclusivamente lato [[client]]; in questo scenario gli script [[JavaScript]], generalmente incorporati all'interno dell'HTML di una pagina web, vengono interpretati da un motore di esecuzione incorporato direttamente all'interno di un [[Browser]]. [[Node.js]] consente invece di utilizzare [[JavaScript]] anche per scrivere codice da eseguire lato server, ad esempio per la produzione del contenuto delle pagine web dinamiche prima che la pagina venga inviata al [[Browser]] dell'utente. [[Node.js]] in questo modo permette di implementare il cosiddetto paradigma "JavaScript everywhere" (Javascript ovunque), unificando lo sviluppo di applicazioni Web intorno ad un unico linguaggio di programmazione.
'''Node.js''' è una [[Piattaforma (informatica)|piattaforma]] [[Programmazione a eventi|event-driven]] per il [[V8 (motore JavaScript)|motore JavaScript V8]] di Chrome [[Unix-like|UNIX like]]. Molti dei suoi moduli base sono scritti in Javascript, e gli sviluppatori possono scrivere nuovi moduli in Javascript.
 
'''Node.js''' ha un'architettura [[Programmazione a eventi|event-driven]] capace di gestire I/O asincroni. Questa scelta progettuale mira a ottimizzare il [[Throughput]] e la [[scalabilità]] nelle applicazioni web che prevedono molte operazioni di input/output o per applicazioni web [[Real-time]] (ad esempio programmi di comunicazione in tempo reale o [[browser game]]).
 
'''Node.js'''ed è una [[Piattaforma (informatica)|piattaforma]] [[Programmazione a eventi|event-driven]] per il [[V8 (motore JavaScript)|motore JavaScript V8]] di Chrome [[Unix-like|UNIX like]]. Molti dei suoi moduli base sono scritti in Javascript, e gli sviluppatori possono scrivere nuovi moduli in Javascript.
 
[[node.js]] è un progetto di sviluppo [[Open source]] distribuito gestito dalla <nowiki>[[Node.js Foundation]]</nowiki> e facilitato tramite il programma di progetti collaborativi della <nowiki>[[Linux Foundation's]]</nowiki>.
 
Le aziende che supportano il programma includono <nowiki>[[GoDaddy]]</nowiki>, <nowiki>[[Groupon]]</nowiki>, <nowiki>[[IBM]]</nowiki>, <nowiki>[[LinkedIn]]</nowiki>, <nowiki>[[Microsoft]]</nowiki>, <nowiki>[[Netflix]]</nowiki>, <nowiki>[[PayPal]]</nowiki>, <nowiki>[[Rakuten]]</nowiki>, <nowiki>[[SAP]]</nowiki>, <nowiki>[[Voxer]]</nowiki>, <nowiki>[[Walmart]]</nowiki> e <nowiki>[[Yahoo!]]</nowiki>.
 
== Storia ==
[[Node.js]] è stato originariamente creato da <nowiki>[[Ryan Dahl]]</nowiki> nel 2009, circa tredici anni dopo l'introduzione del primo ambiente JavaScript lato server, il Web LiveWire Pro di <nowiki>[[Netscape]]</nowiki>. La versione iniziale supportava solo <nowiki>[[Linux]]</nowiki> e <nowiki>[[Mac OS X]]</nowiki>. Il suo sviluppo e la sua manutenzione erano guidati da Dahl e in seguito sponsorizzati da <nowiki>[[Joyent]]</nowiki>.
 
== Efficienza ==
Il modello di networking su cui si basa <nowiki>[[Node.js]]</nowiki> non è quello dei processi concorrenti, ma [[Input/output|I/O]] [[Programmazione a eventi|event-driven]]: ciò vuol dire che Node richiede al sistema operativo di ricevere notifiche al verificarsi di determinati eventi, e rimane quindi in ''sleep'' fino alla notifica stessa: solo in tale momento torna attivo per eseguire le istruzioni previste nella funzione di [[callback]], così chiamata perché da eseguire una volta ricevuta la notifica che il risultato dell'elaborazione del sistema operativo è disponibile. Tale modello di networking, implementato anche nella libreria ''Event machine'' per [[Ruby]] e nel framework ''Twisted'' per [[Python]], è ritenuto più efficiente nelle situazioni critiche in cui si verifica un elevato traffico di rete<ref>[http://www.kegel.com/c10k.html Articolo in inglese sulla gestione server tramite framework I/O]</ref><ref>[http://bulk.fefe.de/scalable-networking.pdf Scalable Network Programming, e-book di Felix von Leitner (in inglese, formato PDF).]</ref>.
 
== Note ==