Я думаю, jVM может переводить байтовые коды в exe (для Windows), и после этого я могу запустить эту переведенную программу без JVM.
Это не правильно.
На самом деле JIT-компиляторы Hotspot работают, компилируя отдельные методы в собственный код внутри работающей JRE. Обычно они пытаются компилировать методы только после того, как их несколько раз вызывали для сбора статистики по типичным путям выполнения. Компиляторы Hotspot JIT никогда не производили exe.
1) Как я могу это сделать (создать собственный исполняемый файл из Java)?
Существуют сторонние приложения, которые будут делать это. Однако, делая это, вы теряете много преимуществ JIT-компиляции, таких как оптимизация шаблонов выполнения текущего запуска программы.
2) Какова будет производительность JVM, производимой в сравнении с тем же приложением C?
Это зависит от приложения.
3) Как Java будет обрабатывать статические и динамические ссылки?
Java не справляется с этим. Это зависит от стороннего приложения, которое вы используете для создания исполняемого файла.
Я бы порекомендовал не идти по этому пути. Если вам важно распространять свой код в виде файлов «.exe», вам, вероятно, не следует использовать Java.