Compilation à la volée

Définition, exemples et bonnes pratiques

À retenir

  • C'est un compromis entre la flexibilité (code universel) et la performance (vitesse du code machine).
  • La traduction se fait pendant que l'utilisateur utilise le programme.
  • Elle permet des optimisations intelligentes basées sur la façon dont le programme est réellement utilisé.

La compilation à la volée est une technique qui transforme le code d'un programme en instructions compréhensibles par le processeur au moment exact où le logiciel est en train de s'exécuter. Imaginez un chef de cuisine qui ne traduirait une recette étrangère qu'au fur et à mesure qu'il prépare les ingrédients, plutôt que de passer des heures à la traduire entièrement avant de commencer à cuisiner.

Étymologie

Il s'agit de la traduction française du terme anglais Just-In-Time compilation (souvent abrégé en JIT). L'expression souligne l'aspect immédiat et opportuniste de la traduction du code, qui intervient "juste à temps" pour l'exécution.

Exemples d'usage

  • Le moteur V8 de Google Chrome compile le JavaScript à la volée pour rendre les sites web très rapides.
  • La Machine Virtuelle Java (JVM) utilise cette technique pour que les programmes Java fonctionnent rapidement sur n'importe quel ordinateur.
  • L'environnement .NET de Microsoft transforme le code C# en langage machine lors du lancement de l'application.

Cas d'usage

On utilise cette technique principalement pour les langages qui se veulent portables (qui peuvent tourner sur Windows, Mac ou Linux sans modification). Elle intervient massivement dans les navigateurs web, les serveurs d'applications d'entreprise et les jeux vidéo développés avec des technologies comme Unity ou C#.

Bonnes pratiques

Lorsqu'on développe pour un environnement JIT, il faut savoir que le programme peut mettre quelques secondes à atteindre sa vitesse de croisière (c'est le temps de "chauffe"). Il est conseillé de ne pas mesurer les performances d'un logiciel dès la première seconde de son lancement, car le compilateur est encore en train d'optimiser le code en arrière-plan.

Synonymes

JIT traduction dynamique compilation juste-à-temps

Antonymes

compilation statique compilation AOT (Ahead-Of-Time) interprétation pure

Conseil

Si vous apprenez le Java, le C# ou le JavaScript, retenez que c'est grâce au JIT que ces langages sont presque aussi rapides que le C ou le C++. C'est une technologie invisible mais essentielle qui rend le web moderne fluide.

Questions fréquentes

Quelle est la différence avec une compilation classique ?

La compilation classique transforme tout le code en un fichier exécutable définitif avant même d'ouvrir le programme. La compilation à la volée le fait pendant l'exécution.

Est-ce que cela ralentit l'ordinateur ?

Cela consomme un peu de mémoire et de processeur au début, mais le gain de vitesse final pour l'utilisateur est énorme par rapport à une simple interprétation ligne par ligne.

Pourquoi ne pas tout compiler à l'avance alors ?

Parce que cela obligerait à créer une version différente du logiciel pour chaque type de processeur et de système d'exploitation existant.