Ответы:
Похоже, что GNU Compiler for Java может конвертировать исходный код Java в байт-код Java или в машинный код. Он также может конвертировать существующий байт-код Java в машинный код. Тем не менее, последние новости за 2009 год, поэтому я не уверен, насколько они актуальны и могут ли они справиться с последними функциями языка Java.
Не совсем прямой ответ на ФП, но, возможно, интересный в стороне. Java может работать в трех режимах:
-Xint
флагом - Интерпретировано - Только байт-код-Xcomp
флагом - Скомпилировано - Машина скомпилирована-Xcomp
потому что я не смог найти ее в документации JDK 7 или документации по параметрам HotSpot и не уверен, что у вас есть какие-то скрытые секреты списка рассылки, о которых мы, простые смертные, не знаем :-)
javac
? при использовании -Xcomp выводит ли он по умолчанию один двоичный файл?
Возможно, лучше определить операционную систему с помощью System.getProperty («os.name») . Это позволило бы вам поддерживать более одной ОС, но исключать другие.
java -Dos.name=MacOS
.
Это сейчас: GraalVM позволяет вам заранее скомпилировать ваши программы в собственный исполняемый файл. Взгляните на функцию родного изображения :
Резюме
https://www.graalvm.org/docs/getting-started/#native-images
Демоверсии: собственные изображения для более быстрого запуска
https://www.graalvm.org/docs/examples/native-list-dir/
Подробно: «Опережающая сборка»
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Смежный вопрос: «Могу ли я скомпилировать Java в нативный код?» https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050
PS GCJ больше не поддерживается.
Источник: «Удаление gcj» http://tromey.com/blog/?p=911