Una panoramica sul linguaggio

JavaScript è un linguaggio di scripting orientato agli oggetti comunemente usato nei siti web ma anche cone linguaggio di estensione per software.

Originariamente sviluppato da Brendan Eich della Netscape Communications con il nome di Mocha, fu successivamente chiamato LiveScript ed in seguito rinominato JavaScript quando la sua sintassi fu formalizzata su una linea molto vicina a quella del linguaggio Java di Sun Microsystems.

JavaScript è stato standardizzato per la prima volta tra il 1997 e il 1999 dalla ECMA con il nome ECMAScript. L’ultimo standard, del dicembre 1999, è ECMA-262 Edition 3, e corrisponde a JavaScript 1.5. È anche uno standard ISO.

Java, JavaScript, e JScript

Il cambio di nome da LiveScript a JavaScript si ebbe più o meno nel periodo in cui Netscape stava includendo il supporto per la tecnologia Java nel suo browser Netscape Navigator.

La scelta del nome si rivelò fonte di grande confusione: non c’è una vera relazione tra Java e JavaScript; le loro somiglianze sono soprattutto nella sintassi (derivata in entrambi i casi dal linguaggio C); le loro semantiche sono piuttosto diverse, e in particolare i loro object model non hanno relazione e sono ampiamente incompatibili.

Dato il successo di JavaScript come linguaggio per arricchire le pagine web, Microsoft sviluppò un linguaggio compatibile, conosciuto come JScript.

La necessità di specifiche comuni fu alla base dello standard ECMA 262 per ECMAScript, di cui sono state pubblicate tre edizioni da quando il lavoro iniziò, nel novembre 1996.

Aspetti strutturali

La caratteristica principale di JavaScript è quella di essere un linguaggio interpretato. Il codice quindi non viene compilato bensì c’è un interprete (in JavaScript lato client esso è incluso nel browser che si sta utilizzando) che esegue riga per riga, a tempo di esecuzione (a runtime), quanto trascritto nello script.

JavaScript presenta quindi tutte le caratteristiche di un normale linguaggio interpretato, ereditandone i vantaggi e gli svantaggi, con una sintassi analoga a quella di un linguaggio compilato (essa è relativamente simile a quella del C, del C++ e del Java), quindi con la possibilità di utilizzare funzionalità tipiche dei linguaggi di programmazione ad alto livello (strutture di controllo, cicli, etc.) e con in più anche la potenzialità di definire strutture più complesse, vicine a quelle adottate nei normali linguaggi object oriented (creazione di prototipi, istanziazione di oggetti, costruttori).

Un’altra caratteristica importante di JavaScript consiste nel suo essere un linguaggio debolmente tipizzato; quindi il tipo delle variabili può non essere assegnato in fase di dichiarazione e le variabili stesse vengono convertite in maniera automatica dall’interprete.

Inoltre JavaScript è un linguaggio debolmente orientato agli oggetti. Ad esempio, il meccanismo dell’ereditarietà è più simile a quello del Self e del NewtonScript che a quello del linguaggio Java (che è un linguaggio fortemente orientato agli oggetti).

Gli oggetti stessi ricordano più gli array associativi del Perl che gli oggetti di Java o del C++.

Altri aspetti di interesse: in JavaScript lato client il codice JavaScript viene eseguito sul client, quindi il server non viene sollecitato. Ciò risulta essere un vantaggio in quanto con la presenza di script particolarmente complessi il server non verrebbe sovraccaricato. Di contro, nel caso di script che presentino una considerevole mole di dati, il tempo per lo scaricamento potrebbe diventare troppo lungo.

Inoltre, lavorando solamente sul client, ogni informazione che presuppone un accesso a dati stoccati in un database deve essere rimandata ad un linguaggio che effettua esplicitamente la transazione per poi restituire i risultati ad una o più variabili JavaScript; operazioni del genere richiedono il caricamento della pagina stessa. Con l’avvento di AJAX tutti questi limiti sono stati superati.