À retenir
- Traduit le code pendant l'exécution du programme.
- Offre un excellent compromis entre portabilité (marche partout) et performance (vitesse machine).
- Identifie les portions de code les plus utilisées pour les optimiser en priorité.
Le juste-à-temps est une méthode de traduction du code informatique qui s'effectue pendant que le programme est en train de fonctionner. Au lieu de traduire tout le logiciel à l'avance, l'ordinateur convertit les morceaux de code dont il a besoin au dernier moment pour qu'ils s'exécutent très rapidement sur le matériel utilisé.
Étymologie
Il s'agit d'une traduction de l'anglais Just-in-Time (souvent abrégé JIT). À l'origine, ce terme provient de l'industrie (notamment le système Toyota) pour désigner une production en flux tendu, sans stock. En informatique, le "stock" évité est le code machine pré-généré.
Exemples d'usage
- Le moteur V8 de Google Chrome qui compile le JavaScript pour rendre les sites web fluides.
- La JVM (Java Virtual Machine) qui transforme le bytecode Java en instructions natives pour le processeur.
- Le moteur CLR de Microsoft .NET qui gère l'exécution des applications C#.
Cas d'usage
Ce concept intervient massivement dans le développement d'applications multiplateformes (Windows, macOS, Linux) et dans le web. Il permet de distribuer un code universel qui sera optimisé spécifiquement pour le processeur de l'utilisateur final lors du lancement de l'application.
Bonnes pratiques
Il faut prendre en compte le temps de "préchauffage" (warm-up) : au démarrage, une application JIT peut sembler un peu plus lente car elle est occupée à compiler les premières fonctions. Pour des performances critiques dès la première seconde, on préférera parfois une compilation statique (AOT).
Synonymes
Antonymes
Conseil
Si vous développez en Java, JavaScript ou C#, sachez que c'est cette technologie qui permet à vos programmes d'être presque aussi rapides que s'ils étaient écrits en C++, tout en restant beaucoup plus simples à déployer.
Questions fréquentes
Quelle est la différence avec un interpréteur ?
Un interpréteur lit et exécute le code ligne par ligne (plus lent), tandis que le JIT compile des blocs entiers en langage machine pour qu'ils s'exécutent directement sur le processeur (plus rapide).
Le JIT consomme-t-il plus de mémoire ?
Oui, car il doit garder en mémoire vive le compilateur lui-même et le code machine qu'il vient de générer pendant que le programme tourne.