JVM nedir? JVM'yi açıklayın. Archidoku

⚡ Akıllı Özet

Java Sanal Makine (JVM), çalıştırma ortamı sağlayan motordur. Java Platformdan bağımsız bayt kodunu yerel makine diline dönüştüren kod. Bu, aşağıdakilerin bir parçasıdır: Java Çalışma Ortamı ve etkinleştirir Java'ın bir kere yaz, her yerde çalıştır taşınabilirliği.

  • 🧩 Bayt Kodu Köprüsü: MKS Java Derleyici, makine kodu yerine bayt kodu üretir ve JVM bu bayt kodunu herhangi bir ana sistemde yorumlar.
  • 🏗️ çekirdek Archidoku: JVM, programları çalıştırmak için bir ClassLoader, metot alanı, yığın, yığın bellekleri, PC kayıtları ve bir yürütme motorunu bir araya getirir.
  • 🔄 Derleme Akışı: C'den farklı olarak, Java Bağlantı gerektirmez; sınıf dosyaları RAM'e yüklenir, doğrulanır ve ardından çalışma zamanında yürütülür.
  • JIT Derleyici: Anlık derleyici (Just-In-Time compiler), performansı artırmak için bayt kodunu yürütme sırasında yerel makine koduna dönüştürür.
  • ???? Performans Notu: Dinamik bağlantı ve çalışma zamanı yorumlaması tarihsel olarak şunları sağlar: Java Daha yavaşlar, ancak modern versiyonlar bu farkı büyük ölçüde kapatıyor.

JVM Archidoku

JVM nedir? Java?

Java Sanal Makine (JVM) çalıştırmak için çalışma ortamı sağlayan bir motordur. Java Kod veya uygulamaları dönüştürür. Java bayt kodunu makine diline dönüştürün. JVM, aşağıdakilerin bir parçasıdır: Java Çalışma Ortamı (JRE). Diğer programlama dillerinde derleyici, belirli bir sistem için makine kodu üretir. Ancak, Java Derleyici, sanal makine olarak bilinen bir yapı için kod üretir. Java Sanal makine.

JVM Nasıl Çalışır?

İlk olarak, Java Kod, bayt koduna derlenir. Bu bayt kodu farklı makinelerde yorumlanır. Ana sistem ile işleyici sistem arasında Java Kaynak kod ve bayt kodu, ara bir dildir. JVM'de ise... Java bellek alanının tahsis edilmesinden sorumludur.

Çalışma Java Sanal Makine JVM

Çalışma Java Sanal Makine (JVM)

ArchiJVM'nin yapısı (Java Sanal Makine)

Şimdi, JVM'nin mimarisini anlayalım. JVM mimarisi şu alanlarda incelenebilir: Java İçerisinde bir sınıf yükleyici, bellek alanı, yürütme motoru ve daha fazlası bulunur.

JVM Archidoku

Java Sanal makine Archidoku

1) Sınıf Yükleyici
Sınıf yükleyici, sınıf dosyalarını yüklemek için kullanılan bir alt sistemdir. Yükleme, Bağlama ve Başlatma olmak üzere üç temel işlevi yerine getirir.

2) Yöntem Alanı
JVM Metot Alanı, meta veriler, sabit çalışma zamanı havuzu ve metotların kodu gibi sınıf yapılarını depolar.

3) Yığın
Bütün nesneler, bunların ilgili örnek değişkenleri ve dizileri yığında depolanır. Bu bellek ortaktır ve birden fazla iş parçacığı arasında paylaşılır.

4) JVM Dil Yığınları
Java Dil yığınları, yerel değişkenleri ve bunların kısmi sonuçlarını depolar. Her iş parçacığının, iş parçacığı oluşturulduğu anda oluşturulan kendi JVM yığını vardır. 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 Kayıtları
Bilgisayar kayıt defteri, adresi saklar. Java Şu anda yürütülen sanal makine komutu. JavaHer iş parçacığının kendine ait ayrı bir PC kaydı vardır.

