Le code Java est normalement distribué sous forme de bytecode, qui est pseudocode indépendant de la machine . (La même idée a été utilisée précédemment dans Système UCSD-p développé dans les années 70). L'avantage de cette méthode est que la même application peut être exécutée sur différents processeurs et systèmes d'exploitation. En outre, le bytecode est souvent plus petit que l'application compilée.
L'inconvénient est que l'interprétation du code est lent par rapport à l'exécution d'un code compilé. Pour résoudre ce problème, Compilateur JIT a été développé. Le compilateur JIT compile le code en code machine juste avant l'exécution du code. Cela accélère l'exécution par rapport à l'interpréteur, mais un temps supplémentaire est consacré à la compilation à chaque fois que le programme est exécuté. En outre, comme le compilateur JIT doit compiler rapidement, il ne peut pas utiliser les techniques d'optimisation complexes qui sont utilisées dans les compilateurs statiques.
Une autre approche consiste à HotSpot la compilation. Il fonctionne initialement comme un interprète, mais détecte ensuite les routines les plus utilisées et ne compile que celles-ci. L'avantage est qu'il n'y a pas de retard initial dû à la compilation. En outre, le compilateur HotSpot peut effectuer un profilage pendant l'exécution, puis fournir une optimisation plus forte pour les routines les plus importantes. Il peut même recueillir des informations de sorte que lorsque vous exécutez la même application encore et encore, elle s'exécute de plus en plus rapidement. Vous trouverez de plus amples informations sur la compilation HotSpot à l'adresse suivante cet article (tnx Pangea pour le lien).
Bien sûr, au lieu d'utiliser un compilateur JIT, vous pourriez simplement utiliser un compilateur statique pour compiler le bytecode pour votre machine. Cela permet une optimisation complète et vous n'avez pas besoin de compiler à nouveau à chaque fois que vous exécutez l'application. Toutefois, dans les téléphones et les pages Web, vous n'exécutez souvent le code (ou l'applet) qu'une seule fois, de sorte que le compilateur JIT peut être un meilleur choix.
Mise à jour
Les fichiers bytecode Python ont l'extension .py. Lorsque vous exécutez le fichier bytecode, le compilateur JIT Python produit un fichier compilé .pyc. La prochaine fois que vous exécutez le même programme, si le fichier .py n'a pas changé, il n'est pas nécessaire de le compiler à nouveau, mais Python exécute le fichier .pyc précédemment compilé. Cela permet d'accélérer le démarrage du programme.
3 votes
Duplicata possible de Que fait un compilateur juste-à-temps (JIT) ?