Learn · concepts

JVM Nedir? Java Sanal Makinesi Açıklaması

JVM, Java bytecode'unu herhangi bir işletim sisteminde çalıştırır. Minecraft Java Edition ve her Fabric modunun Windows, macOS ve Linux'ta aynı şekilde çalışmasının nedeni budur.

TRtrolPublished 3 min read

JVM Nedir?

JVM, yani Java Sanal Makinesi, Java kodunu çalıştıran programdır. Siz Java ile kod yazarsınız, bir derleyici bunu bytecode'a dönüştürür ve JVM, bu bytecode'ı herhangi bir işletim sisteminde çalıştırır. Minecraft Java Edition ve onun için oluşturulan modların, Windows, macOS ve Linux üzerinde yeniden derlenmeden aynı şekilde davranmasının nedeni de JVM'dir. "Bir kez yaz, her yerde çalıştır" ifadesini bir pazarlama sloganı olmaktan çıkarıp gerçek bir şeye dönüştüren soyutlama katmanı JVM'dir.

JVM Aslında Ne Yapar

JVM, kaynak kodu değil, bytecode çalıştırır. Bir Java programını derlediğinizde, Windows veya Mac için bir yürütülebilir dosya elde etmezsiniz. Bunun yerine, JVM'nin anladığı kompakt bir komut kümesi olan bytecode'larla dolu sınıf dosyaları elde edersiniz. JVM, bu komutları okur ve makinenizde yürütür.

Ek katman tam olarak budur. Aynı bytecode, bir JVM'nin bulunduğu her yerde çalışır, bu nedenle "bir kez yaz, her yerde çalıştır" Java'nın yaygınlaşmasının kısa versiyonudur. JVM, bu vaadi gerçeğe dönüştüren parçadır. Fabric modlarının bir jar dosyası, oyuncu Windows, macOS veya Linux'ta olsa bile aynı bytecode'u aynı JVM aracılığıyla çalıştırdığı için aynı şekilde çalışır ve JVM donanım farklılıklarını ele alır.

JVM, JRE ve JDK

Bu üç terim sık sık karıştırılır, bu nedenle işte ayrım.

TerimNedirNe zaman gereklidir
JVMBytecode'u çalıştıran motorHer zaman, herhangi bir Java programını çalıştırmak için
JREJVM artı standart kütüphanelerJava programlarını çalıştırmak için
JDKJRE artı derleyici ve geliştirme araçlarıJava programları oluşturmak için

Bir oyuncunun oyunu başlatmak için yalnızca bir çalışma zamanına ihtiyacı vardır. Bir mod oluşturmak için bir geliştiricinin, Java'yı ilk etapta bytecode'a derleyebilmesi için tam JDK'ye ihtiyacı vardır.

JVM Kodunuzu Nasıl Hızlı Çalıştırır

JVM, bytecode'u birer birer yorumlayarak başlar. Çalışırken, hangi metotların en çok çağrıldığını gözlemler. Bu sık kullanılan yollar, anında yerel makine koduna çeviren JIT derleyicisine verilir. Isınma aşamasından sonra, en yoğun kullanılan kod neredeyse yerel hızlarda çalışır. İşte Minecraft'ın ilk birkaç saniye takılmasının ve ardından oturmasının nedeni: JIT arka planda çalışıyordur.

JVM ayrıca belleği sizin için yönetir. Bir çöp toplayıcı, artık kullanmadığınız nesneleri geri kazanır, böylece C'de olduğu gibi belleği elle boşaltmanız gerekmez. Java'nın yazımı kolay olmasının ve mod yapımcıları için yaygın ilk dil olmasının nedenlerinden biri budur. Bellek yönetimi yerleşiktir.

Minecraft için neden önemli

Minecraft Java Sürümü JVM üzerinde çalışır ve ona hedeflenen her yardımcı program istemcisi ve mod da çalışır. Bir istemcinin kendi kodu Java, Kotlin veya başka bir JVM dili olabilir, çünkü hepsi JVM'nin çalıştırdığı aynı bytecode'a derlenir. Bir Fabric modu, bytecode'dan oluşan bir jar dosyası olarak gönderilir, yükleyici oyuna başlatmada bağlanır ve JVM tümünü tek bir işlem olarak çalıştırır.

Bu, başlatıcıların yığın boyutu ve kullanılacak Java sürümü gibi şeyleri ayarlamanıza izin vermesinin de nedenidir. Oyunu değil, oyunu barındıran JVM'i yapılandırıyorsunuz. JVM'e daha fazla bellek vermek, Minecraft'ın çalışabileceği daha fazla alana sahip olması anlamına gelir. Daha yeni bir Java sürümü seçmek, daha yeni JVM'ler sıklıkla sıcak kod yollarını daha iyi optimize ettiğinden hız iyileştirmeleri sağlayabilir.

SSS