Ao contrário dos programas em C que são compilados em linguagem de máquina, os programas Java dependem de um mecanismo de tempo de execução Java que, por sua vez, depende de um sistema existente (incluindo o kernel).
Mesmo que fosse conceitualmente possível organizar tudo para que o código Java fosse executado pelo kernel, ele seria ineficiente e provavelmente exigiria modificações no mecanismo Java.