Che cos'è JVM?

JVM è una specifica in cui il funzionamento della Java Virtual Machine è descritto in modo specifico. Tuttavia, l'algoritmo è un'identità indipendente che viene scelta solo dal fornitore dell'implementazione come Oracle e altre rinomate aziende. Pertanto, JVM è un'implementazione nota come Java Runtime Environment (JRE).

Definizione

È definito come una descrizione per un programma software che offre un ambiente di runtime per il codice e la sua esecuzione significativa. In altre parole, è il modo in cui eseguiamo i programmi Java, configurando le impostazioni di JVM e facendo affidamento su di esso per far fronte alle risorse del programma durante il processo di esecuzione.

Comprensione

Java è noto come indipendente dalla piattaforma a causa della Java Virtual Machine. Quando viene inviato un invio a computer diversi con il diverso sistema operativo con JVM, il bytecode viene interpretato nel linguaggio a livello di macchina da JVM. Per essere precisi, i programmi JVM sono scritti in linguaggio di programmazione C, mentre JVM è indipendente dal sistema operativo. È un componente chiave dell'architettura Java.

Oltre a tutto ciò, è responsabile dell'assegnazione della memoria essenziale richiesta da un programma Java. È anche responsabile del divieto dello spazio di memoria.

Cosa fa?

Le operazioni cruciali che JVM esegue sono le seguenti:

  • Caricamento del codice
  • Verifica del codice
  • Esecuzione del codice
  • Fornitura dell'ambiente di runtime

Oltre a tutto ciò, implementa le classificazioni per il formato del file di classe, l'area di memoria, l'heap raccolto dall'immondizia, il set di registri, la segnalazione di errori irreversibili, ecc.

JVM Architecture

Ecco alcune informazioni chiave sull'architettura interna di JVM che comprende:

1. Classloader

È un sottosistema di JVM utilizzato per caricare i file di classe. Durante l'esecuzione del programma Java, viene prima caricato dal classloader. I tre classloader inclusi in Java sono i seguenti:

a) Bootstrap ClassLoader

È la superclasse di Extension Classloader. Aiuta a caricare i file rt.jar che trasportano tutti i file di classe.

b) Extension ClassLoader

È il classloader principale del classloader di sistema e il classloader secondario di Bootstrap. I file jar all'interno della directory $ JAVA_HOME / jre / lib / ext possono essere estratti tramite Extension ClassLoader.

C) System / Application ClassLoader

È figlio del classloader Extension noto anche come Classloader applicazione. I file di classe dal classpath possono essere estratti attraverso di esso. Classpath, che è impostato sulla directory corrente, per impostazione predefinita può essere modificato utilizzando l'opzione '-cp' o '-classpath'.

2.Area di classe (metodo)

Le strutture pre-classe come i dati di campo e metodo, il pool di costanti di runtime e il codice per i metodi sono memorizzati nell'area Classe (metodo). È una memoria che viene creata all'avvio di JVM ed è condivisa tra tutti i thread come Heap.

3. Heap

Gli oggetti vengono assegnati tramite questa utile area dati di runtime. È un luogo di memoria che memorizza oggetti insieme alle sue variabili di istanza. Ogni volta che un oggetto viene creato in Java, entra nell'heap - l'area della memoria.

4. Stack

Oltre alla memorizzazione dei frame, Java Stack contiene variabili e risultati parziali. Svolge anche un ruolo fondamentale nel metodo, nell'invocazione e nel ritorno. Ogni singolo thread è costituito dal suo stack JVM privato, creato contemporaneamente al thread. Ogni volta che un metodo si intensifica, viene generato un nuovo frame che viene frantumato al completamento dell'invocazione del metodo.

5. Registro contatore programmi (PC)

Il registro PC contiene l'indirizzo dell'istruzione JVM al momento della sua esecuzione. Tenere traccia delle istruzioni, ha valore per ogni istruzione che non è definita per i metodi nativi.

6. Stack del metodo nativo

Le procedure native utilizzate nelle applicazioni fanno parte dello stack dei metodi nativi. Questi metodi sono scritti in lingue diverse da Java. Associate a ciascun thread, le implementazioni JVM non possono fare affidamento su stack convenzionali e non possono caricare metodi nativi. Per essere precisi, è simile allo stack ma utilizzato per metodi nativi.

7. Motore

