Un compilateur est un programme logiciel qui convertit le code de programmation informatique écrit par un programmeur humain en code binaire (code machine) qui peut être compris et exécuté par un processeur spécifique. L'acte de transformer le code source en code machine est appelé «compilation». Lorsque tout le code est transformé en même temps avant qu'il n'atteigne les plates-formes qui l'exécutent, le processus est appelé compilation anticipée (AOT).
De nombreux langages de programmation bien connus nécessitent un compilateur comprenant:
Avant Java et C #, tous les programmes informatiques étaient soit compilés soit interprétés.
Le code interprété exécute des instructions dans un programme sans les compiler en langage machine. Le code interprété analyse directement le code source, est associé à une machine virtuelle qui traduit le code de la machine au moment de l'exécution ou tire parti du code précompilé. Javascript est généralement interprété.
Le code compilé s'exécute plus rapidement que le code interprété car il n'a pas besoin de faire de travail au moment où l'action a lieu. Le travail est déjà fait.
Java et C # utilisent des compilateurs juste à temps. Les compilateurs juste à temps sont une combinaison de compilateurs AOT et d'interprètes. Après l'écriture d'un programme Java, le compilateur JIT transforme le code en bytecode plutôt qu'en code contenant des instructions pour le processeur d'une plate-forme matérielle spécifique. Le bytecode est indépendant de la plateforme et peut être envoyé et exécuté sur n'importe quelle plateforme prenant en charge Java. Dans un sens, le programme est compilé en un processus en deux étapes.
De même, C # utilise un compilateur JIT qui fait partie du Common Language Runtime, qui gère l'exécution de toutes les applications .NET. Chaque plate-forme cible dispose d'un compilateur JIT. Tant que la conversion du langage de bytecode intermédiaire peut être comprise par la plate-forme, le programme s'exécute.
La compilation anticipée (AOT) offre un temps de démarrage plus rapide, en particulier lorsqu'une grande partie du code s'exécute au démarrage. Cependant, il nécessite plus de mémoire et plus d'espace disque. La compilation JOT doit cibler la plate-forme d'exécution la moins performante de toutes.
La compilation juste à temps (JIT) décrit la plate-forme cible pendant qu'elle s'exécute et se recompile à la volée pour améliorer les performances. JIT génère du code amélioré car il cible la plate-forme actuelle, bien que son exécution prenne généralement plus de temps que le code compilé AOT.