Kod ten jest przeznaczony dla wirtualnej maszyny Javy (JVM), zdefiniowanej przez osobną specyfikację. JVM jest maszyną abstrakcyjną i nie określa jednej konkretnej implementacji. Specyfikacja definiuje m.in. format plików klas, zestaw instrukcji, obszary pamięci, mechanizmy ładowania i inicjalizacji klas oraz sposób wykonywania instrukcji.
Przed wykonaniem kodu JVM może przeprowadzić weryfikację plików klas. Weryfikator sprawdza m.in. poprawność typów i strukturę instrukcji, ograniczając możliwość wykonania niepoprawnego kodu bajtowego.
Niezależność od platformy
Kod bajtowy JVM nie odpowiada bezpośrednio zestawowi instrukcji jednego konkretnego procesora. Pozwala to wykonywać ten sam plik klas na różnych architekturach i systemach operacyjnych posiadających zgodną implementację JVM.
Przenośność nie oznacza całkowitej niezależności każdego programu od środowiska. Aplikacja może korzystać m.in. z natywnych bibliotek, właściwości systemu plików, urządzeń lub interfejsów systemu operacyjnego, przez co jej działanie może zależeć od konkretnej platformy.
Kompilacja JIT
Współczesne implementacje JVM nie ograniczają się do interpretowania kodu bajtowego.