Отложенная привязка - ответ Google Web Toolkit на отражение Java.
Проще всего объяснить Отложенное обязательство, начиная с использования. У каждого веб-браузера есть свои особенности, обычно их много. (Исключительное неуправляемое количество из них - проблема, с которой GWT был создан для решения в первую очередь.) Стандартный способ Java, связанный с особенностями, заключался в инкапсулировании пользовательского кода в подклассы с одним подклассом для каждого поддерживаемого браузера. Во время выполнения приложение будет использовать рефлексию и динамическую загрузку классов, чтобы выбрать соответствующий подкласс для текущей среды, загрузить класс, создать экземпляр, а затем использовать этот экземпляр в качестве поставщика услуг для продолжительности программы.
Это действительно то, что делает GWT. Однако среда JavaScript, в которой в конечном итоге выполняются приложения GWT, не поддерживает динамическую загрузку классов (также известную как динамическая привязка). Конечно, вы можете включить код для поддержки каждого браузера в своем сгенерированном JavaScript-коде, но для этого вы должны включить поддержку для всех браузеры находятся в одном файле приложения. Зачем пользователю Opera нужно загружать код, специфичный для Firefox, когда нет шансов, что она когда-нибудь понадобится?
Поскольку динамическое связывание недоступно в качестве метода для GWT, GWT вместо этого использует отложенную привязку. Один из способов думать об этом - это "динамическая загрузка класса, которая возникает во время компиляции, а не времени выполнения". Когда компилятор GWT компилирует ваше приложение Java, он определяет все различные "особенности", которые он должен поддерживать, и создает отдельную, сильно упрощенную версию приложения для этой конкретной конфигурации. Например, он генерирует другую версию файла приложения для Firefox, чем для Opera.