Дело в том, что Java интерпретируется JVM, поэтому вам, по крайней мере, нужно будет поставлять его вместе с приложением.
Чтобы быть немного более конкретным в этом, Java отчасти скомпилирована вбайт-код, поэтому он может быть интерпретирован быстрее.Но Байт-код не может работать без JVM.Это хорошая сторона Java: вам не нужно перекомпилировать ваши приложения для запуска на других платформах, таких как Linux или OS X, об этом позаботится JVM (так как он написан на нативном коде и перекомпилируется для этих платформ).
Существуют некоторые компиляторы, которые могут преобразовать ваш Java-код во что-то родное, например C, которое затем может быть выполнено без JVM.Но это не идея Java, и большинство из этих инструментов не справляются со своими задачами.
Если вы хотите, чтобы ваше приложение работало без интерпретатора, вам нужно использовать скомпилированный язык, такой как C или C ++