Réponses:
Il semble que le compilateur GNU pour Java puisse convertir le code source Java en code bytec Java ou code machine. Il peut également convertir le bytecode Java existant en code machine. Cependant, les dernières nouvelles datent de 2009, donc je ne suis pas sûr de son actualité et s'il peut gérer les dernières fonctionnalités du langage Java.
Ne répondant pas tout à fait directement à l'OP, mais peut-être un côté intéressant. Java peut être exécuté en trois modes:
-Xint
indicateur - Interprété - Code octet uniquement-Xcomp
indicateur - Compilé - machine compilée-Xcomp
parce que je ne l'ai pas trouvé dans la documentation JDK 7 ou la documentation des options HotSpot et je ne sais pas si vous avez des secrets de liste de diffusion cachés que nous, les simples mortels, ne connaissons pas :-)
javac
? lors de l'utilisation de -Xcomp génère-t-il par défaut un seul fichier binaire?
Il peut être préférable de détecter le système d'exploitation à l'aide de System.getProperty («os.name») . Cela vous permettrait de choisir de prendre en charge plusieurs systèmes d'exploitation, mais d'en exclure d'autres.
java -Dos.name=MacOS
.
C'est maintenant: GraalVM vous permet de compiler à l'avance vos programmes en un exécutable natif. Jetez un œil à la fonction d' image native :
Résumé
https://www.graalvm.org/docs/getting-started/#native-images
Démos: images natives pour un démarrage plus rapide
https://www.graalvm.org/docs/examples/native-list-dir/
Détaillé: 'Compilation anticipée'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Question connexe: "Puis-je compiler Java en code natif?" https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050
PS GCJ n'est plus maintenu.
Source: «La suppression de gcj» http://tromey.com/blog/?p=911