☕ Java Geliştiricisi İçin Kılavuz: JDK, JRE ve JVM Farkları
Java’nın gücü, üç temel bileşenine dayanır: JDK, JRE ve JVM.
Bu üçlü, “Bir kere yaz, her yerde çalıştır” ilkesinin temelini oluşturur.
Bu rehberde, her bileşenin görevini, farklarını ve hangi durumda hangisinin kurulması gerektiğini öğreneceksiniz.
🧩 JDK, JRE ve JVM Rolleri
| Bileşen | Açıklama | Amacı | Kimin İhtiyacı Var? |
|---|---|---|---|
| JDK | Java Development Kit – Geliştirme araçlarını içerir. | Java uygulaması yazmak, derlemek, çalıştırmak. | Geliştiriciler |
| JRE | Java Runtime Environment – Çalıştırma ortamıdır. | Derlenmiş Java programlarını çalıştırmak. | Son kullanıcılar |
| JVM | Java Virtual Machine – Bytecode’u yorumlar. | Bytecode’u makine koduna çevirip yürütmek. | JRE ile otomatik kurulur |
⚙️ 1. Java Development Kit (JDK)
JDK, Java geliştirme için en kapsamlı pakettir.
İçinde JRE, javac derleyicisi, hata ayıklayıcı (debugger) ve diğer araçlar bulunur.
📦 Platform bağımlı: Her işletim sistemi (Windows, Linux, macOS) için özel sürümleri vardır.
javac -version
Bu komut, JDK kurulumunu doğrular.
💡 Ne zaman kurulur: Kod yazıyor veya Spring Boot gibi framework’lerle çalışıyorsan JDK şarttır.
⚙️ 2. Java Runtime Environment (JRE)
JRE, derlenmiş Java programlarını çalıştırmak için gereken ortamdır. Geliştirme araçları içermez, yalnızca çalışma kütüphaneleri ve JVM’yi barındırır.
📍 Kapsam: JDK’nın alt kümesidir. Yani JDK kurulduğunda JRE de otomatik olarak yüklenir.
💡 Ne zaman kurulur: Yalnızca hazır Java uygulamalarını (örneğin, bir masaüstü yazılımını) çalıştıracaksanız JRE yeterlidir.
⚙️ 3. Java Virtual Machine (JVM)
JVM, Java'nın platform bağımsızlığını sağlayan kalp mekanizmasıdır. Bytecode’u yerel makine koduna çevirerek her ortamda aynı sonucu verir.
🚀 Just-In-Time (JIT) Derleyici JIT, JVM’nin içinde yer alır ve performansı artırır. Sık çalıştırılan kodları çalışma anında makine koduna dönüştürür.
🧹 Garbage Collection (Çöp Toplama) JVM, kullanılmayan nesneleri otomatik olarak temizler. Bu sayede hafıza sızıntılarını önler ve bellek yönetimini optimize eder.
⚡ 4. JVM Performans Ayarları
Bellek yönetimi parametreleriyle JVM’yi hızlandırabilirsiniz.
java -Xms512m -Xmx2048m UygulamaAdi
-Xms: Başlangıç belleği, -Xmx: Maksimum bellek miktarı belirler.
Büyük ölçekli backend uygulamalarda bu değerleri artırmak performansı ciddi oranda iyileştirir.
💡 5. Pratik Kullanım Senaryoları
| Senaryo | Kurulması Gereken |
|---|---|
| Kendi Java uygulamanı geliştiriyorsan | JDK |
| Sadece bir Java programı çalıştıracaksan | JRE |
| Performans optimizasyonu yapıyorsan | JVM parametreleriyle çalış |
🚨 Yaygın Hatalar ve Çözümler
| Hata | Sebep | Çözüm |
|---|---|---|
| Java not found | PATH değişkeni eksik | sudo apt install default-jdk |
| JAVA_HOME is not set | Ortam değişkeni tanımlanmamış | /etc/environment dosyasına ekleyin |
| Version mismatch | JDK ve JVM farklı sürümde | java -version ve javac -version uyumlu olmalı |
| Permission denied | Yetki eksikliği | Komutları sudo ile çalıştırın |
💬 Sıkça Sorulan Sorular (SSS)
-
JDK ve JRE arasındaki fark nedir? | Özellik | JRE | JDK | |----------|-----|-----| | Çalıştırma Ortamı | ✅ | ✅ | | Derleyici / Araçlar | ❌ | ✅ | | Kullanım Alanı | Yazılım çalıştırma | Yazılım geliştirme |
-
JVM neden platform bağımlıdır?
Çünkü bytecode’u çalıştırdığı işletim sistemine özel makine koduna dönüştürür. Her OS için farklı JVM uygulaması bulunur.
- PATH değişkeni neden önemli?
PATH, sistemin java ve javac komutlarını bulduğu yoldur. Aksi halde her komutu tam dizinle çağırmanız gerekir.
🏁 Sonuç
Artık JDK, JRE ve JVM farklarını biliyorsunuz. JDK geliştirme için, JRE çalıştırma için, JVM ise her ikisinin temelinde yer alır. Ek olarak JIT derleyicisinin performansa nasıl katkı sağladığını da öğrendiniz.
☁️ Java projelerinizi Rabisu Bulut sanal sunucularında güvenle çalıştırabilir, optimize JVM ayarlarıyla maksimum performans elde edebilirsiniz. 🚀