JVM platform bağımsız değildir. Program derlenirken JVM iki şey yapar.
1-) İlk olarak özel bir bilgisayar için byte code dan makinenin anlayacağı dile dönüştürülür.
2-) İkinci olarak ise makine kodu komutlarını çalıştırır.
Farklı işletim sistemleri farklı JVM lere sahiptir. JVM işletim sistemine bağımlı olduğundan makine koduda işletim sistemine bağımlıdır. Farklı işletim sistemlerinde farklı JVM lerin bulunması JVM nin platform bağımlı olduğunun kanıtıdır.
Java, Platform bağımsızdır. JVM, Platform bağımlıdır.
JVM de iki adet thread vardır. Daemon ve Non Daemon thread. daemon thread garbage collector işleten threaddir. non daemon ise main fonksiyonunun çalıştığı threaddir.
Java application başlayınca JVM de runtime instance doğar. Uygulama tamamlanınca instance ölür.
Aynı PC de Aynı kod aynı anda 3 ayrı Java app başlatırsa 3 tane instance oluşur. Her java uygulaması kendi Java sanal makinesinde çalışır.