Ana içeriğe geç

JVM

Java Virtual Machine

Türkçe karşılığı
Java sanal makinesi
Okunuşu
cey vi em

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 1 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/jvm

Kısaca

JVM, Java bytecode'unu çalıştırır; böylece derlenmiş bir program her işletim sisteminde çalışır. Kotlin, Scala ve Clojure da bu bytecode'a derlenir.

JVM nedir?

Java kaynak kodu belirli bir işlemci için derlenmez. javac derleyicisi onu .class dosyalarında saklanan ve JAR dosyalarında paketlenen bytecode'a çevirir; JVM de bu bytecode'u kurulu olduğu her makinede çalıştırır. Java'nın eski sloganı, bir kez yaz, her yerde çalıştır, bu fikre dayanır: program Windows'ta, macOS'ta ve Linux'ta aynıdır, yalnızca JVM farklıdır.

JVM bytecode okumaktan çok daha fazlasını yapar. Sınıfları gerektikçe yükler, bytecode'u güvenlik için denetler, belleği bir garbage collector ile yönetir ve en sık çalışan kodu just-in-time (JIT) derleyiciyle doğrudan makine koduna çevirir; uzun süre çalışan Java sunucularının ısındıktan sonra hızlanmasının nedeni budur. En yaygın gerçekleştirim olan HotSpot, çoğu Java dağıtımının arkasındaki açık kaynak proje OpenJDK ile birlikte gelir.

JVM, Java'nın kendisini değil bytecode'u çalıştırdığı için başka diller de onu hedef alır: Kotlin, Scala, Clojure ve Groovy aynı bytecode'a derlenir ve herhangi bir Java kütüphanesini kullanabilir. Geliştirme yapmak için derleyiciyi ve JVM'i içeren bir JDK (Java Development Kit) kurarsınız. JVM'in spesifikasyonu herkese açıktır; bu yüzden birçok sağlayıcı kendi dağıtımını sunar.

Önemli noktalar

  • JVM, Java bytecode'unu çalıştırır; derlenmiş bir program her işletim sisteminde çalışır.
  • Belleği bir garbage collector ile yönetir ve sık çalışan kodu bir JIT derleyiciyle hızlandırır.
  • Kotlin, Scala, Clojure ve Groovy de JVM bytecode'una derlenir.
  • JDK, derleyiciyi ve JVM'i içerir; olağan JVM, OpenJDK'nın HotSpot'udur.

Örnek

Kaynak koddan bytecode'a, oradan JVM'ebash
# Hello.java: public class Hello { public static void main(String[] a) { System.out.println("Hi"); } }
javac Hello.java   # compile to bytecode: Hello.class
java Hello         # the JVM loads Hello.class and runs it
# Hi
javap -c Hello     # print the bytecode instructions the JVM executes

Sık sorulan sorular

JDK, JRE ve JVM arasındaki fark nedir?

JVM, bytecode'u çalıştıran motordur. JRE, JVM'e standart kütüphaneyi eklerdi; programları çalıştırmaya yetiyordu. JDK ise bunlara javac derleyicisi gibi geliştirme araçlarını ekler. Java 11'den beri Oracle ayrı bir JRE sunmuyor; bir JDK kurarsınız.

JVM, VirtualBox ile aynı türden bir sanal makine mi?

Hayır. Sistem sanal makinesi, bir işletim sistemini çalıştırabilmek için koca bir bilgisayarı taklit eder. JVM ise bir süreç sanal makinesidir: tek bir uygulamanın bytecode'unu çalıştıran sıradan bir programdır.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar