Почему GWT использует генераторы кода, а не процессоры аннотаций?

GWT использует генераторы кода с командой GWT.create() для создания реализаций. Это обеспечивает декларативный способ работы в GWT, но я не понимаю, почему это не делается с помощью процессоров аннотаций, как в большинстве java.эта статья — это то, о чем я подумал в оригинале. Похоже, это упростит сборку и позволит вам увидеть ошибки времени компиляции и будет намного более совместимо с обычным java. Это побочный вопрос, но я единственный, кто считает, что GWT должен поддерживать отражение. Я слышал, что это делает код медленнее, но все же. Разве это не стоит в некоторых случаях?


person jgleoj23    schedule 15.01.2015    source источник


Ответы (1)


Вот почему GWT был создан еще до того, как в языке/платформе Java (Java 1.4) появились аннотации.

Однако новые разработки, как правило, склоняются к обработке аннотаций, и в конечном итоге она будет поддерживаться как часть перекомпиляции SuperDevMode (в настоящее время вам нужно запустить процессор аннотаций, а SDM выбирает -модифицированные- сгенерированные источники); одним из примеров является Dagger 2.
Однако я не думаю, что этот подход применим ко всем случаям. где генератор в настоящее время используется в GWT.

Что касается GWT.create(), он по-прежнему будет необходим/полезен для случаев replace with отложенных привязок.


Что касается отражения, то речь идет не о «медленности», а о метаданных, которые необходимо встроить в сгенерированный код JS для поддержки отражения во время выполнения. Учитывая, что все известно во время компиляции, вряд ли есть необходимость в отражении во время выполнения; обычно вы можете использовать код, сгенерированный во время компиляции, вместо отражения во время выполнения. Так что нет, не стоит.

person Thomas Broyer    schedule 15.01.2015
comment
Аннотации поддерживались начиная с Java 1.5 в 2004 году, первый GWT RC был выпущен в 2006 году. Я не могу найти никакой информации, когда проект фактически стартовал. Но даже если бы аннотации существовали тогда, я сомневаюсь, что они все равно использовались бы. Отсутствовала инструментальная поддержка и существовал риск того, что новую технологию не удастся успешно внедрить и широко использовать. - person kapex; 17.01.2015
comment
Ах да, хотя GWT не поддерживал исходные коды Java 5 до версии 1.5, выпущенной в 2008 году. - person Thomas Broyer; 18.01.2015