Annuncio pubblicitario
La Java Virtual Machine (JVM) è un vero contagocce quando stai programmando in Java. Contrariamente a quanto indica il nome, la Java Virtual Machine può essere trovata anche in relazione ad altri linguaggi di programmazione.
In generale, non è necessario sapere cos'è la Java Virtual Machine, o anche cosa fa, per poter programmare in Java. D'altra parte, familiarizzare con il funzionamento interno di una macchina aiuta ad aumentare la comprensione e la comprensione generale.
Questo articolo analizza l'idea della Java Virtual Machine, cosa fa per te e alcuni dei più importanti pro e contro. Anche se ho cercato di mantenerlo semplice e la letteratura sull'argomento è decisamente più avanzata, ci si aspetta una comprensione rudimentale di Java e della programmazione.
Lingue di alto livello
La semantica di un linguaggio di programmazione è progettata per essere vicina al nostro linguaggio naturale, rimanendo concisa e facile da interpretare per una macchina. Come probabilmente saprai, il linguaggio di programmazione è completamente diverso dal codice macchina, l'insieme di istruzioni che un computer utilizza per costruire ed eseguire un programma. Questo lo chiamiamo
lingue di alto livello; uno o più livelli di astrazione dal codice macchina.Prima che sia in grado di funzionare, è necessario interpretare il codice di alto livello. Molte interfacce di programmazione si compilano in anticipo (Compilazione AOT) per una piattaforma specifica. Ciò rende il programma più efficiente in fase di esecuzione, ma molto meno compatibile con piattaforme diverse. Java, al contrario, funziona con un linguaggio intermedio chiamato Bytecode Java e il macchina virtuale Java.
Bytecode JVM e Java
Quando il tuo progetto Java viene compilato, traduce il codice sorgente (contenuto in *.Giava file sorgente) al codice byte Java (il più delle volte contenuto nei file * .class). Questo porta il tuo codice di alto livello ad un passo più vicino al codice della macchina, ma non ancora del tutto. Questo bytecode è una raccolta di istruzioni compatte; più facile da interpretare per una macchina, ma meno leggibile.
Quando si esegue un'applicazione Java sul proprio computer, cellulare o qualsiasi altra piattaforma abilitata per Java, si passa essenzialmente questo codice byte Java alla Java Virtual Machine. L'interprete nella Java Virtual Machine di solito inizia a compilare l'intero bytecode in fase di esecuzione, seguendo i principi del cosiddetto compilazione just-in-time. Ciò comporta il tipico, sebbene spesso lieve ritardo all'apertura di un'applicazione Java, ma generalmente migliora le prestazioni del programma rispetto a compilazione interpretata.

Il vantaggio principale di questo sistema è la maggiore compatibilità. Poiché le tue applicazioni vengono eseguite in una macchina virtuale anziché direttamente sul tuo hardware, lo sviluppatore può programmare e costruire la propria applicazione una volta, che può quindi essere eseguita su ogni dispositivo con un'implementazione di Java Virtual Macchina. Questo principio ha dato vita allo slogan Java: “Scrivi una volta, corri ovunque.”
Pro: compatibilità e maggiore sicurezza
Oltre alla compatibilità del codice, Java Virtual Machine offre altri vantaggi. Uno dei più importanti di questi è la relativa sicurezza dei programmi Java come risultato della Java Virtual Machine. Sicurezza, il che significa che un programma in esecuzione in una macchina virtuale ha molte meno probabilità di interrompere il sistema operativo dell'utente o di corrompere i file di dati, se si verificano errori.
Contro: diverse implementazioni e debug di JVM
Una delle principali critiche espresse contro la compatibilità del codice e la Java Virtual Machine è dovuta alle molte diverse implementazioni di quest'ultima. Vedete, la Java Virtual Machine non è un software. Oracle, i proprietari di Java, hanno l'implementazione della Java Virtual Machine, ma altre persone possono realizzarla se soddisfa varie rivendicazioni pratiche e contrattuali.
Queste diverse implementazioni indicano che il codice può essere eseguito senza problemi su una Java Virtual Machine, ma si blocca e si brucia su un'altra. Sebbene, in pratica, puoi scrivere il tuo codice una volta ed eseguirlo ovunque, codice più complesso a volte deve essere ancora eseguito il debug in diverse implementazioni di Java Virtual Machine per garantire il corretto funzionamento.
Hai esperienza di lavoro con Java Virtual Machine? Se è così, c'è qualcosa che mi sono perso qui che dovrebbe essere menzionato?
Credito immagine: Michaelaw, Dcoetzee
Sono uno scrittore e studente di informatica dal Belgio. Puoi sempre farmi un favore con una buona idea per l'articolo, una raccomandazione per un libro o un'idea per una ricetta.