Frontend

Cos'è JavaScript?

Autore

Manuel Ricci

JavaScript è un linguaggio di programmazione sviluppato da Brendan Eich di Netscape Communications nel 1995. Questo linguaggio ha avuto diversi nomi nel corso della sua storia: inizialmente noto come "Mochan", poi ribattezzato "LiveScript", e infine rinominato "JavaScript", un nome che fa eco a Java, un altro linguaggio di programmazione sviluppato da James Gosling. Nonostante i nomi simili, Java e JavaScript sono due linguaggi completamente diversi, con Java che è più orientato alle applicazioni enterprise e JavaScript che si è affermato come linguaggio per lo scripting web.

Una delle caratteristiche più notevoli nella storia iniziale di JavaScript è il suo rapido sviluppo: Brendan Eich ha creato il linguaggio in soli 10 giorni. Questa rapidità di sviluppo era un'esigenza del momento, poiché Netscape stava cercando di integrare rapidamente uno strumento di scripting nel suo browser per competere meglio nel mercato in rapida espansione dei browser web.

La necessità di uno standard per JavaScript è diventata evidente man mano che il linguaggio guadagnava popolarità. Netscape ha dunque spinto per la sua standardizzazione, che è stata realizzata nel 1997 sotto il nome di ECMAScript. L'adozione dello standard ECMAScript ha aiutato a stabilizzare il linguaggio e a garantire una maggiore coerenza tra i diversi browser e ambienti di esecuzione.

Dopo un inizio incerto, con diverse sfide legate alla compatibilità tra i browser e alle preoccupazioni sulla sicurezza, JavaScript ha cominciato a guadagnare un'ampia adozione e popolarità. Oggi, JavaScript è riconosciuto come uno dei linguaggi di programmazione più utilizzati al mondo. La sua flessibilità e la sua capacità di essere utilizzato sia sul lato client (nel browser) che sul lato server (principalmente tramite Node.js) lo hanno reso fondamentale per lo sviluppo moderno del web. La sua evoluzione continua, con aggiornamenti regolari allo standard ECMAScript, assicura che rimanga rilevante e potente per gli sviluppatori di tutto il mondo.

Come si installa JavaScript

Effettivamente, JavaScript non richiede un'installazione tradizionale come altri linguaggi di programmazione. La capacità di eseguire JavaScript è incorporata nei browser moderni attraverso un componente chiamato "JavaScript Interpreter". Questo significa che per eseguire codice JavaScript, tutto ciò che serve è un browser web. Ecco come funziona:

  1. Scrivere Codice JavaScript: Puoi scrivere codice JavaScript direttamente in un file HTML utilizzando il tag <script>, o in un file JavaScript separato (.js) che viene poi collegato a un file HTML.

  2. Esecuzione del Codice: Quando apri il file HTML con il tuo browser, il codice JavaScript al suo interno viene automaticamente interpretato ed eseguito dal browser.

1
2<!DOCTYPE html>
3
4<html>
5
6<head>
7
8    <title>Esempio JavaScript</title>
9
10</head>
11
12<body>
13
14    <h1>Ciao Mondo!</h1>
15
16    <script>
17
18        alert('Questo è un esempio di JavaScript in azione!');
19
20    </script>
21
22</body>
23
24</html>

In questo esempio, quando apri il file HTML nel tuo browser, verrà visualizzato un messaggio di alert con il testo "Questo è un esempio di JavaScript in azione!".

In tutto ciò:

  • Nessuna Installazione Necessaria: Non devi installare JavaScript; i browser lo supportano nativamente.

  • Sviluppo Facilitato: Per iniziare a usare JavaScript, ti basta un editor di testo (come Notepad o Visual Studio Code) e un browser.

In sintesi, l'uso di JavaScript è incredibilmente accessibile perché tutto ciò che serve per iniziare è un browser e un editor di testo. Questa è una delle ragioni per cui JavaScript è così popolare e ampiamente adottato nel mondo dello sviluppo web.

JavaScript come linguaggio client-side

Iniziamo con la base: nel contesto dello sviluppo web, esistono due ambiti principali di esecuzione: client-side e server-side. Il client-side, letteralmente "lato cliente", si riferisce a tutto ciò che viene eseguito sul computer o sul dispositivo dell'utente finale. In questo ambito, JavaScript gioca un ruolo fondamentale.

