Bytecode è un codice oggetto del computer software che può essere interpretato solo da un programma software, generalmente descritto come macchina virtuale. In molte moderne piattaforme di sviluppo software, il bytecode è preferito al codice macchina di basso livello poiché inserisce un interprete tra il programma software e l’hardware del computer. Il codice macchina dipende dalla piattaforma e richiede la compilazione su ciascuna piattaforma hardware per essere eseguito correttamente su quella piattaforma specifica.
Come i paradigmi di sviluppo del software sono maturati nel tempo, così è anche l’uso di livelli di interpretazione esterni tra l’hardware di un computer e il software che viene eseguito sul computer. All’inizio della creazione del software, gli sviluppatori dipendevano dall’hardware del computer, dai driver e dai sistemi operativi sottostanti. Questa dipendenza ha costretto gli sviluppatori a comprendere intimamente molti aspetti dei computer specifici, il che ha reso molto difficile l’indipendenza dalla piattaforma e la crescita del software strettamente legata a specifici fornitori di hardware e software.
La creazione del bytecode ha creato un ambiente di indipendenza dalla piattaforma nella comunità di sviluppo software. Con l’uso di questa metafora, gli sviluppatori di software possono scrivere una volta e usare ovunque. Gli sviluppatori non sono obbligati a comprendere i driver nativi di un computer specifico, né sono interessati al sistema operativo sottostante su cui verrà eseguito il software.
Una macchina virtuale è il termine utilizzato nel linguaggio di programmazione Java™ per rappresentare il programma software che interpreterà il bytecode. Questa macchina virtuale convertirà il bytecode come necessario per interagire con l’hardware e il sistema operativo sottostanti all’interno del computer. Il codice macchina generato dalla macchina virtuale è nascosto allo sviluppatore del programma software Java™ e può funzionare completamente su più piattaforme senza richiedere una riscrittura dell’applicazione software per ciascuna piattaforma.
Gli interni del bytecode sono più di un argomento avanzato e in genere non sono necessari per la maggior parte degli sviluppatori da capire. Bytecode non è un linguaggio leggibile dall’uomo e consiste in rappresentazioni codificate numeriche di classi, metodi e ambito degli oggetti e la loro nidificazione all’interno delle classi. Ogni codice operativo bytecode è lungo un singolo byte.
Il linguaggio macchina richiesto per i computer moderni per funzionare sui comandi è di natura proprietaria del fornitore. Ogni hardware e sistema operativo ha un modo unico di gestire i processi, l’allocazione della memoria e l’utilizzo delle attività. Utilizzando un’applicazione di sviluppo software bytecode, l’interprete della macchina virtuale è responsabile della creazione del codice macchina che sarà necessario eseguire sulla piattaforma proprietaria.