Node js: che cos'è e a che cosa serve?

25
Autore: Flavius Florin Harabor e-mail: [email protected]

Transcript of Node js: che cos'è e a che cosa serve?

Page 1: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Page 2: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js Dimmi con quale contorno ti posso mangiare?

Page 3: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js: introduzione

Va detto che non sapevo come iniziare queste slide, quindi vediamo di improvvisare un po’ una piccola introduzione tanto per capire di che cosa si tratta.

Queste slide nascono dopo aver ricevuto una serie di domande attraverso i vari social, ma anche dopo aver discusso con i miei amici e colleghi del portale InsiDevCode (http://www.insidevcode.eu/). Quindi all'interno di queste pagine, andremo a vedere: che cos'è Node.js, a cosa serve e poi tante altre informazioni.

Penso di avervi detto tutto e mi auguro di avervi invogliato a leggere quanto segue, per le lamentele, basta commentare qui sotto oppure avendo il mio nome e cognome, cercatemi nei vari social network per una chiacchierata al riguardo.

Page 4: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Si comincia apri la mente e attivi i neuroni necessari

Page 5: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Che cos'è Node.js?

Ciao Flavius. Senti oggi cercando in rete alcune informazioni mi sono imbattuto in alcuni annunci di lavoro dove si parlava di Node.js e poi ho visto anche alcuni tuoi tweet che parlavano di questa cosa. Node.js è una versione di JavaScript?

Ciao amico. Allora Node.js è si più o meno collegato a JavaScript, anche se hanno poche cose in comune. Infatti Node.js è un framework event-driven, open source, cross-platform per le applicazioni server-side e di rete. Quindi le applicazioni scritte attraverso Node.js possono essere eseguite su Mac OS X, GNU/Linux, Windows e FreeBSD.

La piattaforma è basata sul JavaScript Engine V8, che è il runtime di Google utilizzato anche da Chrome/Chromium.

Se vogliamo parlare di una caratteristica principale attorno cui Node.js gira, sta nella possibilità di offrire l'accesso alle risorse del sistema operativo in modalità event-driven e non sfruttando il classico modello basato su processi o thread concorrenti.

Diciamo che Node.js va a realizzare un piccolo ambiente host locale, in cui far eseguire le applicazioni scritte in JavaScript. Esso fornisce tutte le librerie e feature che solitamente si trovano all'interno di un comune browser.

Page 6: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Che cos'è Node.js?

Per concludere questa presentazione del Node.js, ti dico che ha un comportamento asincrono, durante le attese di una certa azione e il runtime può gestire qualcos'altro.

Ecco un esempio in questo schema:

Altre Info Qui

Page 7: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Che cos'è Node.js?

Si può riassumere tutto questo in questi semplici punti:

Node.js è una piattaforma basata su JavaScript Engine V8, motore di Google che interpreta javascript:

●facile approccio per gli sviluppatori HTML5 ●poche risorse richieste ●programmazione single thread ●webserver scriptabile in js ●perfetto per applicazioni data-intensive

Page 8: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Hai dei dubbi...!?! Vai avanti

Page 9: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Perchè hanno progettato Node.js?

Bella come seconda domanda, vediamo di rispondere in modo più veloce e semplice.

Come tutto quello che viene progettato o inventato, anche Node.js è stato pensato per facilitare la realizzazione di applicazioni web. Cioè Node.js nasce per creare programmi che funzionano come server.

Va detto che questa cosa è molto interessante e intelligente, perchè vuol dire che tu come sviluppatore puoi realizzare un'applicazione lato server o lato cliente (cioè la parte che gira all'interno del browser dell'utente) utilizzando sempre lo stesso linguaggio di programmazione, cioè JavaScript.

Quindi con Node.js si risparmia tempo e fatica, oltre che linguaggi in meno da comprendere e studiare.. In più le applicazioni sono veloci.

Page 10: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Siamo sicuri che grazie a Node.js, le applicazioni scritte in JavaScript sono più veloci?

Page 11: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js benchmark

Diciamo che tu fai bene a dubitare, perchè come ben sai JavaScript è un linguaggio interpretato, ma questo non vuol dire che sia lento.

Secondo alcuni test svolti, per controllare la velocità, hanno restituito dati molto interessanti. Infatti, le applicazioni scritte in JavaScript ed eseguite con Node.js, hanno superato quelle che giravano all'interno di Nginx (un server altamente ottimizzato).

Ulteriori dettagli a questo indirizzo

Page 12: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Non ci credo. Com'è possibile questa cosa?

Page 13: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js benchmark

Si pure io sono rimasto sorpreso quando ho letto queste cose. Vediamo le due ragioni principali per cui questi risultati sono così "eclatanti".

In primis abbiamo JavaScript che si sta evolvendo e aggiornando, diventando sempre più importante nel grande mondo del Web.

Due visto che questo linguaggio è diventato sempre più utilizzato, ecco che i vari sviluppatori di browser hanno deciso di creare ed inserire all'interno di essi motori in grado di eseguire in modo molto più veloce il codice scritto in JavaScript.

Page 14: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

JavaScript Engine V8?!? Motore Google?!?

Page 15: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Aspetta. Quindi JavaScript Engine V8 è il motore di Google?

Yap. Hai capito molto bene. JavaScript Engine V8 è l'engine il motore JavaScript realizzato da Google e inserito all'interno del suo browser Chrome e anche Chromium. Per un buon periodo questo motore è stato il più veloce in circolazione, oltre a quello più stabile.

In più JavaScript Engine V8 era ed è ancora Open Source, questo significa che se vuoi accedere a tutto il suo codice sorgente e poi decidi di utilizzarlo all'interno del tuo progetto o meglio applicazione web differente, fuori dal browser, lo puoi fare liberamente.

Page 16: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Quindi Node.js è un motore JavaScript?

Page 17: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Aspetta. Quindi JavaScript Engine V8 è il motore di Google?

Si. Una delle parti importanti di Node.js sta nel possedere questo motore JavaScript all'interno del suo cuore. Questa cosa fa si che un'applicazione o programma scritto in JavaScript giri in modo così veloce, anche se questo linguaggio è interpretato.

Page 18: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Come fanno a rendere Node.js così veloce?

Page 19: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Come fanno a rendere Node.js così veloce? (risposta)

Se parliamo dei nuovi computer, abbiamo dalla nostra il fattore della velocità e potenza della memoria RAM e la CPU, seguita poi dai dispositivi di storage SSD, che combinati insieme ci danno una grande potenza e velocità di calcolo.

Però non sempre questo è valido, perchè esistono ancora computer lenti e dispositivi di storage lenti, così come la stessa rete Internet non è così veloce. Ecco che in questo caso le applicazioni diventano lente.

Tutto questo indica allo sviluppatore che per velocizzare l'esecuzione della sua applicazione non deve pensare solo agli algoritmi utilizzati, ma deve tenere molto conto dell'ottimizzazione I/O (input/output)

Page 20: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Mi confondi, si può ottimizzare l'I/O (input/output)? Io pensavo che l'I/O è condizionato dalla velocità dell'hardware, non dal software.

Alt... Node.js non cerca di ottimizzare l'input/output del tuo programma, ma ha lo scopo di impedire che esso impedisca al resto dell'applicazione di continuare a lavorare. Ti ho confuso ehee !?!

Per farti capire che cosa volevo dire, ti faccio un piccolo esempio.

Tu sei in coda alla posta. La signora a un certo punto chiama te e ti chiede che cosa ti serve, tu spieghi a lei che cosa vuoi e lei ti fornisce un modulo da compilare, ti metti davanti a lei e compili il modulo. In questo modo la fila dietro di te aspetta, qualcuno comincerà a spazientirsi e vi manderà a quel paese ad entrambi.

Ed ecco che adesso interviene Node.js. Ossia tu fai la tua richiesta, solo che una volta ricevuto il modulo da compilare e la tua bella penna, vieni invitato a compilarlo su un tavolo vicino. In questo modo mentre tu finisci di compilare, la signora può prendere in gestione il restante delle persone in coda. Ed ecco che così non ti manderà nessuno a quel paese.

Page 21: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Un piccolo schema

Page 22: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Intelligente come cosa, ma non è un pò complicato tutto questo lavoro?

Ufficialmente si. Tutto questo lavoro di delega e tener traccia di tutti i vari task è molto complicato.

Va anche detto che tutti i sistemi operativi integra all'interno del loro cuore il supporto per questo tipo di lavoro, però molto spesso è molto difficile da utilizzare. Quindi ecco che Node.js interviene nel nostro aiuto.

Page 23: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Quindi a cosa serve Node.js?

Lo sapevo che mi facevi questa domanda così secca. Anzi la stavo aspettando da un pò. Adesso che hai capito che cos'è Node.js, devi giustamente sapere a che cosa serve.

Node.js serve per semplificare la realizzazione di applicazioni di rete, per esempio: programmi di chat, giochi on-line o Server Web; che possono gestire molti utenti alla volta in modo più veloce e diretto di prima.

In questo modo tutto l'applicazione, sia nella parte front-end e back-end, può essere scritta interamente con un solo linguaggio, cioè JavaScript.

Page 24: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js >>> FINE

Finisce qui la spiegazione... Ecco un piccolo programma scritto proprio utilizzando JavaScript e Node.js

Leggi Qui

Page 25: Node js: che cos'è e a che cosa serve?

Autore: Flavius Florin Harabor e-mail: [email protected]

Node.js >>> Cose Utili

Bene penso di aver capito che cos'è e a che cosa serve Node.js. Però mi puoi dare qualche link utile o indicarmi alcuni libri che posso acquistare?

Certamente, ecco qua alcuni link e alcuni titoli di alcuni libri, clicca sopra e continua ad informarti su questo argomento. Mi auguro di esserti stato utile e ci risentiamo la prossima volta, magari parlando dello stesso argomento in modo molto più tecnico.

Link (clicca sul link):● https://nodejs.org/ ● https://code.google.com/p/v8/ ● http://en.wikipedia.org/wiki/Node.js ● http://www.hostingtalk.it/lezione-1-node-js-introduzione_-c000000ge/ ● http://www.christianpalazzo.org/breve-introduzione-node-js-e-sua-configurazione-con-apache/ ● https://blog.udemy.com/learn-node-js● http://www.slideshare.net/appdynamics/app-d-anatomymodernnodejsposterinside

Libri (clicca sulla voce):Node.js: Creare applicazioni web in JavaScrip (Guida completa)Node.js, MongoDB, and AngularJS Web Development (Developer's Library) Node.js in ActionNode.js the Right Way: Practical, Server-Side JavaScript That ScalesLearning Node.js: A Hands-On Guide to Building Web Applications in JavaScriptBeginning Node.jsNode.js Design PatternsNode.js for PHP Developers: Porting PHP to Node.js