Jawaban:
Tampaknya Kompilator GNU untuk Java dapat mengubah kode sumber Java menjadi bytecode atau kode mesin Java. Itu juga dapat mengkonversi bytecode Java yang ada ke dalam kode mesin. Namun, berita terakhir adalah dari 2009, jadi saya tidak yakin bagaimana saat ini dan apakah itu dapat menangani fitur-fitur terbaru dari bahasa Jawa.
Tidak secara langsung menjawab OP, tapi mungkin yang menarik. Java dapat dijalankan dalam tiga mode:
-Xint
flag - Diterjemahkan - Kode byte saja-Xcomp
flag - Dikompilasi - mesin dikompilasi-Xcomp
karena saya tidak dapat menemukan bahwa satu di dokumentasi JDK 7 atau dokumentasi opsi HotSpot dan tidak yakin jika Anda memiliki beberapa rahasia milis tersembunyi yang kami, manusia biasa, tidak tahu :-)
javac
? saat menggunakan -Xcomp apakah secara default menghasilkan satu file biner?
Mungkin lebih baik untuk mendeteksi sistem operasi menggunakan System.getProperty ("os.name") . Itu memungkinkan Anda memilih untuk mendukung lebih dari satu OS, tetapi mengecualikan yang lain.
java -Dos.name=MacOS
.
Sekarang: GraalVM memungkinkan Anda mengkompilasi program Anda sebelumnya menjadi executable asli. Lihatlah fitur gambar asli :
Ringkasan
https://www.graalvm.org/docs/getting-started/#native-images
Demo: Gambar asli untuk memulai lebih cepat
https://www.graalvm.org/docs/examples/native-list-dir/
Detail: 'Kompilasi Sebentar Lagi'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Pertanyaan terkait: 'Bisakah saya mengkompilasi Java ke kode asli?' https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050
PS GCJ tidak dipertahankan lagi.
Sumber: 'Penghapusan gcj' http://tromey.com/blog/?p=911