Что такое динамическое связывание?

Читая спецификацию 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. «Еще не определенные символы» - это те же символы, о которых идет речь в предыдущем тексте, за исключением тех символов, которые могут оказаться уже разрешенными, поскольку реализация должна их запомнить. «Преобразует доступ к переменным в соответствующие смещения в структурах хранения» становится понятным, если вы попытаетесь представить, как бы вы реализовали объекты и их данные экземпляра.

Holger 05.04.2018 18:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
402
0

Другие вопросы по теме