Читая спецификацию JVM-8, я пытаюсь понять, что такое динамическое связывание.
2.6.3 Dynamic Linking
Each frame (§2.6) contains a reference to the run-time constant pool (§2.5.5) for the type of the current method to support dynamic linking of the method code >>(1)<< . The class file code for a method refers to methods to be invoked and variables to be accessed via symbolic references >>(2)<< . Dynamic linking translates these symbolic method references into concrete method references, loading classes as necessary to resolve as-yet-undefined symbols, and translates variable accesses into appropriate offsets in storage structures associated with the run-time location of these variables >>(3)<< . This late binding of the methods and variables makes changes in other classes that a method uses less likely to break this code.
(1) Что такое «тип текущего метода»? это класс, в котором определен метод, или тип возвращаемого значения метода?
(2) "Код файла класса для метода" Здесь имеется в виду файл .class, в котором определен метод, верно?
(3) .1 «Динамическое связывание переводит эти символические ...» можем ли мы сказать, что «динамическое связывание» - это процесс преобразования символьных ссылок на методы в конкретные ссылки на методы, загрузки классов ... и т. д.?
(3) .2 В чем именно разница между символьными и конкретными ссылками на методы, наверное, было бы неплохо упомянуть, как метод представлен в памяти?
(3) .3 «разрешить еще не определенные символы», что это за «еще не определенные символы»?
(3) .4 "переводит доступ к переменным в соответствующие
смещения в структурах хранения, связанные с местоположением этих переменных во время выполнения "Я ничего не понимаю из этого предложения.




Нет, «нехорошо упоминать, как метод представлен в памяти», поскольку в спецификации не предполагается, как он должен быть реализован. Представление в памяти зависит от JVM. «Еще не определенные символы» - это те же символы, о которых идет речь в предыдущем тексте, за исключением тех символов, которые могут оказаться уже разрешенными, поскольку реализация должна их запомнить. «Преобразует доступ к переменным в соответствующие смещения в структурах хранения» становится понятным, если вы попытаетесь представить, как бы вы реализовали объекты и их данные экземпляра.