nodejs

NodeJs, il codice JavaScript Server Side

JavaScript è considerato oggi uno dei linguaggi di programmazione lato client più popolari e largamente usati. E’ utilizzato come strumento di sviluppo web front-end e ha dimostrato di essere un utile client per la costruzione di piattaforme di sviluppo incrociato. In aggiunta a ciò ha anche guadagnato reputazione grazie al suo impiego in varie altre piattaforme popolari come React Native, PhoneGap, Titanium, Apache, NativeScript e Appcelerator.

Nello scenario attuale, l’area di applicazione di JavaScript si è ampliata e ora viene utilizzata anche per la programmazione lato server. Ed è qui che NodeJs entra in gioco, assumendo un ruolo importante in questa nuova evoluzione dello sviluppo web.

Cos’è NodeJs?

NodeJs (Node) è una piattaforma di sviluppo open-source per l’esecuzione di codici JavaScript lato server. Node è utile per lo sviluppo di applicazioni che richiedono una connessione persistente dal browser al server ed è spesso utilizzato per applicazioni in tempo reale come chat, news feed e notifiche web push.

Il fatto che venga utilizzato per costruire applicazioni scalabili ed event-driven crea spesso confusione, poiché l’ambiente JavaScript tradizionale è sempre stato lato client – nel browser di un utente o in un’applicazione che sta comunicando con un server. JavaScript non è quindi mai stato preso in considerazione nel caso di richieste al server da parte del client, ma è esattamente ciò che NodeJs fa.

NodeJs è programmato per funzionare su server HTTP dedicati e ad utilizzare un singolo thread, un processo alla volta. Le applicazioni NodeJs sono basate su eventi e funzionano in modo asincrono. Il codice costruito sulla piattaforma Node non segue il modello tradizionale di ricezione, elaborazione, invio, attesa, ricezione. Invece, Node elabora le richieste in entrata in uno stack di eventi costanti e invia piccole richieste una dopo l’altra senza attendere le risposte.

Questo rappresenta una deviazione dai modelli mainstream, che elaborano invece processi più grandi e complessi eseguendo più thread contemporaneamente, questi ultimi in attesa della risposta appropriata prima di procedere.

NodeJs non è scritto in JavaScript, ma in C++. Tuttavia utilizza il linguaggio JavaScript come linguaggio interpretativo per l’elaborazione delle richieste/risposte lato server.

In altre parole, esegue programmi JavaScript autonomi. Il vantaggio è che i programmatori possono usare le loro conoscenze di programmazione attuali, anche se lato client, e iniziare a codificare con NodeJs molto più facilmente.

I vantaggi

  • Scalabilità: uno dei vantaggi chiave è che gli sviluppatori trovano facile scalare le applicazioni sia in orizzontale che in verticale. Le applicazioni possono essere scalate in orizzontale con l’aggiunta di nodi aggiuntivi al sistema esistente. Inoltre NodeJs offre la possibilità di aggiungere risorse aggiuntive ai singoli nodi durante la scalatura verticale dell’applicazione. Quindi, è altamente scalabile e fornisce un’opzione migliore rispetto ad altri server JavaScript.
  • Facile da imparare: poiché JavaScript è uno dei linguaggi di programmazione più popolari, la maggior parte degli sviluppatori Front-end ne possiede una buona padronanza. Per questo motivo, diventa molto più facile per loro usare NodeJs nel Backend.
  • Linguaggio di programmazione unico: NodeJs offre agli sviluppatori il lusso di scrivere le applicazioni lato server in JavaScript. Questo permette agli sviluppatori di scrivere sia il Frontend che il Backend dell’applicazione web in JavaScript utilizzando un ambiente runtime, senza aver bisogno di utilizzare nessun altro linguaggio di programmazione lato server. Rende anche più semplice la distribuzione delle applicazioni web perché quasi tutti i browser web supportano JavaScript.
  • Prestazioni elevate: NodeJs interpreta il codice JavaScript tramite il motore JavaScript V8 di Google. Questo motore è conforme al codice JavaScript direttamente nel codice macchina e questo rende più facile e veloce la sua implementazione. La velocità di esecuzione del codice è migliorata anche dall’ambiente runtime in quanto supporta operazioni di I/O non-blocking.
  • Comunità ampia e attiva: NodeJs ha la fortuna di avere una vasta e attiva comunità di sviluppatori che contribuiscono costantemente al suo ulteriore sviluppo e miglioramento.
  • Fullstack JS: è un JavaScript completo, che permette di servire sia il lato client che il lato server delle applicazioni. Pertanto, il vantaggio è che non è necessario assumere sviluppatori separati per il Backend e per quello Frontend, risparmiando tempo e denaro prezioso.
  • Caching: l’ambiente runtime open-source di NodeJs fornisce la possibilità di mettere in cache singoli moduli. Ogni volta che c’è una richiesta per il primo modulo, viene messo in cache nella memoria dell’applicazione. In questo modo, gli sviluppatori non devono eseguire nuovamente i codici perché il caching permette alle applicazioni di caricare le pagine web più velocemente e risponde più rapidamente all’utente.
  • Sviluppo libero di applicazioni: offre agli sviluppatori la libertà di sviluppare applicazioni e software. Questa è una caratteristica essenziale, che permette di iniziare completamente da zero lo sviluppo delle applicazioni.
  • Gestione contemporanea delle richieste: offre un sistema in grado di gestire richieste simultanee in modo più efficiente rispetto ad altri strumenti, come Ruby o Python. Le richieste in arrivo vengono allineate e vengono eseguite rapidamente e sistematicamente.
  • Altamente estensibile: è noto per essere altamente estensibile, il che significa che è possibile personalizzare ed estendere ulteriormente NodeJs secondo le proprie esigenze. È inoltre possibile utilizzare JSON per fornire la possibilità di scambio di dati tra il server web e il client. È inoltre agevolato da API integrate per lo sviluppo di server HTTP, TCP, DNS, TCP, ecc.