Bytecode je softverski računalni objektni kod koji se može protumačiti samo pomoću softverskog programa, obično opisanog kao virtualni stroj. U mnogim modernim platformama za razvoj softvera, bajtkod je poželjniji od strojnog koda niske razine jer postavlja tumač između softverskog programa i računalnog hardvera. Strojni kod ovisi o platformi što zahtijeva kompilaciju na svakoj hardverskoj platformi kako bi se ispravno izvršio na toj specifičnoj platformi.
Kako su paradigme razvoja softvera s vremenom sazrijevale, tako je i korištenje vanjskih slojeva interpretacije između hardvera računala i softvera koji se izvodi na računalu raslo. Na početku ranog stvaranja softvera, programeri su bili ovisni o hardveru računala, upravljačkim programima i temeljnim operativnim sustavima. Ova ovisnost natjerala je programere da pobliže razumiju mnoge aspekte specifičnih računala, što je učinilo neovisnost platforme vrlo teškom, a rast softvera usko povezan s određenim dobavljačima hardvera i softvera.
Kreiranje bajtkoda stvorilo je okruženje neovisnosti o platformi u zajednici za razvoj softvera. Uz korištenje ove metafore, programeri mogu pisati jednom i svugdje ih koristiti. Programeri nisu prisiljeni razumjeti izvorne upravljačke programe određenog računala, niti ih zanima temeljni operativni sustav na kojem će se softver izvoditi.
Virtualni stroj je izraz koji se koristi u programskom jeziku Java™ za predstavljanje softverskog programa koji će interpretirati bajt kod. Ovaj će virtualni stroj pretvoriti bajt kod prema potrebi za interakciju s temeljnim hardverom i operativnim sustavom unutar računala. Strojni kod koji generira virtualni stroj skriven je od programera Java™ softverskog programa i može u potpunosti funkcionirati na više platformi bez potrebe za prepisivanjem softverske aplikacije za svaku platformu.
Interni dijelovi bajtkoda više su napredna tema i obično nisu potrebni većini programera za razumijevanje. Bytecode nije čovjeku čitljiv jezik i sastoji se od numerički kodiranih prikaza klasa, metoda i opsega objekata i njihovog ugniježđenja unutar klasa. Svaki operacijski kod bajtkoda je jedan bajt u dužini.
Strojni jezik potreban za moderna računala za funkcioniranje na naredbama je vlasničke prirode od strane dobavljača. Svaki hardver i operativni sustav imaju jedinstven način rukovanja procesima, dodjelom memorije i iskorištavanjem zadataka. Korištenjem aplikacije za razvoj softvera bytecode, interpreter virtualnog stroja odgovoran je za kreiranje strojnog koda koji će biti potreban za rad na vlasničkoj platformi.