6) Yerel Yöntem Yığınları
Yerel metot yığınları, yerel kütüphaneye bağlı olan yerel kodun talimatlarını içerir. Bu, yerel kütüphane yerine başka bir dilde yazılır. Java.

7) Yürütme Motoru
Yürütme motoru bayt kodunu okur ve parça parça yürütür. Bayt kodunu yerel makine koduna dönüştürmek ve çalıştırmak için bir yorumlayıcı ve Anlık Derleme (JIT) derleyicisi kullanır.

8) Yerel Yöntem Arayüzü
Yerel Yöntem Arayüzü bir programlama çerçevesidir. İzin verir Java JVM üzerinde çalışan ve yerel uygulamalar ve kütüphaneler tarafından çağrılan kod.

9) Yerel Yöntem Kütüphaneleri
Native Libraries, yerel kütüphanelerin (C, C++) Yürütme Motorunun ihtiyaç duyduğu.

Yazılım Code Derleme ve Yürütme süreci

Bir yazılım programı yazmak ve çalıştırmak için şunlara ihtiyacınız vardır:

  • 1) Editör – Programınızı yazmak için; bunun için bir not defteri kullanabilirsiniz.
  • 2) derleyici – Yüksek seviyeli programlama dilinizdeki programı yerel makine koduna dönüştürmek.
  • 3) Bağlayıcı – Ana programınızdaki farklı program dosyası referanslarını bir araya getirmek için.
  • 4) Yükleyici – Sabit disk, flash bellek veya CD gibi ikincil depolama aygıtınızdaki dosyaları, çalıştırma için RAM'e yüklemek. Kodunuzu çalıştırdığınızda yükleme işlemi otomatik olarak yapılır.
  • 5) Yürütme – Kodun fiili yürütülmesi, işletim sisteminiz ve işlemciniz tarafından gerçekleştirilir.

Bu bilgiler ışığında, aşağıdaki videoyu izleyerek JVM'nin iç işleyişini ve mimarisini öğrenebilirsiniz (Java Sanal Makine).

Tıkla okuyun videoya erişilemiyorsa

C kodu Derleme ve Yürütme süreci

Anlamak için Java Derleme sürecine geçmeden önce, C dilindeki derleme ve bağlama süreçlerine kısaca bir göz atalım.

Ana fonksiyonda f1 ve f2 olmak üzere iki fonksiyon çağırdığınızı varsayalım. Ana fonksiyon a1.c dosyasında saklanmaktadır.

C kodu ana fonksiyon a1.c

f1 fonksiyonu a2.c dosyasında saklanmaktadır.

C kod fonksiyonu f1 a2.c

f2 fonksiyonu a3.c dosyasında saklanmaktadır.

C kod fonksiyonu f2 a3.c

a1.c, a2.c ve a3.c gibi tüm bu dosyalar derleyiciye gönderilir ve derleyicinin çıktısı, makine kodu olan karşılık gelen nesne dosyalarıdır.

C kod derleyicisi nesne dosyaları üretir.

Bir sonraki adım, tüm bu nesne dosyalarını bir bağlayıcı (linker) yardımıyla tek bir .exe dosyasına entegre etmektir. Bağlayıcı, tüm bu dosyaları bir araya getirerek .exe dosyasını oluşturacaktır.

C kod bağlayıcısı, exe dosyası üretir.

Program çalışması sırasında, bir yükleyici program .exe dosyasını yükleyecektir. RAM yürütme için.

C kod yükleyici, çalıştırılabilir dosyayı RAM'e yükler.

Java kod Derleme ve Yürütme Java VM

Şimdi, şu sürece bir göz atalım: JavaAna fonksiyonunuzda f1 ve f2 olmak üzere iki yönteminiz var.

  • Ana metot a1.java dosyasında saklanmaktadır.
  • f1 bir dosyada a2.java olarak saklanır
  • f2 bir dosyada a3.java olarak saklanır

Java Kod, üç dosyayı sınıf dosyalarına derler.

Derleyici, üç dosyayı derleyerek BYTE kodundan oluşan üç adet .class dosyası üretecektir. C'nin aksine, herhangi bir bağlantı işlemi yapılmaz.

