Monday, June 18, 2007

GWT Generators (GWT-Exporter as example)

Ray Cromwell на своём блоге закончил цикл статей о том, как использовать генераторы в GWT.

Идея отличная: зачем делать что-то в run-time, если можно сделать то же самое в compile-time? Если можно просто при компиляции сгенерить нужный код?

Мало того, идея совсем не новая - насколько я знаю. есть много "мета-языков", которые делают то же самое.

Но в GWT это интегрировано в сам компилятор: к примеру, для классов, помеченных, как имплементирующие IsSerializable создаются автоматом "стабы", в которых и происходит сериализация/десиализация. В .NET происходит практически то же самое, но в рантайме - создаётся временная сборка, которая сериализует необходимый класс.

Вроде бы то же самое, но есть одно "но" - повторить подобную процедуру достаточно сложно. В GWT с помощью генераторов можно это сделать намного легче.

Как? Вот статьи Рея и открывают "мистику" генераторов:

GWT Demystified

GWT Demystified: Generators, Part 1

GWT Demystified: Generators Part Deux

и финальная GWT Demystified: Generators Part 3, Meet the Oracle

Так же доступны через svn исходники его проекта GWT-Exporter, позволяющего помечая интерфейсом Exportable генерировать "стабы" для вызова GWT-объектов из JavaScript (без него надо было бы создавать специальные методы для "бриджинга" вызовов к GWT-объектам, так как методы последнего могут быть изменены при компиляции)

В любом случае, очень интересная статейка.

No comments: