Comprendre les différences entre compilation statique et dynamique en Java
Un tutoriel de Abdelmajid Lali
Le 2016-12-01 21:27:48, par Mickael Baron, Rédacteur
SOAT, société d'expertise et de conseil en informatique, et Matthieu Lefèvre, vous propose un tutoriel pour présenter les deux types de compilation statique et dynamique proposés par le langage Java.
Voici l'URL du tutoriel : http://soat.developpez.com/tutoriels...que-dynamique/
Si vous avez des commentaires, profitez de cette discussion
Merci d'avance
L'équipe Java
Retrouver les meilleurs cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
Voici l'URL du tutoriel : http://soat.developpez.com/tutoriels...que-dynamique/
Si vous avez des commentaires, profitez de cette discussion
Merci d'avance
L'équipe Java
-
fearyourselfExpert éminent séniorTrès bon article de vulgarisation pour les gens qui veulent connaître Hotspot
Détails:
Tired compilation -> Tiered
TiredCompilation -> Tiered
Figure 3 : Cycle de vie du -> il manque la fin "bytecode" d'après l'article de base
plus de détail) -> détails
Dead code Elimination -> Dead Code
StringBufffer -> StringBuffer
threadSafe -> ThreadSafe
elision -> Elision
garbage collector GC -> Garbage Collector (GC)
plus que de raison -> ne veut rien dire ... plus qu'il ne faille?
L'analyse de l'échappement -> Pas que je suis contre faire des traductions comme cela mais vous avez écrit "Escape Analysis" au début de la section... faut se décider: est-ce qu'on utilise les mots de la littérature et du monde de la compilation en anglais ou est-ce qu'on les rend français: Note je suis contre les écrire en français dans ce cas: le lecteur ne pourra pas trouver d'information supplémentaire dans ce cas...
static . -> espace inutile
Remarques pointilleuses:
Selon une publication d'Eva Andreasson, le gain est un code jusqu'à dix fois plus performant que celui produit par une compilation C0 -> Très discutable. Si on prend n'importe quel code, on peut avoir une optimisation infinie... dire 10x ici n'est qu'une phrase sans but en fait...
Cette partie est inutile:
Objets stockés dans des champs static .
Objets qui sont des attributs d'un autre objet lui-même sujet à l'échappement.
Objets créés, retournés ou non à la fin de l'exécution d'une méthode.
Objets créés à l'intérieur d'une boucle.
vous ne donnez pas assez de détail pour expliquer qu'en gros le compilateur doit prouver que l'objet est créé mais qu'on peut prouver sa mort et donc qu'on peut virer l'allocation sur le tas...
Troll possible:
Techniquement le code montré est incomplet: on ne sait pas ce qu'il se passe dans les appels de fonctions/constructeurs. Il est possible que le code fasse des choses complexes et donc le compilateur ne pourrait rien faire. Je suis pointilleux je sais mais si on suppose qu'on ne sait rien, on ne peut rien faire.
On peut en discuter longtemps:
"Dans ces conditions, et en s'appuyant sur les statistiques d'exécution, la JVM peut décider de ne pas vérifier quelle implémentation ou surcharge de la méthode il faut invoquer." -> non la JVM devra très souvent vérifier quelle implémentation il faut invoquer. La dévirtualisation ne se fait que dans certains cas et ce ne sera jamais parce que pendant l'interprétation ou l'exécution en C1 on ne voit pas de destinations multiples. Si on ne peut pas prouver que ce n'est pas virtuel, on aura un grand if avant l'appel qui sera d'un côté rapide et l'autre lent... En gros, cette explication est trompeuse.
Autre troll:
"C++... car ce dernier ne peut pas éliminer aussi facilement ce coût de vérification." -> oui car le C++ ne vient pas avec le tiered compilation et la JVM autour...
Dernier détail :
"par la compilation JIT" -> inlining peut être fait statiquement aussi. Il se trouve qu'en Java, ce n'est pas fait à cause de la virtualisation...
Encore une fois, super de voir cela sur developpez.com
Jcle 10/12/2016 à 6:27 -
fearyourselfExpert éminent séniorJ'ai aussi remarqué l'autre jour que le lien en haut pour commentez sur l'article est le mauvais lien:
Il va vers:
http://www.developpez.net/forums/sho....php?t=1451851
->
http://www.developpez.net/forums/d14...mplacer-maven/le 19/12/2016 à 17:39 -
Mickael BaronRédacteurSalut,
Merci pour les commentaires.
Comme je ne suis pas auteur, j'ai corrigé la partie orthographique. J'ai demandé à l'auteur de venir répondre pour le reste.
Mickaelle 19/12/2016 à 19:48 -
fearyourselfExpert éminent séniorle 21/12/2016 à 16:29