Bytecode este codul obiect al computerului software care poate fi interpretat doar de un program software, descris de obicei ca mașină virtuală. În multe platforme moderne de dezvoltare software, bytecode este preferat codului mașină de nivel scăzut, deoarece plasează un interpret între programul software și hardware-ul computerului. Codul mașinii depinde de platformă, ceea ce necesită compilare pe fiecare platformă hardware pentru a se executa corect pe platforma respectivă.
Pe măsură ce paradigmele dezvoltării software s-au maturizat de-a lungul timpului, la fel s-a făcut și utilizarea straturilor externe de interpretare între hardware-ul unui computer și software-ul care rulează pe computer. La începutul creării timpurii a software-ului, dezvoltatorii erau dependenți de hardware-ul computerului, drivere și sistemele de operare subiacente. Această dependență i-a forțat pe dezvoltatori să înțeleagă îndeaproape multe aspecte ale computerelor specifice, ceea ce a făcut ca independența platformei să fie foarte dificilă și creșterea software-ului strâns cuplată cu furnizorii specifici de hardware și software.
Crearea bytecode a creat un mediu de independență a platformei în comunitatea de dezvoltare de software. Cu ajutorul acestei metafore, dezvoltatorii de software pot scrie o singură dată și pot folosi peste tot. Dezvoltatorii nu sunt obligați să înțeleagă driverele native ale unui anumit computer și nici nu sunt preocupați de sistemul de operare subiacent pe care va rula software-ul.
O mașină virtuală este termenul folosit în limbajul de programare Java™ pentru a reprezenta programul software care va interpreta bytecode. Această mașină virtuală va converti bytecode-ul după cum este necesar pentru a interacționa cu hardware-ul de bază și sistemul de operare din computer. Codul de mașină care este generat de mașina virtuală este ascuns de dezvoltatorul programului software Java™ și poate funcționa pe deplin pe mai multe platforme fără a necesita o rescrie a aplicației software pentru fiecare platformă.
Elementele interne ale bytecode sunt mai mult un subiect avansat și, de obicei, nu sunt necesare pentru a înțelege majoritatea dezvoltatorilor. Bytecode nu este un limbaj care poate fi citit de om și constă din reprezentări codificate numerice ale claselor, metodelor și domeniului obiectelor și imbricarea acestora în cadrul claselor. Fiecare cod operațional bytecode are o lungime de un singur octet.
Limbajul mașinii necesar pentru ca computerele moderne să funcționeze pe comenzi este de natură proprietară de către furnizor. Fiecare hardware și sistem de operare are un mod unic de a gestiona procesele, alocarea memoriei și utilizarea sarcinilor. Prin utilizarea unei aplicații de dezvoltare software bytecode, interpretul de mașină virtuală este responsabil pentru crearea codului de mașină care va fi necesar să ruleze pe platforma proprietară.