Comment Java linker fonctionne?
Je veux savoir comment Java linker fonctionne. Plus précisément, l'ordre dans lequel il combine les classes, les interfaces, les paquets, les méthodes et les etc dans la jvm-format de fichier exécutable. J'ai trouvé quelques informations ici, mais il n'y a pas beaucoup d'informations sur la liaison de commande.
Que voulez-vous dire par ordonnance? De la première phrase de la page: "La machine virtuelle Java dynamiquement des charges , des liens, et initialise les classes et les interfaces." Par inférence, ce qui est fait sur la demande dans la plupart des machines virtuelles.
Plus au point, que voulez-vous dire par 'linker'? Il n'y a pas une telle chose en Java.
Plus au point, que voulez-vous dire par 'linker'? Il n'y a pas une telle chose en Java.
OriginalL'auteur Kirill Dubovikov | 2011-06-22
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une telle chose comme un Java "linker". Il est, cependant, le concept d'un chargeur de classe, qui - étant donné un tableau de java byte codes de "quelque part" - peut créer une représentation interne d'une Classe qui peut ensuite être utilisé avec
new
etc.Dans ce scénario, les interfaces sont juste des classes spéciales. Les méthodes et les champs sont disponibles lorsque la classe a été chargé.
L'OP liens (heh) à une partie de la JVM spec qui mentionne explicitement la liaison dans le cadre des activités de la JVM effectue après le chargement d'une classe
de cours Java comme un "éditeur de liens". Même si le JLS n'avais pas spécifiquement nommé le processus de "création de liens" (voir JLS 5.4 les liens), il y aurait encore le "concept" (pour réutiliser un mot) d'un éditeur de liens.
pas besoin d'être faux. N'hésitez pas à écrire une meilleure réponse.
Strictement parlant, la JVM n'a pas de lien. Sauf si vous voulez le nom de la compilation JIT de la liaison.
OriginalL'auteur Thorbjørn Ravn Andersen
Tout d'abord: les méthodes sont toujours de la partie d'une classe. Les Interfaces sont en fait que des classes spéciales, et les paquets sont juste une partie du nom complet d'une classe avec un certain impact sur la visibilité et l'organisation physique des fichiers de classe.
Donc la question se résume à: comment une JVM lien des fichiers de classe? La JVM spec-vous lié à dit:
Ainsi, la question ne peut être répondu pour une JVM.
En outre, il ne faut jamais faire une différence dans le comportement des programmes Java, sauf peut-être pour le point exact où les erreurs de liaison résultat lors de l'exécution
Error
cas être jetés.OriginalL'auteur Michael Borgwardt
Java ne fait pas de reliant la façon dont C fait. Le principe de l'unité est la définition de la classe. Beaucoup de la mise en correspondance d'une classe de référence à sa définition qui se passe au moment de l'exécution. Donc, vous pouvez compiler une classe contre une version d'une bibliothèque, mais de fournir une autre version au moment de l'exécution. Si les signatures correspondent, tout sera ok. Il y en a-doublure de constantes au moment de la compilation, mais c'est tout.
OriginalL'auteur sblundy
Comme indiqué précédemment compilateur Java ne dispose pas d'un éditeur de liens. Cependant, JVM a un lien de phase, qui se produisit après la classe de chargement. JVM spec définit au mieux:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.4
OriginalL'auteur Sayat Satybald