JVM kan inte direkt köra koden du skriver. Den vet bara hur man kör program skrivna i bytecode. Bytecode är ett lågnivåspråk som ligger nära maskinkod.

För Java är kompilering översättningen av ett (högnivå) program skrivet i Java till samma program skrivet i bytecode.

Din kod skickas i en .java-fil till kompilatorn. Om kompilatorn inte hittar några fel i koden får du tillbaka en ny bytekodfil. Den här filen kommer att ha samma namn men ett annat tillägg: .class . Om det finns fel i koden kommer kompilatorn att säga till dig "programmet kompilerade inte". Sedan måste du läsa varje felmeddelande och åtgärda felen.

Du använder kommandot javac för att anropa kompilatorn, som är en del av JDK (Java Development Kit). Det betyder att om du bara installerar JRE (Java Runtime Environment), kommer du inte att ha kompilatorn! Du kommer bara att ha JVM, som bara kan köra bytecode. Så vi installerar JDK och skickar vår .java- fil till kompilatorn.

Låt oss till exempel ta ett enkelt program med lite konsolutgång:

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

Låt oss spara den här koden i filen D:/temp/MySolution.java .

Låt oss kompilera vår kod med kommandot

D:\temp>javac MySolution.java

Om det inte finns några kompileringsfel i koden kommer en MySolution.class -fil att dyka upp i temp -mappen. Vad mer är, MySolution.java- filen som innehåller din kod kommer inte någonstans. Den ligger kvar precis där den var. Men nu innehåller MySolution.class bytecode och är redo att köras direkt av JVM.

Vårt exempel är så enkelt som möjligt, men även de största och mest komplexa projekten använder javac- kommandot. Så det kommer att vara mycket användbart för dig att veta hur det fungerar.

Du kan sammanställa mer än en klass åt gången. Anta till exempel att det finns en annan fil Cat.java i temp- mappen:

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

eller det här:

D:\temp>javac *.java

När de väl har kompilerats kan .class -filerna paketeras i en jar- fil, som bekvämt kan flyttas till olika datorer och sedan köras på dem. Här är ett exempel på hur man skapar en jar -fil:

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

var:

  • jar är kommandot för att skapa .jar- filer, inkluderat i JDK

  • cvfe är kommandoradsalternativ med följande betydelser:

    • c – skapa en ny jar- fil

    • v – visa utförlig information

    • f – indikerar att vi vill att verktygets utdata ska läggas in i en fil ( myjar.jar )

    • e – anger ingångspunkten ( MySolution ) , dvs klassen som innehåller huvudmetoden

  • MySolution.java Cat.class – mellanrumsseparerade namn på filerna som kommer att packas i jar -filen.

Så här kör vi den resulterande jar -filen:

D:\temp>java -jar myjar.jar
För mer detaljerad information:
Java- och jarverktygen har inbyggd hjälp . För att visa det, kör följande på kommandoraden:
  • javac --hjälp
  • burk --hjälp