İçeriğe atla
← Java ve JVM

· 1 dk okuma

Java ve JVM Notları

Java neden platform bağımsız? Bytecode, JVM, javac ile JIT farkı, HotSpot ve diğer JVM implementasyonları.

#java #jvm #jit

Java Nedir?

  • Java platform bağımsız çalışabilen Object-Oriented bir programlama dilidir.
  • “Write Once Run Anywhere” sloganı ile platform bağımsız özelliği vurgulanır.
  • Kod platform bağımsız yazılır, yani farklı işletim sistemlerinde aynı kod çalışabilir. Ancak onu çalıştıracak olan JVM, platform bağımlıdır. Her işletim sisteminin ayrı bir JVM ’i vardır.

Bytecode ve JVM

  • .java uzantılı dosyalara yazdığımız kod derlendiğinde(javac) .class uzantılı bytecode ’a çevirilir. JVM de çalışan şey bytecode ’dur.
  • JVM Java dilini bilmez, bytecode formatını bilir. Dolayısı ile bu formata uygun bytecode üreten her dil JVM de çalışır. (Kotlin, Scala, Groovy gibi)
  • JVM hem bytecode u yorumlar, hem de gerekli durumlarda (hot ise) JIT ile native makine koduna derler. JVM Mimarisi

İki Ayrı Derleme

2 ayrı derleme vardır;

Derleyici Zaman Dönüşüm
javac build zamanında .java → bytecode
JIT Çalışma zamanında bytecode → native code

javac ’ın doğrudan native code üretmemesi platform bağımsızlığından dolayıdır.


JIT (Just In-Time Compiler)

  • JIT, yani Just In-Time Compiler, çalışma anında bytecode’u native makine koduna çeviren derleyicidir. JVM in içindedir.
  • JVM sık çağrılan metotları tespit eder. Onları her seferinde yorumlamak nispeten daha yavaş (maliyetli) olduğu için JIT ile native makine koduna derlenir. Bu sayede az kullanılan metotlar JVM yorumlaması ile çalışır, sık kullanılanlar ise native kod olarak çalışır.
  • Yorumlayıcı ve JIT ’in birlikte çalışmasına mixed-mode execution denir.
  • 🔥 Uygulama ilk çalıştığında kod henüz derlenmediği için yavaştır. Zamanla hızlanıp sabitlenir. Buna warmup denir.

HotSpot ve Diğer Implementasyonlar

  • HotSpot, Oracle/OpenJDK ’nın JVM implementasyonunun adıdır. İsmi, kodun “sıcak noktalarını” bulup derleme stratejisinden gelir.
  • JVM bir spesifikasyondur. HotSpot ise en yaygın implementasyondur. OpenJ9, GraalVM gibi farklı implementasyonlar da vardır. Mixed-mode execution HotSpot ’a özgü bir özelliktir.

Aynı kategoriden