MKS Java sanal makine, altın Java Sanal makine RAM üzerinde bulunur. Çalıştırma sırasında, sınıf yükleyici kullanılarak sınıf dosyaları RAM'e getirilir. BYTE kodu, herhangi bir güvenlik açığı olup olmadığı açısından doğrulanır.

Java Sınıf yükleyici, sınıf dosyalarını RAM'e getirir.

Ardından, yürütme motoru bayt kodunu yerel makine koduna dönüştürecektir. Bu, anlık derlemedir. Bunun başlıca nedenlerinden biri de budur. Java nispeten yavaştır.

Java Yürütme motoru bayt kodunu yerel koda dönüştürür.

NOT: JIT veya Anlık Derleyici, derleme sisteminin bir parçasıdır. Java Sanal Makine (JVM). Benzer işlevselliğe sahip bayt kodunun bölümlerini aynı anda yorumlar.

Neden Java Hem Yorumlanmış hem de Derlenmiş Dil?

Programlama dilleri şu şekilde sınıflandırılır:

  • Üst Düzey Dil, örneğin, C++, Java
  • Orta Seviye Diller, örneğin C
  • Düşük Seviyeli Dil, örneğin, Assembly
  • Son olarak, en alt seviye Makine Dili olarak karşımıza çıkıyor.

A derleyici Bir programı bir dil seviyesinden diğerine dönüştüren bir programdır. Örneğin, bir programın dönüştürülmesi C++ programı makine koduna dönüştürün. Java derleyici yüksek seviyeyi dönüştürür Java kodu bayt koduna (bu aynı zamanda bir tür makine kodudur) dönüştürür.

An çevirmen Bir programlama dilini bir seviyeden başka bir programlama diline dönüştüren bir programdır. aynı seviyeÖrneğin, bir dönüşümün Java içine programla C++.

In JavaAnlık kod üreteci, bayt kodunu aynı programlama seviyesinde olan yerel makine koduna dönüştürür. Dolayısıyla, Java Dil hem derlenmiş hem de yorumlanmış bir dildir.

Neden Java yavaş?

Yavaşlığın ardındaki iki ana neden Java şunlardır:

  1. Dinamik Bağlantı: C'den farklı olarak bağlantı, program her çalıştırıldığında çalışma zamanında yapılır. Java.
  2. Çalışma Zamanı Yorumlayıcısı: Bayt kodunun yerel makine koduna dönüştürülmesi çalışma zamanında yapılır. JavaBu da hızı daha da yavaşlatır.

Ancak, en son sürümlerinde Java Bu performans darboğazlarını büyük ölçüde giderdik.

SSS

JVM, Deeplearning4j, Weka ve Apache gibi yapay zeka ve büyük veri çerçevelerini çalıştırır. SparkAnlık derleyici ve bellek yönetimi sayesinde bu kütüphaneler, yerel kodu yeniden yazmaya gerek kalmadan, platformlar genelinde büyük veri kümelerini verimli bir şekilde işleyebilir.

Evet. Yapay zeka destekli profilleyiciler, çöp toplama günlüklerini analiz edebilir, yığın boyutlarını önerebilir ve yavaş çalışan yöntemleri işaretleyebilir. JVM bayraklarını ayarlamaya ve darboğazları daha hızlı tespit etmeye yardımcı olurlar, ancak geliştiricinin yine de önerilen her değişikliği doğrulaması gerekir.

JVM bayt kodunu çalıştırır. JRE, JVM'yi çalıştırmak için gereken temel kütüphanelerle birlikte paketler. Java JDK, derleyici ve hata ayıklayıcı gibi geliştirme araçları ekleyerek uygulamaların oluşturulmasında kullanılır.

Bayt kodu platformdan bağımsızdır, ancak JVM'nin kendisi platforma bağımlıdır. Her işletim sisteminin kendi JVM uygulamasına ihtiyacı vardır. Bu tasarım, aynı derlenmiş bayt kodunun uyumlu bir JVM'nin kurulu olduğu her yerde çalışmasına olanak tanır.

Bu yazıyı şu şekilde özetleyin: