Cechy
kodu bajtowego.
Pliki z rozszerzeniem *.class kompilowane są do *.java, przy czym każdemu plikowi *.class odpowiada jeden plik *.java. Wynikiem działania kompilatora jest program reprezentowany przez tzw. kod bajtowy. Użycie kodu bajtowego jest rozwiązaniem kompromisowym pomiędzy językiem całkowicie interpretowanym (najwolniejszy) a kodem binarnym na konkretną platformę (najszybszy). Musi on być ściśle podporządkowany określonej specyfikacji wirtualnej maszyny Javy. Taka specyfikacja opisuje:
składnię kodów bajtowych
wartości identyfikatorów wyrażonych jako kody bajtowe lub dodatkowe, pomocnicze struktury
postaci struktur dodatkowych, które mogą się pojawić w skompilowanym kodzie Javy
formaty plików wynikowych Javy
Kody bajtowe, które i tak muszą być interpretowane przez JVM, zostały zoptymalizowane pod względem wynikowej objętości. Jest to ważniejsze od ewentualnego zmniejszenia wydajności, gdyż prędkości procesorów rosną szybciej niż prędkość sieci.