Da un linguaggio di scripting, JavaScript è diventato in questi ultimi anni la piattaforma di sviluppo più utilizzata al mondo. Oggi, Javascript si reinventa grazie a progetti come Coffeescript, DART, Node.js e jQuery.
Javascript è un linguaggio di scripting molto semplice. È Object-oriented (come Actionscript 2, senza le classi) e basato sulla sintassi ECMAScript, derivata da C. Lo scopo era di creare interazioni web semplici, ma oggi è uno dei linguaggi critici delle piattaforme moderne.
Tutte le applicazioni web (o webapps) utilizzano Javascript. Facebook, Google (con Instant), Twitter o Maps funzionerebbero con molti limiti e sarebbe impossibile senza JavaScript.
La prima rivoluzione è stata con i Just in Time Compilers (JIT compiler) come Tamarin di Adobe. I motori JIT nei browser hanno fatto di JavaScript un linguaggio molto veloce. Chrome ha la V8, Firefox ha JägerMonkey e ogni browser ha un suo compilatore JIT che fa dello JavaScript veloce quanto Java.
Ma la rivoluzione è stata sopratutto nel linguaggio. Quattro tecnologie vogliono cambiare il nostro modo di scrivere Javascript e devi sceglierne uno. Scrivete ancora il codice Javascript nudo senza un framework o compilatore? Siete nel passato!

I fantastici quattro
CoffeeScript
La rivoluzione di Coffeescript è molto interessante. Molto simile al DART, CoffeeScript è un precompilatore Javascript in cui i programmi con una sintassi simile a Python con il software genera il codice JavaScript. A tutti gli effetti è JavaScript puro, ma con una sintassi migliore e una libreria nativa migliore.
Ad esempio, questo è il classico ‘Ciao Mondo’ scritto per CoffeeScript con funzioni, dichiarazione d’oggetto JSON e invocazione:
Copia codice

messaggio =
    parte1: "Ciao "
    parte2: "Mondo"
ciaoMondo = -> alert messaggio.parte1 + messaggio.parte2 + "!"
ciaoMondo()
E questo è l’output compilato in Javascript:
Copia codice
var ciaoMondo, messaggio;
messaggio = {
  parte1: "Ciao ",
  parte2: "Mondo"
};
ciaoMondo = function() {
  return alert(messaggio.parte1 + messaggio.parte2 + "!");
};
ciaoMondo();
È efficiente, robusto e tutto diventa uno JavaScript nativo. Se si preferisce Python o Ruby a Java, allora CoffeeScript è la via. Se siete più tradizionali e preferite lo Java, scommetete su DART.
DART
DART è lo sforzo di Google per creare uno Javascript insieme a Java. I programmi DART con la propria sintassi allo stile Java, e se siete in Chrome, si eseguono in modo nativo. Se siete su un altro browser, DART è in grado di “complirsi” da solo come uno JavaScript normale. Quindi funziona in tutti i browsers.
I vantaggi: DART è un vero linguaggio orientato agli oggetti. Spazi dei nomi, classi, interfacce, ereditarietà, design pattern, tutto ciò che ci si aspetta da un linguaggio robusto e potente con tutte la ingegneria del software applicabile. Ad esempio, ecco un ‘Ciao Mondo’:
Copia codice

class CiaoMondo {
   static testMain() {
      print("Ciao Mondo!");
   }
}
main() {
   CiaoMondo.testMain();
}
Gli svantaggi: Questo ‘Ciao Mondo’ di cinque righe circa di codice diventano 17 mila linee compilandolo per lo JavaScript! Ancora è in sviluppo sia nel linguaggio che nel compilatore (alpha), ma la necessità di precompilare prima di utilizzarlo rende DART, anche se promettente, un’opzione precoce.
Node.js
Node.js ha la capacità di utilizzare JavaScript lato server (server-side), come si usa PHP. È possibile programmare l’intera applicazione con JavaScript. Un altro vantaggio? Condividono gli stessi ambiti di variabili. Si possono condividere i dati JSON tra client e server in modo trasparente, senza le variabili di sessione o cookies. Un altro vantaggio? È a tempo reale. Utilizzando i websockets, l’AJAX pooling, il proxy http e altre tecniche, Node.js crea una connessione per lo scambio di dati in tempo reale con il server.
Fare una chat, ad esempio, è così semplice come scrivere questo sul server:
Copia codice

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
   socket.on('chat', function (data) {
      socket.emit('room', { messaggio: data.messaggio });
   });
});
E questo è lo JavaScript dell’HTML
Copia codice

<script src="/socket.io/socket.io.js"></script>
<script>
   var socket = io.connect('http://localhost');
   socket.on('room', function (data) {
      // codice per inserire un nuovo
      // messaggioin una conversazione
   });
   // codice per inviare come client
   // un messagio alla chat
   socket.emit('chat', { nick: "pippo", messagio: campo.value });
</script>
Svantaggi? È proprio un server, non si attacca ad Apache o simili. È ancora un po’ in fasce, ma ci sono interi framework per sviluppare delle applicazioni web (webapps) come ExpressJS ch’è ciò ch’è Django per Python o PHP.
jQuery, jQuery UI e jQuery Mobile
jQuery è il framework più popolare per eccellenza. jQuery UI è l’estensione di jQuery piena di componenti di interfacce per la creazione di applicazioni browser-based complete. Ma la gente di jQuery ha creato qualcosa di più bello con jQuery Mobile.
Con l’aiuto di Adobe e il suo Roller Theme, jQuery Mobile consente di creare applicazioni web completamente per tutti i tipi di telefoni cellulari e tablet senza HTML. Definisce tutto in JavaScript. Definisce intestazioni, sezioni, pulsanti, cursori, disegni, colori, schermi, effetti. Tutto. jQuery Mobile si occupa di convertire tutto in qualcosa di visivo, carino, veloce e funzionante su tutti i telefoni moderni e meno moderni.
E se aggiungiamo PhoneGap (che ora è di Adobe o Adobe AIR), possiamo con lo stesso codice creare una applicazione multipiattaforma nativa per iPhone, iPad o Android.
La fine dell'incompatibilità
La magia dietro le cose come Coffeescript, DART, jQuery, e Node.js è che sono al 100% retrocompatibili con tutti i browser, e anche sui più vecchi. Sono finiti i giorni in cui uno script non funzionava con IE o in qualche altra cosa strana non funzionava con Firefox o Chrome. Ora, scrivi il codice una sola volta e avranno lo stesso aspetto su tutti i browsers.
Salvo, naturalmente, se scrivi il codice in JavaScript puro. Questo è molto stimolante, ma improduttivo. I frameworks rendono la vita facile; i grandi li usano e perché non usarli noi?