Sprzętowe wykonywanie kodu jak w ARM Jazelle było po to, by uzyskać wysoką sprawność energetyczną w warunkach w których JITowanie było poza zasięgiem. Jazelle jest tylko w starych ARMach, które były łączone z żałośnie małymi ilościami RAMu i to dlatego odpalanie normalnej, rozbudowanej i efektywnej JVMki było niemożliwe.
W sytuacji w której JIT może działać dobrze, bo jest duużo RAMu, sprzętowe wykonywanie bajtkodu Javy tylko spowolni wykonywanie programu, ponieważ bajtkod Javowy nie pozwala na szereg optymalizacji które przeprowadza JIT, a z drugiej strony tworzenie sprzętowego JITa to już kompletnie walenie głową w ścianę.
Bolączką typowych JVMek jest brak pamięci podręcznej na skompilowany kod która przeżywałaby zamknięcie JVMki, tak by przy następnym odpaleniu programu JVMka mogła skorzystać z optymalizacji przeprowadzonych w poprzednim. Każdorazowo podczas odpalania JVMki JITowane jest wszystko od nowa i dlatego programy Javowe startują dość wolno w porównaniu do programów natywnych.