Compilazione Java Spiegata: Come Funziona javac, Passaggi di Compilazione e Errori Comuni

Quando inizi a imparare Java, il primo grande ostacolo che incontri è solitamente la “compilazione”. Semplicemente scrivere il codice sorgente (.java) non è sufficiente per eseguire un programma. Devi compilarlo usando il comando javac per generare un file .class prima che possa essere eseguito. In questo articolo, spieghiamo il processo di compilazione Java, l’uso base di javac, la configurazione PATH e come gestire errori comuni, tutto in modo step-by-step che i principianti possono seguire. L’obiettivo è aiutarti a passare con fiducia da “Da dove inizio con la compilazione Java?” a compilare ed eseguire programmi Java senza confusione.

Cos’è la Compilazione Java? | Capire la “Compilazione” per Principianti

In Java, la “compilazione” si riferisce al processo di convertire il codice sorgente scritto dall’uomo (.java) in un formato che la Java Virtual Machine (JVM) può leggere.
L’output di questo processo è un file .class, che è chiamato bytecode.

A differenza di linguaggi come C che sono compilati direttamente in codice macchina nativo, Java converte prima il codice sorgente in bytecode e poi lo esegue sulla JVM.
Grazie a questo meccanismo, lo stesso file .class può essere eseguito su diversi sistemi operativi, permettendo allo stesso programma Java di funzionare su Windows, macOS e Linux.

Un altro punto importante da capire è che compilazione ed esecuzione sono operazioni separate.

  • “javac” → responsabile della compilazione
  • “java” → responsabile dell’esecuzione

Circa il 90% dei principianti ha difficoltà perché questa distinzione non è chiara.
Capire fermamente che questi due comandi hanno ruoli diversi è il primo passo più efficiente.

Requisiti per la Compilazione Java

Per compilare codice Java, devi avere installato il JDK (Java Development Kit).
Il JRE da solo non è sufficiente, perché il compilatore javac è uno strumento per sviluppatori incluso solo nel JDK.

Inizia controllando il seguente:

javac -version

Se questo comando restituisce un numero di versione, tutto è a posto.
Se vedi un messaggio come “command not found”, una delle seguenti è probabilmente vera:

  • Il JDK non è installato
  • Il JDK è installato ma PATH non è impostato
  • Solo il JRE è installato (nessun tool di sviluppo)

In particolare, la configurazione PATH è un ostacolo comune per i principianti.
Se il sistema non può trovare la directory contenente javac (o la directory bin), la compilazione non funzionerà.

Conclusione:
Puoi iniziare a compilare Java solo dopo che sia “installazione JDK” che “verifica PATH” sono state completate correttamente.

Compilare un File Java in Pratica

Qui, creeremo un semplice programma di esempio e lo compileremo usando javac.
Prima, salva il seguente contenuto in un editor di testo.

Sample.java

public class Sample {
    public static void main(String[] args) {
        System.out.println("Hello Java!");
    }
}

Il nome del file deve essere Sample.java, ed è cruciale che il nome della classe public corrisponda al nome del file.
Java non compilerà se questa regola è violata, e questo è un errore classico dei principianti.

Successivamente, esegui il seguente comando nel tuo terminale o prompt dei comandi:

javac Sample.java

Se la compilazione ha successo, un file Sample.class apparirà nella stessa directory.
Questo indica che la compilazione è completata con successo.

A questo punto, ora hai:

  • Sample.java (codice sorgente)
  • Sample.class (bytecode)

Con questa coppia in posto, sei pronto a eseguire un programma Java.

Eseguire un Programma Dopo la Compilazione

Dopo la compilazione, il passo successivo è eseguire il file .class.
Il comando usato qui è java, non javac.

java Sample

Il punto chiave è non includere l’estensione .class.
Se scrivi java Sample.class, si verificherà un errore.
Java è progettato per eseguire programmi specificando il nome della classe.

In sintesi:

RoleCommandTarget
Compilejavac Sample.java.java file
Runjava SampleClass name (no extension)

Una volta che capisci chiaramente i ruoli diversi di javac e java, hai efficacemente superato la fase principiante.

.Se sullo schermo compare “Hello Java!”, il tuo programma è stato eseguito correttamente.
A questo punto, hai compreso il flusso di lavoro minimo richiesto per Java.

Errori comuni e come risolverli

Incontrare errori durante la compilazione di Java è del tutto normale per i principianti.
Qui ci concentriamo sui problemi più frequenti riscontrati da molti utenti.

1) javac: command not found

Nel quasi 100 % dei casi, la causa è una delle seguenti:

  • Il JDK non è installato
  • Il PATH non è configurato correttamente

