Introduzione alla Programmazione Java
Scopri cos'è Java, come JVM e JDK si integrano e il ruolo di Java nello sviluppo software moderno.
Java è un linguaggio di programmazione general-purpose, a tipizzazione statica e orientato agli oggetti, progettato per la portabilità. I programmi vengono compilati in bytecode che viene eseguito sulla Java Virtual Machine (JVM), quindi lo stesso file .class può essere eseguito su Windows, macOS, Linux o qualsiasi altro sistema che abbia installata una JVM compatibile. Quella portabilità — racchiusa nel celebre slogan originale "write once, run anywhere" — è ancora oggi la caratteristica distintiva del linguaggio.
Questo capitolo introduce il linguaggio, la piattaforma e le parti dell'ecosistema Java che incontrerai nel resto del libro.
Cos'è Java
Java è stato rilasciato da Sun Microsystems nel 1995 ed è ora gestito da Oracle. Trae la sua sintassi da C e C++, ma sostituisce la gestione manuale della memoria con un garbage collector automatico, e omette funzionalità (come l'aritmetica dei puntatori e l'ereditarietà multipla delle classi) che causano frequentemente bug nei linguaggi di livello inferiore. Il risultato è un linguaggio veloce da imparare, difficile da mandare in crash e adatto ad applicazioni longeve mantenute da grandi team.
Caratteristiche principali che noterai lavorando con questo libro:
- Tipizzazione statica. Ogni variabile ha un tipo noto al momento della compilazione, quindi il compilatore rileva molti errori prima ancora che il programma venga eseguito.
- Orientato agli oggetti. Il codice è organizzato attorno a classi che raggruppano dati e i metodi che operano su di essi.
- Portabile. Il sorgente viene compilato in bytecode indipendente dalla piattaforma, eseguito da qualsiasi JVM.
- Gestione della memoria. Il garbage collector recupera gli oggetti a cui non si fa più riferimento.
- Multi-thread. Thread, lock e moderne utilità di concorrenza fanno parte della libreria standard.
- Compatibile con le versioni precedenti. I programmi scritti per versioni precedenti di Java funzionano quasi sempre senza modifiche sulle versioni più recenti.
Dove viene usato Java
Poiché la JVM gira su quasi ogni server e piattaforma desktop, Java si è diffuso in praticamente ogni settore dello sviluppo software:
- Applicazioni lato server — la maggior parte dei backend di grandi aziende e-commerce, bancarie ed enterprise usa Java (spesso con Spring, Jakarta EE o Quarkus).
- App Android — la libreria standard di Android è in gran parte un'API Java, anche quando le app sono scritte in Kotlin.
- Big data e streaming — Hadoop, Spark, Kafka, Flink ed Elasticsearch sono scritti sulla JVM.
- Tooling e sistemi di build — Maven, Gradle, Jenkins e molti strumenti CI girano su Java.
- Embedded e IoT — smart card, terminali point-of-sale e controllori industriali.
JDK, JRE e JVM
I tre acronimi confondono i principianti più di qualsiasi altra cosa in Java. Ecco la spiegazione:
- JVM (Java Virtual Machine) — il runtime che carica il bytecode e lo esegue. Ogni sistema operativo include la propria JVM nativa.
- JRE (Java Runtime Environment) — la JVM fornita insieme alle librerie di classi principali necessarie per eseguire un programma Java. È il minimo necessario per eseguire codice Java.
- JDK (Java Development Kit) — il JRE più gli strumenti necessari per compilare e fare il debug del codice Java:
javac(compilatore),jshell(REPL),javadoc(documentazione) e altri.
Per scrivere Java si installa il JDK; il JRE è incluso al suo interno, quindi non è necessario installarli separatamente. Il JDK di Oracle è solo una delle opzioni — OpenJDK è l'implementazione di riferimento gratuita e open-source, e distribuzioni come Eclipse Temurin, Amazon Corretto e Azul Zulu pacchettizzano lo stesso OpenJDK con il proprio supporto a lungo termine. Tutte funzioneranno con il codice di questo libro; scegline una e vai avanti.
Questa configurazione verrà eseguita passo dopo passo in Java Install e Java Environment Setup.
Un primo sguardo a un programma Java
Scriverai un Hello World completo in Java Hello World Program. Per ora, ecco come appare un programma Java minimale — lo stesso codice, compilato ed eseguito sul server:
Alcune cose da notare senza preoccuparsi di ogni dettaglio per ora:
- Ogni programma risiede all'interno di una classe (qui,
Hello). - L'esecuzione parte da un metodo chiamato
maincon la firmapublic static void main(String[] args). - Le istruzioni terminano con il punto e virgola, e i blocchi sono racchiusi tra parentesi graffe
{ ... }. System.out.printlnscrive una riga sull'output standard.
Versioni di Java e cadenza dei rilasci
Da Java 9 (2017), una nuova versione principale viene rilasciata ogni sei mesi, con una release Long-Term Support (LTS) ogni due anni. Le versioni LTS correnti che incontrerai più probabilmente al lavoro sono Java 17 e Java 21. Questo libro è scritto per Java 21 e fa riferimento alle versioni precedenti solo quando la differenza è rilevante.
Cosa copre questo libro
I capitoli che seguono ti guidano da una nuova installazione del JDK attraverso il linguaggio moderno: le basi della sintassi, il controllo del flusso, la programmazione orientata agli oggetti, il framework delle collezioni, le eccezioni, i generics, le lambda e gli stream, I/O, la concorrenza, JDBC, i moduli e le funzionalità più recenti come record, tipi sealed, pattern matching e virtual thread. La barra laterale raggruppa i capitoli in 28 parti — leggili in ordine per un percorso guidato, oppure vai direttamente a ciò di cui hai bisogno.