Capitolo 1
Introduzione a Java
Perché imparare a programmare in Java? Cosa lo contraddistingue?
Eccoci arrivati a Java.
Solitamente tutti lo presentano così:
“Java non è da confondere con Javascript (il cugino bonaccione, che vien dalla campagna), sono due linguaggi diversi.”
Personalmente, iniziare dicendoti cosa "non sia" , mi sembra una pessima presentazione!
Potrei invece iniziare dicendo che:
- Java è il linguaggio di programmazione più popolare al mondo. Attenzione: popolare significa che è il più diffuso in generale (dalla didattica allo svago, al lavoro).
- È anche il più usato nel mondo del lavoro, infatti è in prima posizione come linguaggio di programmazione più richiesto nel settore informatico.
- Viene usato praticamente ovunque: sviluppo web, mobile, software, ecc (dopo torneremo su questo punto).
- Ha una comunità di sviluppatori enorme. Questo si traduce in tante risorse di qualità sia gratuite che a pagamento: guide, corsi, tutorial, manuali e così via.
Beh direi che come presentazione può bastare, anche se mi sarei potuto fermare al punto due, ovvero all'aspetto economico.
Forse il vantaggio più grande di Java è proprio il fatto di essere il più richiesto nel lavoro.
Ma come è arrivato a questo traguardo, nonostante ci siano tanti altri linguaggi? In cosa si distingue Java? Cos’ha lui in più di me?! Cioè volevo dire, cos’ha lui in più degli altri linguaggi?
Cerchiamo di capire quali sono le caratteristiche di questo linguaggio tanto richiesto.
Innanzitutto va detto che Java è un linguaggio molto “versatile”, perché è pensato per affrontare qualsiasi scopo.
Mi spiego meglio:
Immagina un linguaggio che ha l’unico scopo di essere usato per creare programmi per computer (software), e in particolare per Windows.
Non potrà mai essere usato per creare software per Mac dato che non è predisposto per farlo, e tanto meno potrà essere usato per creare applicazioni per smartphone.
Quindi, è un linguaggio limitato ad un solo ambito.
Invece per Java è l’esatto opposto, è stato pensato per poter essere usato un po’ ovunque, senza queste limitazioni.
Probabilmente starai pensando:
“Certo ottima idea! Avere un linguaggio che possa essere eseguito in qualsiasi sistema, geniale!”
Il problema è che realizzare un'idea simile non è così semplice.
Java dispone di uno “strumento” particolare, un intermediario che si occupa di convertire il codice Java (quello scritto da noi) in un codice che la macchina (il computer) possa eseguire.
In questo modo possiamo scrivere il nostro codice Java una sola volta, ed eseguire lo stesso codice su qualsiasi sistema (Windows, Mac, Linux, sul web o sullo smartphone).
Questo strumento magico prende il nome di Java Virtual Machine, in breve JVM.
Si, lo so, tutti questi nomi sembrano dei mostri spaventosi a prima vista, ma se tradotto in italiano si trasformerà in un piccolo coniglietto paffuto:
macchina (o computer) virtuale di Java.
Sembra molto più semplice, no?
Immagina questo:
Abbiamo il nostro codice Java sul sistema operativo X (per esempio Windows). Non facciamo eseguire il nostro codice direttamente dal sistema operativo perché vogliamo che il linguaggio funzioni ovunque, che sia indipendente dalla piattaforma su cui è eseguito. Quindi facciamo eseguire il nostro codice da un computer virtuale, un programmino (la Java Virtual Machine) che si occupa di eseguire il nostro codice, indipendentemente dal sistema in cui si trova.
Questa è la vera forza del linguaggio Java, ciò che gli ha permesso di restare in vita per tanti anni!
Bene, adesso facciamo un piccolo viaggio nel tempo. Torniamo al 1992: avevo appena due anni e Java vedeva la luce con la sua prima riga di codice alla Stanford University.
L’idea di base era semplice:
Creare un linguaggio che fosse più facile da usare di C++.
Di che? C++?
Mamma mia, che confusione! Java, Javascript, C++, un sacco di nomi da ricordare!
Ma andiamo con calma, ce la puoi fare.
Hai mai sentito parlare di C?
C può essere considerato come il linguaggio che ha posto le fondamenta per tutti i successivi linguaggi. I suoi più grandi “difetti” (se cosi si possono definire) sono due:
- Primo problema: Usa un approccio alla programmazione considerato obsoleto (chiamato imperativo o procedurale).
- Secondo problema: Il codice è molto “simile” al modo di pensare del computer (linguaggio macchina). Questo rende la programmazione più complessa rispetto ai linguaggi che, invece, sono più “lontani” dalla macchina e più vicini al nostro modo di pensare.
Il fatto che sia così “simile” al linguaggio macchina offre enormi vantaggi in termini di prestazioni: esecuzione del codice veloce e poche risorse utilizzate (RAM, CPU). Tuttora rimane uno dei linguaggi più veloci e potenti.
Il secondo punto quindi non rappresenta un reale problema, mai il primo, al contrario, lo è eccome!
C è stato ideato nel 1972 e da allora la programmazione si è evoluta, si è arrivati ad un nuovo modo di organizzare il codice:
La Programmazione a Oggetti (OOP-Object Oriented Programming)!
La sentirai nominare molto spesso, ad oggi è considerato uno standard.
Tutti i programmatori nati dopo il 1970 dovrebbero saper programmare ad oggetti.
Se è la prima volta che lo senti nominare non ti preoccupare. C’è sempre tempo per imparare e io sono qui per questo.
Questa famosa “programmazione ad oggetti” non è altro che una filosofia!
Lo so, sembra strano ma è così.
È un nuovo modo di pensare e organizzare il codice che rende tutto più semplice da mantenere e gestire, aiutando a diminuire gli errori.
Una vera forza!
Il problema è che C non lo supporta!
Per risolvere il problema numero 1 del C vennero creati altri linguaggi, molto simili, MA con una grande differenza: il supporto alla programmazine ad oggetti.
I risultati furono C++ e Objective-C. (La parola “objective” non sembra più cosi strana, indica semplicemente un C che supporta gli Oggetti.)
Quindi, il primo problema venne risolto grazie a C++ e Objective-C, ma anche questi nuovi linguaggi presentavano comunque il secondo problema, ovvero la complessità!
Ora possiamo capire meglio la domanda iniziale:
In cosa si distingue Java?
Abbiamo detto che C++ è un evoluzione del C, che resta "simile" al linguaggio macchina, e per questo è ancora complesso da usare.
E si sa ... quando qualcosa è complicato, c’è sempre qualcuno che la vuole semplificare!
Per semplificare C++, è stato creato Java.
Quindi abbiamo capito qualcosa in più di Java:
- È un linguaggio versatile: può essere usato in qualsiasi ambito.
- È indipendente dal sistema operativo: viene eseguito da una macchina virtuale, chiamata Java Virtual Machine.
- Nasce per essere più semplice di C++.
- Non solo supporta la cosiddetta “programmazione ad oggetti”, ma la rende una delle sue caratteristiche principali.