Soluzione:
Esegui javac -version
→ Se non funziona, reinstalla il JDK e ricontrolla le impostazioni del PATH.

2) La compilazione ha successo ma non viene generato alcun file .class

L’errore più comune è:

Il nome del file non corrisponde al nome della classe pubblica

Esempio:

public class Test {
}

→ Questo genererà un errore di compilazione.

3) Avvisi relativi alla codifica

warning: [options] bootstrap class path not set in conjunction with -source 1.7

Avvisi di questo tipo di solito non sono errori fatali.
Tuttavia, possono indicare opzioni di sorgente obsolete o incongruenze di codifica.
Per evitare problemi, salva sempre i tuoi file in UTF‑8.

Compilare con un IDE

Nello sviluppo Java reale, gli sviluppatori raramente eseguono javac manualmente da riga di comando.
Questo perché gli IDE (Integrated Development Environments) gestiscono la compilazione automaticamente.

Gli IDE seguenti sono particolarmente popolari e pratici:

IDEFeatures
IntelliJ IDEAThe de facto standard for modern Java development, suitable for professional use.
EclipseA long-established IDE widely used in enterprise projects.
VS CodeLightweight; Java Extension Pack provides a complete environment.

Gli IDE compilano automaticamente il tuo codice ogni volta che salvi un file e segnalano immediatamente gli errori.
Ciò elimina molte insidie per i principianti, come errori di battitura nei comandi e configurazioni errate del PATH.

Detto ciò, compilare manualmente con javac almeno una volta è utile per capire come funziona Java internamente.
Una volta compreso il flusso “compila → esegui”, la tua velocità di apprendimento con un IDE aumenterà notevolmente.

Opzioni di base di javac

Il comando javac supporta molte opzioni che controllano il modo in cui avviene la compilazione.
A livello principiante, devi conoscere solo alcune delle più usate.

Ecco tre opzioni rappresentative:

OptionDescriptionExample
-dSpecifies the output directory for class filesjavac -d out Sample.java
-classpathSpecifies external libraries or additional class pathsjavac -classpath lib/* Sample.java
--enable-previewEnables preview language featuresjavac --enable-preview Sample.java

L’opzione -d è particolarmente importante quando si usano i package.
Ad esempio, se utilizzi package com.example;, omettere javac -d produrrà una struttura di directory errata.

Man mano che entri nello sviluppo reale, le opzioni classpath e -d diventano sempre più importanti.
Anche solo riconoscere i loro nomi in anticipo renderà l’apprendimento futuro più fluido.

Riepilogo

Per eseguire un programma Java, devi comprendere il processo a tre fasi: scrivi il codice sorgente → compila → esegui.
Una volta chiariti i ruoli di javac (compilazione) e java (esecuzione), lo scopo della compilazione diventa evidente.

Le due insidie più comuni per i principianti sono:

  • Il JDK non è installato o il PATH non è configurato
  • Il nome del file non corrisponde al nome della classe pubblica

Affrontandole fin dall’inizio, puoi evitare deviazioni inutili nel tuo percorso di apprendimento.
Puoi passare allo sviluppo basato su IDE una volta che ti senti a tuo agio, ma comprendere il meccanismo sottostante migliorerà notevolmente la tua velocità di apprendimento.

Usa questo articolo come punto di partenza e concentrati prima di tutto sul convertire con successo un singolo file .java in un file .class.
Quel momento segna il tuo primo vero traguardo nell’apprendimento di Java.

FAQ: Domande comuni sulla compilazione Java

D1: Qual è la differenza tra javac e java?
R: javac è il comando di compilazione che converte i file .java in file .class.
java è il comando di esecuzione che avvia i file .class sulla JVM.

D2: Perché non viene generato Sample.class?
R: La ragione più comune è una discrepanza tra il nome del file e il nome della public class.
Se la classe è dichiarata public class Sample, il file deve chiamarsi Sample.java.

markdown.Q3: Devo ancora imparare javac se uso un IDE?
A: Gli IDE compilano il codice automaticamente, ma senza comprendere il processo può essere difficile sapere cosa sta succedendo dietro le quinte. Provare il flusso di base una volta rende l’uso dell’IDE molto più semplice.

Q4: Quale JDK dovrei installare?
A: Per i principianti, le versioni LTS di Eclipse Adoptium (Temurin) sono facili da usare.
Se non hai requisiti specifici, Java 17 o 21 sono scelte sicure.

Q5: Ottengo javac: command not found
A: Ciò significa che il JDK non è installato o che il PATH non è configurato.
Per prima cosa, verifica con javac -version.