web-dev-qa-db-fra.com

Puis-je compiler Java en code natif?

Existe-t-il un moyen de compiler à partir de Java vers du code machine autonome (ou bibliothèque) sans nécessiter de JVM?

67
barroco

Il y avait un outil appelé GCJ qui faisait partie de GCC, mais c'est supprimé . Maintenant, tous les liens du site GCC redirigent vers leurs équivalents non GCJ.

NB: les commentaires faisaient tous référence à ma réponse d'origine disant que vous pouvez compiler Java en code natif avec GCJ.

37
James Kingsbery

Excelsior JET est un commercial Java au compilateur de code natif.

16
Mark

Oui!

Oracle a travaillé sur GraalVm, qui prend en charge les images natives. Vérifiez ici: https://www.graalvm.org/

Image native La fonction d'image native avec le SDK GraalVM permet d'améliorer le temps de démarrage des applications Java et leur donne une plus petite En fait, il convertit le bytecode qui s'exécute sur la machine virtuelle Java (sur n'importe quelle plate-forme) en code natif pour un système d'exploitation/une plate-forme spécifique - d'où proviennent les performances. Il utilise des optimisations agressives à l'avance (AOT) pour obtenir de bonnes performance.

Voir plus:

12
RobAu

Oui, le JIT de la JVM fait exactement cela pour vous.

En fait, il peut produire du code plus rapidement que la compilation du code à l'avance car il peut générer du code optimisé pour la plate-forme spécifique en fonction de la façon dont le code est utilisé au moment de l'exécution.

La machine virtuelle Java est toujours impliquée même si un pourcentage très élevé est compilé en code natif, car vous pouvez charger et exécuter le code d'octets de manière dynamique.

10
Peter Lawrey