GWT делает это из коробки с помощью функции под названием deferred binding
При компиляции приложения GWT компилятор на самом деле генерирует различные версии кода для каждого целевого различных браузеров. это делается автоматически из коробки с компонентами GWT, которые заботятся о разных деталях браузера.
Эта функция может быть расширена до произвольных компиляций продукта на основе пользовательских свойств. здесь приведен упрощенный пример: предположим, у вас есть разные определения представлений для нормального и детального просмотра
public abstract class AbstractView { ....}
public abstract class NormalView extends AbstractView { ... }
public abstract class DetailedView extends AbstractView { ....}
вы можете создать определение модуля, который будет генерировать два различных варианта, один с помощью NormalView
класс другой, используя DetailedView
(в вашем gwt.XML-файл)
<define-property name="customMode" values="normal,detailed" />
<replace-with class="com.example.NormalView">
<when-type-is class="com.example.AbstractView" />
<when-property-is name="customMode" value="normal" />
</replace-with>
<replace-with class="com.example.DetailedView">
<when-type-is class="com.example.AbstractView" />
<when-property-is name="customMode" value="detailed" />
</replace-with>
использованием
AbstractView view = GWT.create(AbstractView.class);
обеспечит соответствующий экземпляр во время выполнения.
Это зависит от вас, чтобы инкапсулировать ваш конкретный код клиента в определенные классы и выставить общие интерфейсы для разных реализаций.
Вам также необходимо выбрать соответствующую скомпилированную версию, согласно клиент в настоящее время просмотра (вы можете использовать JSP для этого.)
пожалуйста, не берут образцы кода выше протестированы, там могут быть проблемы с синтаксисом, он просто намеревался передать общую идею
JSP бэкенд является идеальным хостинг среды для приложения GWT, вы сможете воспользоваться requestfactory м echanism для легкой связи между клиентом и сервером.
Очевидно, что здесь есть кривая обучения, IMO official documentation - хорошее место для начала.
язык агностик для конфигурации? Я так не думаю ..... –