← Java ve JVM
Java ve JVM Notları
Java neden platform bağımsız? Bytecode, JVM, javac ile JIT farkı, HotSpot ve diğer JVM implementasyonları.
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
.javauzantılı dosyalara yazdığımız kod derlendiğinde(javac).classuzantı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.

İ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
Mutable ve Immutable Nesneler
Immutable nesnelerin özellikleri, ne zaman tercih edilmeli, avantaj ve dezavantajları örneklerle.
Java: Pass by Value ve Defensive Copy
Java gerçekten pass-by-value mı? Referansların kopyalanması ve defensive copy ile nesne bütünlüğünü koruma.
JVM Bellek Alanları
Heap, metaspace, stack, PC register: hangi veri nerede durur, thread-safety ile ilişkisi nedir?