Où est le Just-In-Time compiler (JIT) Java?

faly
Où est le Just-In-Time compiler (JIT) Java?

Bonjour à tous,

Je viens de chercher sur le net le fonctionnement des JIT Java et il me reste cependant, en suspens, les questions suivantes et je voulais svp avoir votre avis la-dessus:

1- Existe-t-il un JIT préfourni avec JDK? (je suis à 5.0 sous windows)

2- En attendant une réponse claire à la question 1, j'ai trouvé moi-même un soi-disant JIT, celui de symantec dont le nom est "symcjit.dll". J'ai essayé de l'utiliser et d'après mes recherches, pour utiliser un JIT, il faut le mettre dans le répertoire jre\bin et faire "java -Djava.compiler=symcjit MyApp".
Le hic, c'est que je ne sais pas s'il a bien trouvé mon symcjit.dll et qu'il l'a bien utilisé. Car si je remplace le "symcjit" de la ligne de commande par "toto", le résultat est le même: aucun message d'avertissement.
J'ai pourtant lu qqpart sur le net que quand les JIT ne sont pas trouvés par java, des messages du style:
"#Warning: JIT compiler "[myJIT]" not found. Will use interpreter".
apparaissent. J'attendais de le voir pour toto mais rien n'y fut.

Comment puis-je donc m'assurer qu'il utilise réellement mon symcjit?

Merci pour votre aide.

Faly

fredericmazue

Quote:

Comment puis-je donc m'assurer qu'il utilise réellement mon symcjit?

Tu demandes la version de la JVM, ça doit te dire quel JIT est utilisé:

C:\>java -version
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode)

Là tu vois que le JIT c'est Hot Spot.

Le JIT de Symantec, ça ne date pas un peu ça ? Pas sûr qu'il soit meilleur. Mais bon faut essayer pour le savoir :)

faly

fredericmazue wrote:

Tu demandes la version de la JVM, ça doit te dire quel JIT est utilisé:

C:\>java -version
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode)

Là tu vois que le JIT c'est Hot Spot.


D'accord, merci. Donc, si j'ai bien compris, le JIT "par défaut" de java, c'est HotSpot et que ce HotSpot est automatiquement activé sauf si on met qqch du style "-Djava.compiler=NONE". C'est bien cela?
Ceci répond donc à ma question 1)

Quote:

Le JIT de Symantec, ça ne date pas un peu ça ? Pas sûr qu'il soit meilleur. Mais bon faut essayer pour le savoir :)

Oui, mais justement, si je souhaite l'utiliser (lui ou un autre JIT d'ailleurs), comment l'activer alors, et s'assurer que c'est bien lui qui fonctionne?...

Merci

Faly

fredericmazue

et bien comme je viens de te le dire

java -Djava.compiler=symcjit MyApp -version

et tu regardes ce que ça dit.

fredericmazue

pardon je voulais dire:

java -Djava.compiler=symcjit -version

Sans le MyApp donc

faly

fredericmazue wrote:
pardon je voulais dire:

java -Djava.compiler=symcjit -version

Sans le MyApp donc


Ok, j'ai essayé; et que ce soit toto ou symcjit, ça me donne toujours globalement
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, interpreted mode, sharing)

Il ne trouve donc pas mon jit mais c'est pas grave. J'aurai au moins compris le mécanisme.

merci en tout cas

Faly

fredericmazue

Quote:

Il ne trouve donc pas mon jit mais c'est pas grave. J'aurai au moins compris le mécanisme.

Soit il ne le trouve pas parce que tu ne l'a pas déposé où il faut, soit il le trouve et ça ne lui convient pas. Et dans les deux cas il revient (je suppose) au JIT par défaut, c'est à dire Hot Spot. Le JIT Symantec c'et déjà de l'histoire (très) ancienne. Je ne suis pas sûr que ça soit interessant de l'utiliser en admenttant que ça soit encore possible.

Tu as quelque chose contre Hot Spot ?