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?