Java wraz z innymi językami obiektowymi, wprowadzają szereg abstrakcji programistycznych często tak oddalonych od sprzętu komputerowego (reprezentowanego przez instrukcje procesora, rejestry, adresy), że ten staje się dla programisty niewidoczny.
Określenie „język niskiego poziomu” może być rozumiane również jako skala oceny subiektywnej danego języka programowania względem innego, np. C może być oceniany jako język niskiego poziomu przez osoby programujące w języku Java.
Kod maszynowy thumb|300px|Przedni panel minikomputera PDP-8/E. Rząd przełączników (u dołu) wykorzystywany jest do przełączania w języku maszynowym programu Kod maszynowy jest jedynym językiem, który komputer może przetwarzać i wykonywać bezpośrednio, bez konieczności wcześniejszej transformacji kodu. Obecnie programiści praktycznie w ogóle nie piszą programów w kodzie maszynowym, gdyż wymaga on zwracania uwagi na liczne szczegóły, które w językach wysokopoziomowych są obsługiwane automatycznie. Ponadto wymagane jest zapamiętywanie bądź wyszukiwanie kodów liczbowych dla każdej instrukcji, a modyfikacja kodu jest bardzo trudna.