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.
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.
| Terim | Nedir | Ne zaman gereklidir |
|---|---|---|
| JVM | Bytecode'u çalıştıran motor | Her zaman, herhangi bir Java programını çalıştırmak için |
| JRE | JVM artı standart kütüphaneler | Java programlarını çalıştırmak için |
| JDK | JRE 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
Hayır, Java dilidir; derlenmiş çıktıyı çalıştıran şey JVM'dir. Kotlin gibi diğer diller de bytecode'a derlenir ve aynı JVM üzerinde çalışır.
Java çalışma zamanına ihtiyacınız var; bu, JVM'yi içerir. Birçok başlatıcı sizin için bir tane paketler, bu yüzden ayrı olarak bir şey yüklemeden zaten sahip olabilirsiniz.
JVM bytecode'u çalıştırır. JDK ise, derleyici ve araçlar dahil olmak üzere, Java programlarını ilk etapta oluşturmak için kullandığınız eksiksiz geliştirici kitidir.
Öncelikle bytecode'u yorumlar, ardından JIT derleyicisi program çalıştığı sırada en çok kullanılan koda yerel makine koduyla dönüştürür. Bu ısınma süreci başlangıç maliyetidir; hızlanma ise sonrasında gerçekleşir.