JVM, yazdığınız kodu doğrudan çalıştıramaz. Yalnızca bayt kodunda yazılmış programların nasıl yürütüleceğini bilir. Bayt kodu, makine koduna yakın düşük seviyeli bir dildir.

Java için derleme, Java'da yazılmış (yüksek düzeyli) bir programın bayt kodunda yazılmış aynı programa çevirisidir.

Kodunuz bir .java dosyasında derleyiciye iletilir. Derleyici kodda hata bulamazsa, yeni bir bayt kodu dosyası alırsınız. Bu dosya aynı ada ancak farklı bir uzantıya sahip olacaktır: .class . Kodda hatalar varsa, derleyici size "program derlenmedi" diyecektir. Ardından, her bir hata mesajını okumanız ve hataları düzeltmeniz gerekir.

JDK'nın (Java Development Kit) bir parçası olan derleyiciyi çağırmak için javac komutunu kullanırsınız. Bu, yalnızca JRE'yi (Java Runtime Environment) yüklerseniz derleyiciye sahip olmayacağınız anlamına gelir! Yalnızca bayt kodunu çalıştırabilen JVM'ye sahip olacaksınız. Böylece JDK'yı kurup .java dosyamızı derleyiciye iletiyoruz.

Örneğin, konsol çıktısı olan basit bir programı ele alalım:


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

Bu kodu D:/temp/MySolution.java dosyasına kaydedelim .

komutu ile kodumuzu derleyelim.


D:\temp>javac MySolution.java

Kodda derleme hatası yoksa geçici klasörde bir MySolution.class dosyası görünecektir . Ayrıca, kodunuzu içeren MySolution.java dosyası hiçbir yere gitmez. Olduğu yerde duruyor. Ama şimdi MySolution.class bayt kodu içeriyor ve doğrudan JVM tarafından çalıştırılmaya hazır.

Örneğimiz olabildiğince basit ama en büyük ve en karmaşık projeler bile javac komutunu kullanıyor. Bu yüzden nasıl çalıştığını bilmek sizin için çok faydalı olacaktır.

Aynı anda birden fazla sınıf derleyebilirsiniz. Örneğin, temp klasöründe başka bir Cat.java dosyası olduğunu varsayalım :


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

veya bu:


D:\temp>javac *.java

Derlendikten sonra, .class dosyaları , farklı bilgisayarlara kolayca taşınabilen ve daha sonra bu bilgisayarlarda çalıştırılabilen bir jar dosyasında paketlenebilir . İşte bir jar dosyasının nasıl oluşturulacağına dair bir örnek:


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

Neresi:

  • jar , JDK'da bulunan .jar dosyalarını oluşturmaya yarayan komuttur.

  • cvfe , aşağıdaki anlamlara sahip komut satırı seçenekleridir:

    • c - yeni bir jar dosyası oluşturun

    • v – ayrıntılı bilgileri göster

    • f – aracın çıktısının bir dosyaya ( myjar.jar ) yerleştirilmesini istediğimizi belirtir

    • e – giriş noktasını ( MySolution ), yani ana yöntemi içeren sınıfı gösterir

  • MySolution.java Cat.class – jar dosyasına paketlenecek dosyaların boşlukla ayrılmış adları .

Ortaya çıkan jar dosyasını şu şekilde çalıştırıyoruz :


D:\temp>java -jar myjar.jar
Daha detaylı bilgi için:
Javac ve jar araçları yerleşik yardıma sahiptir . Görüntülemek için komut satırında aşağıdakini çalıştırın:
  • javac -- yardım
  • kavanoz -- yardım