Essendo l'aspetto chiave di JVM, comunica con le sue varie aree di memoria. Ciò comprende:

un. Netturbino

Ciò svolge un ruolo vitale nel sistema di gestione dinamica della memoria della JVM. La memoria occupata e non più referenziata da nessuno degli oggetti Java raggiungibili viene rilasciata tramite Garbage Collector.

b. Interprete

Esegue le istruzioni dopo aver letto il flusso bytecode.

c. Compilatore Just-In-Time (JIT)

Abilitando il miglioramento delle prestazioni, il compilatore JIT compila parti del bytecode con funzionalità simili allo stesso tempo. Aiuta a ridurre il tempo necessario per il processo di compilazione.

8. Java Native Interface (JNI)

Le applicazioni scritte in altre lingue, ad esempio C, C ++, Assembly, ecc. Possono essere collegate tramite un'interfaccia fornita da JNI. Il framework JNI viene utilizzato da Java per interagire con le librerie del sistema operativo o per inviare output alla console.

A cosa serve JVM?

La JVM ha due funzioni principali: consentire l'esecuzione dei programmi Java su qualsiasi dispositivo o sistema operativo (noto come principio "Scrivi una volta, esegui ovunque") e per gestire e ottimizzare la memoria del programma.

Vantaggi e svantaggi

I programmi Java vengono eseguiti correttamente tramite JVM. Bytecode: un linguaggio intermedio viene utilizzato per compilare programmi Java e quindi eseguito tramite JVM. Ogni singolo programma che viene compilato in bytecode può essere eseguito da qualsiasi piattaforma alimentata da JVM. Ciò consente al software Java di essere più efficace e compatibile secondo le varie piattaforme di elaborazione interessate. La JVM presenta alcuni notevoli vantaggi e svantaggi che qualsiasi sviluppatore dovrebbe valutare attentamente prima di investire nello sviluppo di Java.

1. Sicurezza

Attraverso i nodi di sicurezza di JVM, i programmatori possono scrivere in modo efficace programmi Java protetti di fascia alta. Autorizza le risorse del sistema operativo a identificare il software dannoso e aiuta anche nella sua prevenzione di conseguenza.

2. Prestazioni

È probabile che i programmi Java eseguiti su una JVM offrano un'esecuzione più lenta rispetto ai programmi scritti in C ++. Ciò è dovuto all'ottimizzazione del codice che si basa eccessivamente su diverse funzionalità specifiche del sistema. Inoltre, il bytecode Java non può essere ottimizzato per un set hardware specifico, poiché è neutro dal sistema.

3. Correttezza

Corretto è il programma, che si comporta in modo efficace e soddisfa pienamente le aspettative di un utente. Le funzionalità integrate di JVM gli consentono di funzionare correttamente e senza errori.

Perché dovremmo usare JVM?

Nonostante disponga di un codice sintattico Java, JVM può essere eseguito su vari programmi linguistici. Di seguito sono elencati alcuni dei motivi per cui è così ampiamente utilizzato e perché utilizzarlo su piattaforme diverse:

Utilizza la memoria heap: la memoria heap è un componente principale utilizzato per l'allocazione dinamica della memoria per la definizione di classi e inizializzazione di oggetti e poiché JVM supporta la memoria heap, ha un'ampia accettazione.

Protezione della posizione del codice remoto: il framework JVM è progettato in modo tale da poter eseguire facilmente l'applicazione remota. Questa teoria è seguita per l'esecuzione dell'applet Java.

Conclusione

Il fatto che JVM funzioni su più sistemi operativi, dà un pollice in su nel dominio della tecnologia. Usandolo su Windows, Linux e altri sistemi operativi, è abilitato a trasformare bytecode indipendentemente dall'hardware e dal sistema operativo che deve essere eseguito. Inoltre, la sua capacità di offrire sicurezza al computer host proteggendo i propri dati e programmi è un altro motivo per cui JVM ha avuto tanto successo in passato e continua a essere dominante in futuro.

Articoli consigliati

Questa è stata una guida a What is a JVM (Java Virtual Machine). Qui abbiamo discusso i concetti di base con l'elenco di architettura e usi di JVM. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. I migliori frame Javascript
  2. Python è orientato agli oggetti
  3. Applicazioni del C ++ nel mondo reale
  4. Carriera in ASP.NET
  5. JRE vs JVM | Le 8 principali differenze con (Infografica)

Categoria: