JVM kan ikke kjøre koden du skriver direkte. Den vet bare hvordan den skal kjøre programmer skrevet i bytekode. Bytekode er et språk på lavt nivå som er nær maskinkode.

For Java er kompilering oversettelsen av et (høyt nivå) program skrevet i Java til det samme programmet skrevet i bytecode.

Koden din sendes i en .java-fil til kompilatoren. Hvis kompilatoren ikke finner noen feil i koden, får du tilbake en ny bytekodefil. Denne filen vil ha samme navn, men en annen filtype: .class . Hvis det er feil i koden, vil kompilatoren fortelle deg "programmet kompilerte ikke". Deretter må du lese hver feilmelding og fikse feilene.

Du bruker javac-kommandoen til å starte kompilatoren, som er en del av JDK (Java Development Kit). Det betyr at hvis du bare installerer JRE (Java Runtime Environment), vil du ikke ha kompilatoren! Du vil bare ha JVM, som bare kan kjøre bytekode. Så vi installerer JDK og sender .java- filen vår til kompilatoren.

La oss for eksempel ta et enkelt program med noe konsollutgang:


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

La oss lagre denne koden i filen D:/temp/MySolution.java .

La oss kompilere koden vår ved å bruke kommandoen


D:\temp>javac MySolution.java

Hvis det ikke er noen kompileringsfeil i koden, vil en MySolution.class- fil vises i temp- mappen. Dessuten går MySolution.java- filen som inneholder koden din ingen steder. Den forblir akkurat der den var. Men nå inneholder MySolution.class bytekode og er klar til å kjøres direkte av JVM.

Vårt eksempel er så enkelt som mulig, men selv de største og mest komplekse prosjektene bruker javac- kommandoen. Så det vil være veldig nyttig for deg å vite hvordan det fungerer.

Du kan sette sammen mer enn én klasse om gangen. Anta for eksempel at det er en annen fil Cat.java i temp- mappen:


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

eller dette:


D:\temp>javac *.java

Når de er kompilert, kan .class- filene pakkes i en jar- fil, som enkelt kan flyttes til forskjellige datamaskiner og deretter kjøres på dem. Her er et eksempel på hvordan du lager en jar- fil:


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

hvor:

  • jar er kommandoen for å lage .jar- filer, inkludert i JDK

  • cvfe er kommandolinjealternativer med følgende betydninger:

    • c – opprett en ny jar- fil

    • v – vise detaljert informasjon

    • f – indikerer at vi vil at verktøyets utdata skal legges inn i en fil ( myjar.jar )

    • e – indikerer inngangspunktet ( MySolution ) , dvs. klassen som inneholder hovedmetoden

  • MySolution.java Cat.class – mellomromseparerte navn på filene som skal pakkes inn i jar- filen.

Slik kjører vi den resulterende jar -filen:


D:\temp>java -jar myjar.jar
For mer detaljert informasjon:
Java- og jar- verktøyene har innebygd hjelp. For å vise den, kjør følgende på kommandolinjen:
  • javac --hjelp
  • krukke --hjelp