Perché JavaScript è classificato come client-side?

  1. Esecuzione nel browser: Quando visiti una pagina web, il tuo browser (che può essere Chrome, Firefox, Edge, Safari, ecc.) riceve il codice HTML, CSS e JavaScript dalla rete. Mentre HTML e CSS sono utilizzati per strutturare e stilizzare il contenuto della pagina, JavaScript è responsabile per renderla interattiva. Il tuo browser legge e interpreta il codice JavaScript, eseguendolo direttamente sul tuo dispositivo. Questo processo avviene localmente, senza richiedere interazioni costanti con il server.

  2. Manipolazione del DOM: Una delle funzioni principali di JavaScript nel contesto client-side è la manipolazione del Document Object Model (DOM). Il DOM è essenzialmente una rappresentazione strutturata della pagina web, che può essere modificata in tempo reale. JavaScript può cambiare elementi, rispondere a eventi dell'utente (come clic o inserimenti di testo), e aggiornare dinamicamente il contenuto visualizzato.

  3. Interattività e risposta immediata: Senza JavaScript, le pagine web sarebbero statiche, limitate a visualizzare contenuti senza la possibilità di interagire attivamente con l'utente. JavaScript permette di creare elementi interattivi come moduli, animazioni, giochi, e di reagire a input o azioni dell'utente in tempo reale. Questa risposta immediata è possibile perché il codice viene eseguito direttamente sul dispositivo dell'utente.

Vantaggi e limitazioni

  • Vantaggi: La principale forza di JavaScript lato client è la sua capacità di creare esperienze utente ricche e interattive senza la necessità di ricaricare la pagina o comunicare costantemente con il server. Ciò può portare a un'esperienza utente più fluida e reattiva.

  • Limitazioni: Tuttavia, la natura client-side di JavaScript implica anche alcune limitazioni. Ad esempio, essendo eseguito sul dispositivo dell'utente, è soggetto alle specifiche di quel dispositivo, come la velocità del processore e la memoria disponibile. Inoltre, gli utenti possono disabilitare o limitare l'esecuzione di JavaScript nei loro browser, il che può influenzare la funzionalità di alcune pagine web.

JavaScript come linguaggio server-side

L'espansione di JavaScript al di là del suo tradizionale ruolo client-side ha rivoluzionato il modo in cui lo sviluppo web viene percepito e praticato. Questo cambio di paradigma è stato principalmente guidato dall'introduzione di Node.js.

Node.js e la trasformazione di JavaScript

Node.js è un ambiente di esecuzione per JavaScript al di fuori del browser. Rilasciato nel 2009, ha permesso agli sviluppatori di utilizzare JavaScript per scrivere software lato server.

Con Node, gli sviluppatori possono utilizzare JavaScript, un linguaggio con cui sono già familiari dal lato client, per costruire anche la parte server delle applicazioni web. Questo ha aperto la porta a un ecosistema full-stack uniforme, in cui lo stesso linguaggio viene utilizzato sia sul client che sul server.

Caratteristiche e impieghi di JavaScript server-side

  1. Costruzione di API e backend: JavaScript lato server è ampiamente utilizzato per costruire API (Application Programming Interfaces) RESTful e server HTTP. Node.js, con la sua natura event-driven e non-blocking, è particolarmente adatto per applicazioni che richiedono un'elevata I/O (Input/Output) e scalabilità.

  2. Gestione database: Grazie a diversi driver e ORM (Object-Relational Mapping), JavaScript server-side può interagire con vari tipi di database, sia SQL che NoSQL, consentendo operazioni di lettura, scrittura, aggiornamento e cancellazione dei dati.

  3. Real-Time applications: JavaScript sul server si presta bene per la creazione di applicazioni in tempo reale come chat, giochi online e sistemi di notifica, grazie alla sua capacità di gestire connessioni WebSocket per la comunicazione bidirezionale e in tempo reale tra client e server.

  4. Performance e scalabilità: Node.js sfrutta il motore V8 di Google Chrome per eseguire JavaScript, offrendo performance elevate. La sua architettura non-blocking e orientata agli eventi rende JavaScript server-side ideale per applicazioni che devono scalare per gestire un grande numero di connessioni simultanee.

  5. Ecosistema e comunità: Il popolare gestore di pacchetti npm (Node Package Manager) fornisce accesso a un vasto ecosistema di librerie e moduli, facilitando lo sviluppo di funzionalità complesse senza dover riscrivere codice da zero.

Le versioni di JavaScript

JavaScript, come linguaggio di programmazione, è stato in continua evoluzione fin dalla sua creazione. Una parte fondamentale di questa evoluzione è stata guidata dalle specifiche ECMAScript, che definiscono lo standard del linguaggio.

A partire dal 2015, l'ECMA (European Computer Manufacturers Association), l'organizzazione responsabile per lo standard ECMAScript, ha adottato un ciclo di rilascio annuale per le nuove caratteristiche di JavaScript. Questo approccio ha permesso un flusso più costante e gestibile di aggiornamenti e miglioramenti al linguaggio.

