Kod bajtowy to kod obiektowy komputera programowego, który może być interpretowany tylko przez program komputerowy, zwykle opisywany jako maszyna wirtualna. W wielu nowoczesnych platformach programistycznych kod bajtowy jest preferowany od kodu maszynowego niskiego poziomu, ponieważ umieszcza interpreter między programem a sprzętem komputerowym. Kod maszynowy jest zależny od platformy, co wymaga kompilacji na każdej platformie sprzętowej, aby poprawnie działać na tej konkretnej platformie.
Wraz z upływem czasu dojrzewały paradygmaty tworzenia oprogramowania, podobnie jak stosowanie zewnętrznych warstw interpretacji między sprzętem komputera a oprogramowaniem działającym na komputerze. Na początku tworzenia wczesnego oprogramowania programiści byli zależni od sprzętu komputerowego, sterowników i bazowych systemów operacyjnych. Ta zależność zmusiła programistów do dokładnego zrozumienia wielu aspektów konkretnych komputerów, co bardzo utrudniało niezależność platformy, a rozwój oprogramowania był ściśle powiązany z konkretnymi dostawcami sprzętu i oprogramowania.
Stworzenie kodu bajtowego stworzyło środowisko niezależności platformy w społeczności programistów. Za pomocą tej metafory twórcy oprogramowania mogą pisać raz i używać wszędzie. Deweloperzy nie są zmuszani do zrozumienia natywnych sterowników konkretnego komputera, ani nie przejmują się podstawowym systemem operacyjnym, na którym będzie działać oprogramowanie.
Maszyna wirtualna to termin używany w języku programowania Java™ do oznaczania oprogramowania, które interpretuje kod bajtowy. Ta maszyna wirtualna przekonwertuje kod bajtowy w razie potrzeby do interakcji z podstawowym sprzętem i systemem operacyjnym w komputerze. Kod maszynowy generowany przez maszynę wirtualną jest ukryty przed twórcą oprogramowania Java™ i może w pełni działać na wielu platformach bez konieczności przepisywania aplikacji dla każdej platformy.
Wewnętrzne elementy kodu bajtowego są bardziej zaawansowanym tematem i zwykle nie są konieczne do zrozumienia przez większość programistów. Kod bajtowy nie jest językiem czytelnym dla człowieka i składa się z zakodowanych numerycznie reprezentacji klas, metod i zakresu obiektów oraz ich zagnieżdżania w klasach. Każdy opcode kodu bajtowego ma długość jednego bajtu.
Język maszynowy wymagany do działania nowoczesnych komputerów na poleceniach jest z natury zastrzeżony przez dostawcę. Każdy sprzęt i system operacyjny ma unikalny sposób obsługi procesów, alokacji pamięci i wykorzystania zadań. Korzystając z aplikacji do tworzenia oprogramowania kodu bajtowego, interpreter maszyny wirtualnej jest odpowiedzialny za tworzenie kodu maszynowego, który będzie wymagany do działania na zastrzeżonej platformie.