JVM-ul nu poate rula direct codul pe care îl scrieți. Știe doar să execute programe scrise în bytecode. Bytecode este un limbaj de nivel scăzut care este aproape de codul mașinii.

Pentru Java, compilarea este traducerea unui program (de nivel înalt) scris în Java în același program scris în bytecode.

Codul dvs. este transmis compilatorului într-un fișier .java. Dacă compilatorul nu găsește nicio eroare în cod, atunci veți primi înapoi un nou fișier bytecode. Acest fișier va avea același nume, dar o extensie diferită: .class . Dacă există erori în cod, atunci compilatorul vă va spune „programul nu a fost compilat”. Apoi, trebuie să citiți fiecare mesaj de eroare și să remediați erorile.

Utilizați comanda javac pentru a invoca compilatorul, care face parte din JDK (Java Development Kit). Asta înseamnă că dacă instalați doar JRE (Java Runtime Environment), atunci nu veți avea compilatorul! Veți avea doar JVM, care poate rula doar bytecode. Deci instalăm JDK-ul și transmitem fișierul nostru .java compilatorului.

De exemplu, să luăm un program simplu cu o ieșire de consolă:


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

Să salvăm acest cod în fișierul D:/temp/MySolution.java .

Să compilam codul nostru folosind comanda


D:\temp>javac MySolution.java

Dacă nu există erori de compilare în cod, un fișier MySolution.class va apărea în folderul temp . În plus, fișierul MySolution.java care conține codul dvs. nu merge nicăieri. Rămâne exact unde a fost. Dar acum MySolution.class conține bytecode și este gata să fie rulat direct de JVM.

Exemplul nostru este cât se poate de simplu, dar chiar și cele mai mari și mai complexe proiecte folosesc comanda javac . Așa că îți va fi foarte util să știi cum funcționează.

Puteți compila mai multe clase simultan. De exemplu, să presupunem că există un alt fișier Cat.java în folderul temp :


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

sau asta:


D:\temp>javac *.java

Odată compilate, fișierele .class pot fi împachetate într-un fișier jar , care poate fi mutat în mod convenabil pe diferite computere și apoi rulat pe ele. Iată un exemplu despre cum să creați un fișier jar :


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

Unde:

  • jar este comanda pentru crearea fișierelor .jar , incluse în JDK

  • cvfe sunt opțiuni de linie de comandă cu următoarele semnificații:

    • c – creați un fișier jar nou

    • v – afișați informații detaliate

    • f – indică faptul că dorim ca rezultatul instrumentului să fie pus într-un fișier ( myjar.jar )

    • e – indică punctul de intrare ( MySolution ), adică clasa care conține metoda principală

  • MySolution.java Cat.class – nume separate prin spațiu ale fișierelor care vor fi împachetate în fișierul jar .

Iată cum rulăm fișierul jar rezultat :


D:\temp>java -jar myjar.jar
Pentru informații mai detaliate:
Instrumentele javac și jar au ajutor încorporat. Pentru a-l afișa, rulați următoarele pe linia de comandă:
  • javac --ajutor
  • borcan --ajutor