Ho visto tecnologie Javascript lato server come, Rhino e Node.js. Quali sono i vantaggi dell'utilizzo di Javascript lato server e dove nel lato server si adattano allo stack?
Parlerò esclusivamente di Node.js in quanto non ho alcuna esperienza con Rhino. La differenza principale sarebbe l'ambiente in cui vengono eseguiti. Rhino gira su JVM e V8 (Node.js) è semplicemente un compilatore per codice nativo non un interprete.
La differenza tra Node.js e Rhino è che Rhino è un motore JavaScript e Node.js è un insieme di librerie che girano su V8 (Il motore JavaScript). Queste librerie sono principalmente costruite con un approccio asincrono per fornire un sistema veloce e scalabile. Async non è nuovo. Python ha molti framework come Tornado e Ruby ha EventMachine. Il problema con questi è il loro sistema di moduli di terze parti. Se si avvia un utilizzo asincrono, è necessario utilizzare solo metodi asincroni. I moduli di terze parti di Ruby e Python sono per lo più sincroni. Questo rende la scelta delle librerie molto più difficile e poco attraente.
Si potrebbe dire che Node.js è costruito attorno al modello asincrono e il suo sistema di modelli di terze parti è puramente asincrono (anche se alcune eccezioni in cui specificano specificatamente cosa è sincrono o quando forniscono metodi asincroni e sincroni).
C'è molta frammentazione della libreria in altre lingue. La frammentazione è asincrono vs sincronizzazione e sistemi di moduli. Node.js ha probabilmente un sistema di moduli: NPM. Questo crea la standardizzazione attorno al modulo di terze parti.
Ci sono molti vantaggi nell'avviare Node.js:
Per quanto riguarda le domande nei commenti (parlando di architettura distribuita) ....
La maggior parte delle volte vorrai scrivere questi sistemi indipendentemente da Node.js. Lo scopo di un'architettura distribuita è:
[1] Quando costruisci sistemi ad alte prestazioni non ne hai bisogno per essere associato a Node.js o al motore V8 poiché funziona sotto v8 e node.js richiede conoscenze aggiuntive ed è molto più difficile eseguire il debug come complichi ulteriormente il livello.
L'ultima parte potrebbe essere un po 'fuori portata ma la lascerò per ora.
Leggi altre domande sui tag javascript server-side