JVM nedir?
Java Sanal Makinesi (JVM) , Java Kodunu veya uygulamaları sürmek için çalışma zamanı ortamı sağlayan bir motordur. Java bayt kodunu makine diline dönüştürür. JVM, Java Run Environment'ın (JRE) bir parçasıdır. Diğer programlama dillerinde, derleyici belirli bir sistem için makine kodu üretir. Ancak Java derleyicisi, Java Sanal Makinesi olarak bilinen bir Sanal Makine için kod üretir.
JVM nasıl çalışır?
İlk olarak, Java kodu bayt koduna dahil edilir. Bu bayt kodu farklı makinelerde yorumlanır
Ana bilgisayar sistemi ile Java kaynağı arasında Bytecode bir aracı dildir.
Java'da JVM, bellek alanı tahsis etmekten sorumludur.
Bu JVM eğitiminde şunları öğreneceksiniz:
- JVM Mimarisi
- Yazılım Kod Derleme ve Yürütme süreci
- C kodu Derleme ve Yürütme süreci
- Java kodu Derleme ve Yürütme süreci
- Java neden hem yorumlanır hem de Derlenmiş Dildir?
- Java neden yavaş?
JVM Mimarisi
Şimdi bu JVM eğitiminde, JVM Mimarisini anlayalım. Java'daki JVM mimarisi, sınıf yükleyici, bellek alanı, yürütme motoru vb. İçerir.1) ClassLoader
Sınıf yükleyici, sınıf dosyalarını yüklemek için kullanılan bir alt sistemdir. Üç ana işlevi yerine getirir. Yükleme, Bağlama ve Başlatma.
2) Yöntem Alanı
JVM Yöntem Alanı, meta veriler, sabit çalışma zamanı havuzu ve yöntemlerin kodu gibi sınıf yapılarını depolar.
3) 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 dil Yığınları
Java dil Yığınları yerel değişkenleri ve kısmi sonuçları depolar. Her iş parçacığı, iş parçacığı oluşturulurken aynı anda oluşturulan kendi JVM yığınına sahiptir. Bir yöntem her çağrıldığında yeni bir çerçeve oluşturulur ve yöntem çağırma işlemi tamamlandığında silinir.
5) PC Kayıtları
PC kaydı, halihazırda yürütülmekte olan Java sanal makine talimatının adresini depolar. Java'da, her iş parçacığının kendi bilgisayar kaydı vardır.
6) Yerel Yöntem Yığınları
Yerel yöntem yığınları, yerel kodun talimatını yerel kitaplığa bağlıdır. Java yerine başka bir dilde yazılmıştır.
7) Yürütme Motoru
Donanımı, yazılımı veya tüm sistemleri test etmek için kullanılan bir yazılım türüdür. Test yürütme motoru, test edilen ürün hakkında hiçbir zaman herhangi bir bilgi taşımaz.
8) Yerel Yöntem arayüzü
Yerel Yöntem Arayüzü bir programlama çerçevesidir. Bir JVM'de çalışan Java kodunun kütüphaneler ve yerel uygulamalar tarafından çağrılmasına izin verir.
9) Yerel Yöntem Kitaplıkları
Yerel Kitaplıklar, Yürütme Motoru tarafından ihtiyaç duyulan Yerel Kitaplıklar (C, C ++) koleksiyonudur.
Yazılım Kod Derleme ve Yürütme süreci
Bir yazılım programı yazmak ve yürütmek için aşağıdakilere ihtiyacınız vardır
1) Editör - Programınızı yazmak için bunun için bir not defteri kullanılabilir.
2) Derleyici - Yüksek dil programınızı yerel makine koduna dönüştürmek için
3) Bağlayıcı - Ana programınızda farklı program dosyaları referansını bir araya getirmek için.
4) Yükleyici - Sabit Disk, Flash Sürücü, CD gibi ikincil depolama aygıtınızdaki dosyaları yürütmek üzere RAM'e yüklemek için. Kodunuzu çalıştırdığınızda yükleme otomatik olarak yapılır.
5) Yürütme - İşletim sisteminiz ve işlemciniz tarafından işlenen kodun fiili yürütülmesi.
Bu arka planla, aşağıdaki videoyu izleyin ve JVM'nin (Java Sanal Makinesi) JVM dahili çalışmasını ve mimarisini öğrenin.
Videoya erişilemiyorsa burayı tıklayın
C kodu Derleme ve Yürütme süreci
Java'da Java derleme sürecini anlamak. Önce C'deki derleme ve bağlama sürecine hızlıca bir göz atalım.
Farz edelim ki, temelde f1 ve f2 olmak üzere iki işlevi çağırdınız. Ana işlev a1.c. dosyasında saklanır.
Fonksiyon f1 a2.c dosyasında saklanır
F2 işlevi a3.c dosyasında saklanır
Tüm bu dosyalar, yani a1.c, a2.c ve a3.c derleyiciye beslenir. Kimin çıktısı, makine kodu olan karşılık gelen nesne dosyalarıdır.
Bir sonraki adım, tüm bu nesne dosyalarını bağlayıcı yardımıyla tek bir .exe dosyasına entegre etmektir. Bağlayıcı, tüm bu dosyaları bir araya toplayacak ve .exe dosyasını oluşturacaktır.
Program çalışması sırasında, bir yükleyici programı yürütme için RAM'e a.exe yükleyecektir.
Java VM'de Java kodu Derleme ve Yürütme
Şimdi bu JVM eğitiminde, JAVA sürecine bakalım. Esas olarak, f1 ve f2 olmak üzere iki yönteminiz var.
- Ana yöntem a1.java dosyasında saklanır
- f1, a2.java olarak bir dosyada saklanır
- f2 bir dosyada a3.java olarak saklanır
Derleyici üç dosyayı derleyecek ve BYTE kodundan oluşan 3 adet karşılık gelen .class dosyası üretecektir. C'nin aksine, bağlantı yapılmaz .
Java VM veya Java Virtual Machine, RAM'de bulunur. Yürütme sırasında, sınıf yükleyici kullanılarak sınıf dosyaları RAM'e getirilir. BYTE kodu, herhangi bir güvenlik ihlali için doğrulanır.
Ardından, yürütme motoru Bytecode'u Yerel makine koduna dönüştürecektir. Bu tam zamanında derlemedir. Java'nın nispeten yavaş olmasının ana nedenlerinden biridir.
NOT: JIT veya Tam zamanında derleyici, Java Sanal Makinesi'nin (JVM) bir parçasıdır. Bayt Kodunun aynı zamanda benzer işlevselliğe sahip olan kısmını yorumlar.
Java neden hem Yorumlanmış hem de Derlenmiş Dildir?
Programlama dilleri şu şekilde sınıflandırılır:- Üst Düzey Dil Örn. C ++, Java
- Orta Seviye Diller Ör. C
- Düşük Seviyeli Dil Ex Meclisi
- Son olarak Makine Dili olarak en düşük seviye.
Bir derleyici başka bir dilde bir seviyeden bir programı dönüştüren bir programdır. C ++ programının makine koduna dönüştürülmesi örneği.
Java derleyici, yüksek seviyeli java kodunu bayt koduna dönüştürür (bu aynı zamanda bir tür makine kodudur).
Bir tercüman başka bir programlama diline bir seviyede bir programı dönüştüren bir programdır aynı seviyede. Java programının C ++ 'ya dönüştürülmesi örneği
Java'da, Tam Zamanında Kod oluşturucu, bayt kodunu aynı programlama seviyelerinde olan yerel makine koduna dönüştürür.
Dolayısıyla, Java hem derlenmiş hem de yorumlanmış bir dildir.
Java neden yavaş?
Java'nın yavaşlığının arkasındaki iki ana neden:
- Dinamik Bağlama: C'den farklı olarak, bağlantı, program Java'da her çalıştırıldığında çalışma zamanında yapılır.
- Çalışma Zamanı Yorumlayıcı: Bayt kodunun yerel makine koduna dönüştürülmesi Java'da çalışma zamanında yapılır ve bu da hızı yavaşlatır.
Bununla birlikte, Java'nın en son sürümü, performans darboğazlarını büyük ölçüde ele almıştır.
Özet :
- JVM'nin tam biçimi Java Sanal Makinesi'dir. Java'daki JVM, Java Kodunu çalıştıran motordur. Java bayt kodunu makine diline dönüştürür.
- Java'daki JVM mimarisi, sınıf yükleyici, bellek alanı, yürütme motoru vb. İçerir.
- JVM'de Java kodu bayt koduna göre derlenir. Bu bayt kodu farklı makinelerde yorumlanır
- JIT, Just-in-time derleyicinin kısaltmasıdır. JIT, 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 makinelerine kıyasla, Java'daki JVM'nin yürütülmesi yavaş olabilir.