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

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

    Euh à partir du moment où en Java tu es obligé de commencer en mode interprété, c'est que c'est pas terriblement optimisé pour être compilé

    C'est faux. GCJ compile du java en code NATIF ! Il est de plus parfaitement possible de faire du JIT sans jamais interpréter le code. Je n'ai par regardé les sources de Kaffe, mais il me semble que sur une des anciennes versions, on pouvait avoir un JIT systématique. J'ai l'impression d'ailleurs que tu confonds la vérification du bytecode, étape présente aussi en IL, qui consiste effectivement en une interprétation abstraite du code, et l'exécution proprement dite.

    Java a été conçu pour être inteprété

    Ce n'est pas en répétant une chose fausse qu'on la fait devenir vraie. Je ne dit pas que la possibilité d'interprétation ne faisait pas partie du cahier des charges du bytecode JVM (alors qu'effectivement il est clair que cette possibilité ne faisait pas partie de celui de IL), mais d'autres éléments ont dirigé la conception.

    bah vi dès le départ on peut compiler le code IL contrairement au bytecode qui n'est pas conçu et donc optimisé pour

    Vu que tu affirmes avec beaucoup de force ce genre d'argument, j'aimerais que tu détailles. Ne te fais pas soucis, j'ai lu la spec de la machine virtuelle Java et la spec de LI, donc je connais un peu. Oui, IL a été conçu pour ne pas être interprété, donc quand on l'inteprete, ça rame. Maintenant donne moi un seul exemple, du même genre que celui que je donne plus haut, qui montre que le code obtenu après JIT est moins performant pour le bytecode de la JVM que pour le LI. Ou un exmple où le JIT du bytecode prendra significativement plus de temps que le JIT du LI...