Invece di grandi rilasci, l’ultimo avvenuto con ES6 nel 2015, che rivoluzionano il linguaggio, ogni anno vengono introdotte nuove caratteristiche e miglioramenti. Questo metodo permette agli sviluppatori di adattarsi più facilmente alle novità e aiuta a mantenere la stabilità e la compatibilità nel tempo.

ECMAScript 2015 (ES6): Un aggiornamento rivoluzionario

Come menzionato in precedenza il 2015 ha segnato un punto di svolta per JavaScript con il rilascio di ES6, conosciuto anche come ECMAScript 2015. Questo aggiornamento è stato uno dei più significativi nella storia del linguaggio, introducendo una vasta gamma di nuove funzionalità e cambiamenti che hanno notevolmente ampliato le capacità di JavaScript.

Tra le novità più importanti introdotte con ES6 ci sono le arrow functions, le classi, i moduli, le promise, le nuove strutture di dati come Set e Map, miglioramenti nella manipolazione degli oggetti e delle stringhe, e molto altro. Queste aggiunte hanno reso il linguaggio più potente e flessibile, facilitando la scrittura di codice più pulito e modulare.

ECMAScript oggi

Al momento siamo arrivati a ECMAScript 2023, noto anche come ES14. Questa versione, come i suoi predecessori, continua a introdurre miglioramenti e nuove caratteristiche che riflettono le esigenze correnti degli sviluppatori e le tendenze del settore.

Ogni nuova edizione di ECMAScript tende a includere miglioramenti nelle prestazioni, nuove API, estensioni del linguaggio, e talvolta nuovi paradigmi di programmazione. Le specifiche esatte di ECMAScript 2023 rifletteranno probabilmente queste tendenze, continuando a espandere e affinare il linguaggio.

Per rimanere sempre aggiornati sulle ultime specifiche consiglio di farti un giro sul sito ufficiale di ECMA.

Usare le ultime versioni di JavaScript

Lavorare con il web presenta una serie di sfide uniche, soprattutto quando si tratta di assicurare che le applicazioni e i siti web siano accessibili e funzionanti su una vasta gamma di browser, ognuno con il proprio grado di supporto per le ultime novità in termini di tecnologie e standard web. Questa realtà impone agli sviluppatori di prendere in considerazione la variegata diffusione delle diverse versioni di browser in uso.

I browser si aggiornano a ritmi diversi, e gli utenti non aggiornano sempre i loro browser alle ultime versioni. Questo porta a una situazione in cui le funzionalità più recenti del web possono non essere supportate universalmente.

Anche tra i browser più moderni, ci può essere una variazione nel grado di supporto per le ultime caratteristiche. Alcuni possono implementare nuove specifiche rapidamente, mentre altri possono ritardare o supportarle solo parzialmente.

Per affrontare queste sfide, gli sviluppatori web utilizzano due tecniche principali: il transpiling _e il _polyfilling.

  1. Transpiling:

    • Definizione: Il transpiling è il processo di conversione del codice scritto in una versione più recente di un linguaggio di programmazione (come JavaScript) in una versione equivalente ma più vecchia, che è più ampiamente supportata dai browser.

    • Strumenti Comuni: Strumenti come Babel sono usati per trasformare codice JavaScript moderno (ad esempio, codice scritto in ES6) in una forma che è compatibile con versioni più vecchie di JavaScript (come ES5).

    • Vantaggi: Questo permette agli sviluppatori di sfruttare le nuove funzionalità del linguaggio pur mantenendo la compatibilità con i browser più vecchi.

  2. Polyfilling:

    • Definizione: Il polyfilling è una tecnica utilizzata per implementare funzionalità che un browser potrebbe non supportare nativamente. Un "polyfill" è un pezzo di codice (spesso JavaScript) che fornisce le funzionalità mancanti.

    • Esempi: Ad esempio, se un browser non supporta una particolare API del DOM, un polyfill può essere utilizzato per aggiungere quella funzionalità in modo che il codice possa funzionare come previsto.

    • Importanza: I polyfill sono cruciali per garantire che le pagine web funzionino in modo coerente attraverso vari browser, specialmente quando si sfruttano le ultime novità del web.

Cos’è JavaScript?

Ne abbiamo parlato tantissimo, ma ancora non sappiamo esattamente cos’è JavaScript. La definizione più generica è: JavaScript è un linguaggio di programmazione di alto livello, orientato agli oggetti, multi paradigma.

Vediamo di capirci di più in merito.

Linguaggio di alto livello

