Відповіді:
Виявляється, компілятор GNU для 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
Демонстрація: 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