- Scrivere un semplice sorgente Java con metodo main
- Comprendere il ruolo del JDK, del compilatore javac e del comando java
- Organizzare una cartella di progetto per programmi Java eseguiti da terminale
- Compilare un file .java in bytecode .class da riga di comando
- Eseguire un programma Java dal terminale su diversi sistemi operativi
- Riconoscere e correggere gli errori più comuni del primo programma Java
LABORATORIO
Primo programma HelloWorld
La seguente attività pratica guida nella creazione del file HelloWorld.java, nella compilazione con javac e nell'esecuzione con java, utilizzando esclusivamente il terminale.
1 Preparazione della cartella di lavoro
Prima di scrivere qualsiasi riga di codice, è fondamentale organizzare i file in modo ordinato. Lavoreremo esclusivamente all'interno di una cartella dedicata per evitare confusioni durante le fasi di compilazione ed esecuzione.
Scegli uno dei due metodi seguenti per creare e posizionarti nella cartella di progetto:
Apri il tuo terminale (Prompt dei comandi su Windows, Terminale su macOS/Linux) ed esegui i seguenti comandi per creare la cartella sul Desktop e posizionarti al suo interno:
# Spostati sul Desktop
cd Desktop
# Crea la cartella del progetto
mkdir JavaPrimoProgramma
# Entra nella cartella appena creata
cd JavaPrimoProgramma
Se preferisci procedere manualmente senza terminale:
- Vai sul tuo Desktop (o in un'altra cartella a tua scelta).
- Fai click con il tasto destro, seleziona Nuovo → Cartella e nominala
JavaPrimoProgramma. - Apri il terminale del tuo computer e digita
cd(lasciando uno spazio vuoto dopo cd). - Trascina fisicamente la cartella appena creata dall'interfaccia grafica dentro la finestra del terminale e premi Invio per posizionarti al suo interno.
Ogni volta che aprirai il terminale per compilare o avviare il programma, ricordati che dovrai sempre trovarti all'interno della cartella di progetto (
JavaPrimoProgramma). Se il terminale si trova nel percorso sbagliato, non sarà in grado di vedere il tuo file .java o .class.
2 Scrittura del file HelloWorld.java e anatomia del codice
In Java, ogni riga di codice deve risiedere obbligatoriamente all'interno di un contenitore chiamato Classe. Inoltre, affinché il programma possa essere eseguito, dobbiamo indicare a Java il punto esatto da cui iniziare: questo punto di partenza è il metodo main.
All'interno della cartella di progetto appena creata, creare un nuovo file di testo, nominarlo esattamente HelloWorld.java e inserire il seguente codice sorgente:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Primo programma in Java con JDK 21");
}
}
Anatomia del codice: cosa abbiamo scritto?
-
public class HelloWorld: Definisce la nostra classe. In Java, la regola d'oro e tassativa è che il nome della classe public deve coincidere al 100% con il nome del file fisici (incluso l'uso delle maiuscole). Se la classe si chiamaHelloWorld, il file deve chiamarsiHelloWorld.java. -
public static void main(String[] args): Questa riga rappresenta la "chiave di accensione" (o punto di ingresso) dell'applicazione. Quando si avvia un programma, la JVM cerca un metodo con questo identico nome per iniziare l'esecuzione. Non tutte le classi di un progetto futuro avranno un metodomain, ma ne serve sempre almeno uno per far partire l'intera applicazione. -
System.out.println(...): È il comando standard utilizzato per stampare un messaggio testuale sul terminale, seguito da un rinvio a capo automatico.
- Case Sensitivity: Java distingue rigidamente tra lettere maiuscole e minuscole. Scrivere
helloworldoMain(con lettere invertite) bloccherà la compilazione. - Il punto e virgola: Ogni singola istruzione operativa (come il
System.out.println) deve terminare tassativamente con un punto e virgola;. - Parentesi Graffe: Le parentesi
{ }delimitano i blocchi di codice. Ogni graffa aperta deve sempre essere chiusa correttamente.
La risposta è sì! Se il tuo progetto è composto da molte classi, puoi inserire un metodo
main in più classi diverse. Java non si confonderà: sarai tu, al momento del lancio nel terminale (es. java ClasseA oppure java ClasseB), a scegliere quale "interruttore" premere e quale parte del programma avviare. Approfondiremo questo aspetto nelle prossime lezioni!
3 Compilazione del programma
Una volta salvato il file, dal terminale posizionato nella cartella di progetto eseguire:
javac HelloWorld.java
Se la compilazione va a buon fine, il comando non restituisce messaggi di errore e nella cartella compare un nuovo file:
HelloWorld.class
Questo file contiene il bytecode generato dal compilatore e sarà utilizzato dalla JVM per l'esecuzione.
In caso di errori, verificare:
- La presenza del punto e virgola
;alla fine delle istruzioniSystem.out.println(...). - La corretta apertura e chiusura delle parentesi graffe
{ }. - La corrispondenza tra nome del file (
HelloWorld.java) e nome della classe (HelloWorld).
4 Esecuzione del programma
Per eseguire il programma appena compilato, utilizzare il comando java passando il nome della classe (senza estensione):
java HelloWorld
Nel terminale dovrebbe comparire:
Primo programma in Java con JDK 21
Questo conferma che il flusso scrittura → compilazione → esecuzione è stato completato correttamente.
Quiz di Verifica dei Fondamenti
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Il JDK 21 fornisce gli strumenti
javacejavaper compilare ed eseguire programmi Java. - Il primo programma utilizza una classe
HelloWorldcon il metodopublic static void main(String[] args). - Il file sorgente
.javaviene compilato in un file.classcontenente bytecode. - Il comando
java HelloWorldavvia la JVM e stampa il messaggio sul terminale. - Il flusso scrittura → compilazione → esecuzione è identico su Windows, macOS e Linux.
- A creare una cartella di progetto dedicata al primo programma Java.
- A scrivere un semplice sorgente Java con metodo
maine istruzioneSystem.out.println. - A compilare il file
HelloWorld.javainHelloWorld.classutilizzandojavac. - A eseguire il programma con
java HelloWorlddal terminale. - A riconoscere e correggere gli errori più frequenti nella fase di compilazione ed esecuzione.
- A collegare il concetto di sorgente, bytecode e JVM in un flusso operativo completo.