¿Puedes tener Java compilado directamente en el código de la máquina?
Quiero hacer esto para tener control sobre las plataformas en las que se usa y no sé C, C ++, etc.
Parece que el compilador GNU para Java puede convertir el código fuente de Java en código de bytes de Java o código de máquina. También puede convertir el bytecode de Java existente en código de máquina. Sin embargo, las últimas noticias son de 2009, por lo que no estoy seguro de qué tan actual sea y si puede manejar las últimas características del lenguaje Java.
No respondiendo directamente al OP, pero quizás sea un lado interesante. Java se puede ejecutar en tres modos:
-Xint
indicador - Interpretado - Solo código de bytes-Xcomp
bandera - Compilado - compilado a máquinafuente
-Xcomp
porque no pude encontrarlo en la documentación de JDK 7 o en la documentación de opciones de HotSpot y no estoy seguro si tiene algunos secretos ocultos en la lista de correo que nosotros, los simples mortales, no conocemos :-)javac
? cuando se usa -Xcomp, ¿genera de manera predeterminada un solo archivo binario?Sería mejor detectar el sistema operativo usando System.getProperty ("os.name") . Eso le permitiría elegir admitir más de un sistema operativo, pero excluir otros.
fuente
java -Dos.name=MacOS
.Ahora es: GraalVM le permite compilar sus programas con anticipación en un ejecutable nativo. Eche un vistazo a la función de imagen nativa :
Resumen
https://www.graalvm.org/docs/getting-started/#native-images
Demos: Imágenes nativas para un inicio más rápido
https://www.graalvm.org/docs/examples/native-list-dir/
Detallado: 'Compilación anticipada'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Pregunta relacionada: '¿Puedo compilar Java en código nativo?' https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050
PS GCJ ya no se mantiene.
Fuente: 'The Deletion of gcj' http://tromey.com/blog/?p=911
fuente