![image-ru-00-18](https://cdn.codegym.cc/images/article/39735482-af27-4449-93ad-88b9649329bc/original.gif)
"Ciao, Amigo. Sono il professor Leonardo Neurone. Sono a capo del comitato scientifico della Freccia Galattica. Coordino anche il nostro progetto per insegnarti a programmare in Java."
"Ciao, professor Neurone."
"Voglio spiegarti perché Java è un linguaggio di programmazione molto interessante."
"Sentirai spesso ripetere che il vantaggio peculiare di Java è la sua indipendenza dalla piattaforma. Mi chiederai: che significa e perché è un vantaggio? Prenderò il discorso alla larga."
"Un computer può eseguire solo i comandi numerici più semplici. Quando addestriamo un cane, usiamo comandi come 'Al passo', 'Zampa', ecc. per far fare al cane quello che vogliamo."
"Per i computer, i comandi sono espressi con numeri. Ogni comando è rappresentato da un certo numero o codice (detto anche codice macchina)."
"Ma scrivere un programma usando solo numeri è davvero difficile, quindi sono stati inventati i linguaggi di programmazione e i compilatori. Un linguaggio di programmazione può essere capito sia dagli esseri umani che dai compilatori. Un compilatore è uno speciale programma che converte un programma scritto in un linguaggio di programmazione in una serie di codici macchina."
"Un programmatore di solito scrive un programma in un linguaggio di programmazione e usa quindi un compilatore per trasformare i file contenenti il codice del programma che ha scritto in un unico file con il codice macchina: il programma finale (compilato)."
- Programma in C++
-
Compilatore
- Codice macchina
"Il programma risultante può essere eseguito dal computer immediatamente. Il problema è che il codice del programma finale dipende strettamente dal processore e dal sistema operativo. Ad esempio, un programma compilato per Windows non funziona su uno smartphone Android."
"Quindi, se scrivo un programma e lo compilo per Android, non funziona su Windows?"
"Esatto."
"Capisco."
"Java adotta invece un approccio molto più innovativo."
- Programma in Java
-
Compilatore Java
- Codice speciale indipendente dalla piattaforma (bytecode)
-
JVM
- Codice macchina
"Un compilatore Java non compila tutte le classi in un unico programma in codice macchina, ma compila ogni classe a sé e, soprattutto, non in codice macchina, ma in uno speciale codice intermedio (bytecode). Il bytecode viene compilato in codice macchina quando si avvia il programma."
"Quindi, quando si avvia il programma, chi lo compila in codice macchina?"
"C'è un programma speciale chiamato Java Virtual Machine (JVM), che devi avviare prima di eseguire un programma bytecode. La JVM compila il bytecode in codice macchina prima di eseguire il programma."
"Interessante. E a che serve tutto questo?"
"Si tratta di un approccio molto potente e una delle ragioni del grande successo di Java."
"In questo modo i programmi scritti in Java possono essere eseguiti praticamente su qualsiasi dispositivo: computer, smartphone, bancomat, tostapane e persino carte di credito!"
"Forte!"
"Questo approccio presenta molti vantaggi. Per questo, anche tutti i programmi Android sono scritti in Java. Con la rapida crescita dell'industria della telefonia mobile, Java domina ora lo sviluppo di applicazioni in queste aree:
1) Sistemi aziendali: applicazioni fortemente basate su server per banche, società, fondi di investimento, ecc.
2) Sistemi mobili: sviluppo su dispositivi mobili (smartphone, tablet), grazie ad Android.
3) Web: PHP è in testa, ma Java ha conquistato una salda quota di mercato.
4) Big Data: elaborazione distribuita in cluster composti da migliaia di server.
5) Dispositivi intelligenti: programmi per domotica, dispositivi elettronici, frigoriferi IoT, ecc."
"Java, poi, non è solo un linguaggio, ma una sorta di ecosistema: milioni di moduli pronti all'uso nei tuoi programmi; migliaia di comunità e forum online dove puoi ottenere aiuto o consigli."
"Più scriverai programmi in Java, più troverai risposte alla domanda 'Perché Java?' È tutto per oggi."
"Grazie, professore. È stato davvero interessante e stimolante."