• [^] # Re: Compilé ou pas ?

    Posté par . En réponse à la dépêche Mono 1.0 : le singe est laché. Évalué à 10.

    C'est un FUD classique concernant IL. Le bytecode Java n'a pas été conçu spécifiquement pour être interprété mais plutôt pour proposer une sorte d'assembleur de haut niveau portable. D'ailleurs il n'est pratiquement pas interprété dans les machines virtuelles modernes où il presque systématiquement compilé au vol. La différence fondamentale entre IL et le bytecode de la JVM est que certaines instructions IL ne peuvent pas être interprétées efficacement. Par exemple, il n'y a pas une variante de l'instruction add pour chaque type fondamental (contrairement au bytecode de la JVM) ce qui fait que l'intepréteur devrait accéder à des informations globales à la méthode en cours d'exécution pour savoir quelle instruction native appeler. Au contraire, le bytecode de la JVM contient des variantes qui permettent une interprétation plus efficace que dans le cas de IL. Il est donc plus simple mais en déduire (comme le fait MS dans son marketing éhonté) que IL est optimisé pour le JIT est une vaste blague. En fait IL est d'encore plus haut niveau que le bytecode de la JVM et constitue en ce sens un vrai langage intermédiaire. C'est d'ailleurs un des éléments très positifs de .NET, mais bon, ce n'est pas une raison pour se faire l'écho du pipo de MS.