De JVM kan de code die u schrijft niet rechtstreeks uitvoeren. Het weet alleen hoe programma's die in bytecode zijn geschreven, moeten worden uitgevoerd. Bytecode is een taal op laag niveau die dicht bij machinecode ligt.

Voor Java is compilatie de vertaling van een (hoog niveau) programma geschreven in Java naar hetzelfde programma geschreven in bytecode.

Uw code wordt in een .java-bestand doorgegeven aan de compiler. Vindt de compiler geen fouten in de code, dan krijg je een nieuw bytecode-bestand terug. Dit bestand heeft dezelfde naam maar een andere extensie: .class . Als er fouten in de code zitten, zal de compiler u vertellen "het programma is niet gecompileerd". Vervolgens moet u elke foutmelding lezen en de fouten herstellen.

U gebruikt de opdracht javac om de compiler aan te roepen, die deel uitmaakt van de JDK (Java Development Kit). Dat betekent dat als je alleen de JRE (Java Runtime Environment) installeert, je de compiler niet hebt! Je hebt alleen de JVM, die alleen bytecode kan uitvoeren. Dus we installeren de JDK en geven ons .java- bestand door aan de compiler.

Laten we bijvoorbeeld een eenvoudig programma nemen met wat console-uitvoer:

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

Laten we deze code opslaan in het bestand D:/temp/MySolution.java .

Laten we onze code compileren met behulp van de opdracht

D:\temp>javac MySolution.java

Als er geen compilatiefouten in de code staan, verschijnt er een MySolution.class- bestand in de tijdelijke map. Bovendien gaat het MySolution.java- bestand met uw code nergens heen. Het blijft precies waar het was. Maar nu bevat MySolution.class bytecode en is klaar om rechtstreeks door de JVM te worden uitgevoerd.

Ons voorbeeld is zo eenvoudig mogelijk, maar zelfs de grootste en meest complexe projecten gebruiken de opdracht javac . Het is dus erg handig voor u om te weten hoe het werkt.

U kunt meer dan één klasse tegelijkertijd samenstellen. Stel dat er een ander bestand Cat.java in de map temp staat :

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

of dit:

D:\temp>javac *.java

Eenmaal gecompileerd, kunnen de .class- bestanden worden verpakt in een jar- bestand, dat gemakkelijk naar verschillende computers kan worden verplaatst en er vervolgens op kan worden uitgevoerd. Hier is een voorbeeld van het maken van een jar -bestand:

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

waar:

  • jar is de opdracht voor het maken van .jar- bestanden, opgenomen in de JDK

  • cvfe zijn opdrachtregelopties met de volgende betekenis:

    • c – maak een nieuw jar- bestand aan

    • v – uitgebreide informatie weergeven

    • f – geeft aan dat we willen dat de uitvoer van de tool in een bestand wordt geplaatst ( myjar.jar )

    • e – geeft het ingangspunt aan ( MySolution ), dwz de klasse die de hoofdmethode bevat

  • MySolution.java Cat.class – door spaties gescheiden namen van de bestanden die in het jar- bestand worden ingepakt .

Hier is hoe we het resulterende jar -bestand uitvoeren:

D:\temp>java -jar myjar.jar
Voor meer gedetailleerde informatie:
De javac- en jar- tools hebben ingebouwde hulp. Voer het volgende uit op de opdrachtregel om het weer te geven:
  • java --help
  • kruik --help