La JVM non può eseguire direttamente il codice che scrivi. Sa solo come eseguire programmi scritti in bytecode. Il bytecode è un linguaggio di basso livello vicino al codice macchina.

Per Java, la compilazione è la traduzione di un programma (di alto livello) scritto in Java nello stesso programma scritto in bytecode.

Il tuo codice viene passato in un file .java al compilatore. Se il compilatore non trova errori nel codice, viene restituito un nuovo file bytecode. Questo file avrà lo stesso nome ma un'estensione diversa: .class . Se ci sono errori nel codice, il compilatore ti dirà "il programma non è stato compilato". Quindi è necessario leggere ogni messaggio di errore e correggere gli errori.

Si utilizza il comando javac per richiamare il compilatore, che fa parte del JDK (Java Development Kit). Ciò significa che se installi solo JRE (Java Runtime Environment), non avrai il compilatore! Avrai solo la JVM, che può eseguire solo bytecode. Quindi installiamo il JDK e passiamo il nostro file .java al compilatore.

Ad esempio, prendiamo un semplice programma con un output della console:


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

Salviamo questo codice nel file D:/temp/MySolution.java .

Compiliamo il nostro codice usando il comando


D:\temp>javac MySolution.java

Se non sono presenti errori di compilazione nel codice, nella cartella temp verrà visualizzato un file MySolution.class . Inoltre, il file MySolution.java contenente il tuo codice non va da nessuna parte. Rimane dov'era. Ma ora MySolution.class contiene bytecode ed è pronto per essere eseguito direttamente dalla JVM.

Il nostro esempio è il più semplice possibile, ma anche i progetti più grandi e complessi utilizzano il comando javac . Quindi ti sarà molto utile sapere come funziona.

Puoi compilare più di una classe alla volta. Ad esempio, supponiamo che ci sia un altro file Cat.java nella cartella temp :


D:\temp>javac MySolution.java Cat.java

o questo:


D:\temp>javac *.java

Una volta compilati, i file .class possono essere impacchettati in un file jar , che può essere opportunamente spostato su diversi computer e quindi eseguito su di essi. Ecco un esempio di come creare un file jar :


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

Dove:

  • jar è il comando per la creazione di file .jar , incluso nel JDK

  • cvfe sono opzioni della riga di comando con i seguenti significati:

    • c – crea un nuovo file jar

    • v – visualizza informazioni dettagliate

    • f - indica che vogliamo che l'output dello strumento venga inserito in un file ( myjar.jar )

    • e – indica il punto di ingresso ( MySolution ), ovvero la classe che contiene il metodo main

  • MySolution.java Cat.class : nomi separati da spazi dei file che verranno compressi nel file jar .

Ecco come eseguiamo il file jar risultante:


D:\temp>java -jar myjar.jar
Per informazioni più dettagliate:
Gli strumenti javac e jar hanno un aiuto integrato. Per visualizzarlo, eseguire quanto segue sulla riga di comando:
  • javac --aiuto
  • jar --aiuto