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