Un linguaggio di programmazione di "alto livello" è progettato per essere facilmente comprensibile dall'uomo. Questo significa che la sua sintassi e le sue strutture sono più vicine al linguaggio umano rispetto ai linguaggi di basso livello, che sono più vicini al linguaggio macchina.

La facilità di lettura e comprensione rende JavaScript accessibile per i programmatori, riducendo la complessità nella scrittura del codice e facilitando la risoluzione dei problemi.

Orientato agli Oggetti

JavaScript supporta la programmazione orientata agli oggetti, un paradigma di programmazione basato sull'idea di "oggetti", che possono contenere dati (attributi o proprietà) e codice (funzioni o metodi).

In JavaScript, l'ereditarietà e la condivisione di proprietà/metodi vengono gestite tramite un sistema di prototipi, anche se con ES6 sono state introdotte le classi, che offrono un modo più familiare per definire oggetti e gestire l'ereditarietà, simile ad altri linguaggi OOP.

Multi Paradigma

JavaScript è un linguaggio multi paradigma, il che significa che supporta diversi stili di programmazione: imperativo, orientato agli oggetti e funzionale.

Anche la programmazione funzionale è supportata, la quale si concentra sull'uso di funzioni e sull'evitare cambiamenti di stato e dati mutabili. Caratteristiche come funzioni di prima classe, funzioni di ordine superiore e closure rendono JavaScript adeguato a questo stile.

Infine, permette anche di scrivere codice in stile imperativo (che descrive il "come" fare qualcosa) e dichiarativo (che descrive il "cosa" fare), offrendo una grande flessibilità agli sviluppatori.

Cosa si può sviluppare con JavaScript?

JavaScript è un linguaggio di programmazione estremamente versatile e può essere utilizzato per una varietà di scopi e tipi di applicazioni. Ecco alcuni dei principali usi di JavaScript, utilizzando i riferimenti che hai fornito:

Dinamismo e applicazioni web based

JavaScript è fondamentale per aggiungere interattività alle pagine web. Può manipolare il DOM (Document Object Model), gestire eventi utente, controllare l'animazione, e validare i dati dei moduli, rendendo i siti web più dinamici e reattivi.

Ci sono numerosi framework e librerie basati su JavaScript, come Angular, React e Vue, che sono utilizzati per creare interfacce utente ricche e complesse. Questi strumenti aiutano gli sviluppatori a costruire applicazioni web single-page (SPA) efficienti e interattive, offrendo un'esperienza utente fluida e reattiva simile a quella delle applicazioni desktop.

Applicazioni web su server

JavaScript non è limitato allo sviluppo front-end; grazie a Node.js, un ambiente di esecuzione lato server, è possibile scrivere il backend delle applicazioni web in JavaScript. Questo significa che gli sviluppatori possono utilizzare lo stesso linguaggio sia per il client che per il server, facilitando lo sviluppo full-stack. Node.js è noto per la sua efficienza nelle applicazioni basate su I/O asincrono, rendendolo una scelta popolare per la costruzione di applicazioni web in tempo reale, come chat e giochi online.

Applicazioni native per dispositivi mobili

JavaScript si estende anche allo sviluppo di applicazioni mobili native. Framework come React Native e Ionic permettono agli sviluppatori di creare applicazioni per dispositivi mobili usando JavaScript e tecnologie web (HTML, CSS). Queste applicazioni possono poi essere eseguite su piattaforme iOS e Android, offrendo prestazioni simili a quelle delle app native tradizionali, ma con il vantaggio di un unico codice base per entrambe le piattaforme.

Applicazioni native per desktop

Infine, JavaScript può essere utilizzato per sviluppare applicazioni desktop native attraverso framework come Electron. Electron consente di costruire applicazioni desktop multipiattaforma utilizzando JavaScript, HTML e CSS. Applicazioni popolari come Visual Studio Code, Slack e Discord sono state costruite con Electron, dimostrando le potenzialità di JavaScript nel campo delle applicazioni desktop.

Caricamento...

Diventiamo amici di penna? ✒️

Iscriviti alla newsletter per ricevere una mail ogni paio di settimane con le ultime novità, gli ultimi approfondimenti e gli ultimi corsi gratuiti puubblicati. Ogni tanto potrei scrivere qualcosa di commerciale, ma solo se mi autorizzi, altrimenti non ti disturberò oltre.

Se non ti piace la newsletter ti ricordo la community su Discord, dove puoi chiedere aiuto, fare domande e condividere le tue esperienze (ma soprattutto scambiare due meme con me). Ti aspetto!

Ho in previsione di mandarti una newsletter ogni due settimane e una commerciale quando capita.