Нужно ли пользователю иметь JVM для запуска Java-программы?
Да, разумеется. Поэтому некоторые Java-программы распространяются в виде установщика, который сразу же ставит вместе с программой и JVM (причем часто в папку программы). Например, так делает JetBrains IDEA.
В случае компиляции программы без установщика (в jar файл к примеру) пользователю будет нужно иметь jvm для её запуска.