A JVM nem tudja közvetlenül futtatni az Ön által írt kódot. Csak a bájtkóddal írt programokat tudja végrehajtani. A bájtkód egy alacsony szintű nyelv, amely közel áll a gépi kódhoz.

Java esetében a fordítás egy Java nyelven írt (magas szintű) program fordítása ugyanarra a bájtkóddal írt programra.

A kód egy .java fájlban kerül átadásra a fordítónak. Ha a fordító nem talál hibát a kódban, akkor egy új bájtkódfájlt kap vissza. Ennek a fájlnak ugyanaz lesz a neve, de más a kiterjesztése: .class . Ha hibák vannak a kódban, akkor a fordító azt fogja mondani, hogy "a program nem fordította le". Ezután minden hibaüzenetet el kell olvasnia, és ki kell javítania a hibákat.

A javac paranccsal hívhatja meg a fordítót, amely a JDK (Java Development Kit) része. Ez azt jelenti, hogy ha csak a JRE-t (Java Runtime Environment) telepíti, akkor nem lesz fordítója! Csak a JVM lesz, amely csak bájtkódot tud futtatni. Tehát telepítjük a JDK-t, és átadjuk a .java fájlunkat a fordítónak.

Például vegyünk egy egyszerű programot konzolkimenettel:


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

Mentsük el ezt a kódot a D:/temp/MySolution.java fájlba .

Fordítsuk le a kódunkat a paranccsal


D:\temp>javac MySolution.java

Ha nincs fordítási hiba a kódban, egy MySolution.class fájl jelenik meg a temp mappában. Ráadásul a kódját tartalmazó MySolution.java fájl nem megy sehova. Ugyanott marad, ahol volt. De most a MySolution.class bájtkódot tartalmaz, és készen áll a JVM általi közvetlen futtatásra.

Példánk a lehető legegyszerűbb, de még a legnagyobb és legösszetettebb projektek is használják a javac parancsot. Tehát nagyon hasznos lesz, ha megtudja, hogyan működik.

Egyszerre több osztályt is összeállíthat. Tegyük fel például, hogy van egy másik Cat.java fájl a temp mappában:


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

vagy ez:


D:\temp>javac *.java

A .class fájlok összeállítás után egy jar fájlba csomagolhatók , amely kényelmesen áthelyezhető különböző számítógépekre, majd futtatható rajtuk. Íme egy példa a jar fájl létrehozására :


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

ahol:

  • A jar a .jar fájlok létrehozására szolgáló parancs , amely a JDK-ban található

  • A cvfe parancssori opciók a következő jelentéssel:

    • c – új jar fájl létrehozása

    • v – részletes információk megjelenítése

    • f – azt jelzi, hogy szeretnénk, ha az eszköz kimenete egy fájlba ( myjar.jar ) kerülne.

    • e – a belépési pontot ( MySolution ), vagyis azt az osztályt jelöli, amely a metódust tartalmazza

  • MySolution.java Cat.class – a jar fájlba csomagolt fájlok szóközzel elválasztott nevei .

Így futtatjuk az eredményül kapott jar fájlt:


D:\temp>java -jar myjar.jar
Részletesebb információkért:
A javac és jar eszközök beépített súgóval rendelkeznek. Megjelenítéséhez futtassa a következőt a parancssorban:
  • javac --help
  • jar -- segítség