JVM nedir?
JVM, Java Kodunu veya uygulamalarını yürütmek için çalışma ortamı sağlayan bir motordur. Java bayt kodunu makine diline dönüştürür. JVM, JRE’nin (Java Çalıştırma Ortamı) bir parçasıdır. Java Sanal Makinesi anlamına gelir
Diğer programlama dillerinde, derleyici belirli bir sistem için makine kodu üretir. Ancak, Java derleyici Java Sanal Makine olarak bilinen bir Sanal Makine için kod üretir.
İlk olarak, Java kodu bayt koduyla uyumludur. Bu bayt kodu farklı makinelerde yorumlanır
Ana bilgisayar sistemi ve Java kaynağı arasında Bytecode aracı bir dildir.
JVM, bellek alanını ayırmaktan sorumludur.
JVM Mimarisi
JVM mimarisini anlayalım. Bu class loader, bellek alanı, yürütme motoru vb içerir.
1 )ClassLoader (Sınıf Yükleyicisi)
Class loader, class dosyalarını yüklemek için kullanılan bir alt sistemdir. Üç ana işlevi yerine getirir. Yükleme, Bağlama ve Başlatma.
2) Method Area (Yöntem Alanı)
JVM Yöntem Alanı, meta veriler, sabit çalışma zamanı havuzu ve yöntem kodu gibi sınıf yapılarını depolar.
3) Heap (Yığın)
Tüm Nesneler, ilgili örnek değişkenleri ve diziler yığın içinde saklanır. Bu bellek yaygındır ve birden çok iş parçacığı arasında paylaşılır.
4) JVM language Stacks (JVM dil Yığınları)
Java dili Yığınları yerel değişkenleri depolar ve bunun kısmi sonuçlarıdır. Her iş parçacığı, iş parçacığı oluşturulurken aynı anda oluşturulmuş kendi JVM yığınına sahiptir. Bir yöntem çağrıldığında yeni bir çerçeve oluşturulur ve yöntem çağırma işlemi tamamlandığında silinir.
5) PC Registers ( PC Kayıtları )
PC kaydı, şu anda çalıştırmakta olan Java sanal makine talimatının adresini saklar. Java’da, her bir iş parçacığının ayrı bir PC kaydı vardır.
6) Native Method Stacks (Yerli Yöntem Yığınları)
Yerel yöntem yığınları, yerel kodun talimatını yerel kitaplığa bağlı tutar. Java yerine başka bir dilde yazılmıştır.
7) Execution Engine (İcra Motoru)
Donanım, yazılım veya komple sistemleri test etmek için kullanılan bir yazılım türüdür. Test yürütme motoru, test edilen ürünle ilgili hiçbir bilgiyi taşımamaktadır.
8) Native Method interface (Yerel Yöntem arayüzü)
Yerel Yöntem Arabirimi bir programlama çerçevesidir. Bir JVM’de çalıştırılan Java kodunun kütüphaneler ve yerel uygulamalar tarafından çağırılmasına izin verir.
9) Native Method Libraries (Yerel Yöntem Kütüphaneleri)
Yerel Kütüphaneler, Yürütme Motoru’nun ihtiyaç duyduğu Yerli Kitaplıkların (C, C ++) bir koleksiyonudur.
Yazılım Kodu Derleme ve Uygulama Süreci
Bir yazılım programını yazmak ve yürütmek için aşağıdakilere ihtiyacınız vardır.
1) Editor – Programınızı yazmak için, bunun için bir not defteri kullanılabilir.
2) Compiler – Yüksek dil programınızı yerel makine koduna dönüştürür.
3) Linker – Ana programınızda farklı program dosyalarını referans olarak birleştirir.
4) Loader – Dosyaları ikincil depolama aygıtınızdan Sabit Disk, Flash Sürücü, CD gibi bir CD’ye yürütmek için RAM’e yükler. Kodunuzu çalıştırdığınızda yükleme otomatik olarak yapılır.
5) Execution – İşletim sisteminin ve işlemcisi tarafından işlenen kodun fiilen yürütür.
Java Neden Hem Yorumlanmış ve Derlenmiş Dildir?
Programlama dilleri
Yüksek Seviye Dil Ex. C ++, Java
Orta Seviye Diller Ör. C
Düşük Seviyeli Dil Ex Meclisi
Son olarak Makine Dili (en düşük seviye) olarak sıralanabilir.
Derleyici, bir programı bir dilden diğerine dönüştüren bir programdır. Örn: C ++ programının makine koduna dönüştürülmesi.
Java derleyici, yüksek düzeyli java kodunu bayt koduna dönüştürür (aynı zamanda bir makine kodu türüdür).
Yorumlayıcı, bir programı bir seviyede başka bir programlama diline aynı seviyede dönüştüren bir programdır. Örn: Java programının C ++’ya dönüştürülmesi
Java’da, Just In Time Code jeneratörü bayt kodunu, aynı programlama seviyelerinde bulunan yerel makine koduna dönüştürür.
Bu nedenle, Java hem yorumlanmış dil hem de derlenmiştir.
Java neden yavaş?
Java’nın yavaş olmasının iki temel sebebi:
Dinamik Bağlama: C’den farklı olarak, bağlantı her defasında program Java’da çalıştırıldığında çalışma zamanında yapılır.
Çalışma Zamanı Yorumlayıcısı: Bayt kodunun yerel makine koduna dönüştürülmesi, Java’daki çalışma zamanında yapılır;
Bununla birlikte, Java’nın en yeni sürümü performans darboğazlarına büyük ölçüde hitap etmiştir.
Özet:
JVM veya Java Virtual Machine, Java Kodunu çalıştıran motordur. Java bayt kodunu makine diline dönüştürür.
JVM’de, Java kodu bytecode olarak derlenmiştir. Bu bayt kodu farklı makinelerde yorumlanır
JIT veya Just-in-time derleyici, Java Sanal Makinesi’nin (JVM) bir parçasıdır. Yürütme süresini hızlandırmak için kullanılır
Diğer derleyici makinelere kıyasla, Java yürütme sırasında yavaş olabilir.
[…] Java Virtual Machine (JVM)’e Giriş […]