Аннотация
- Докладчик
- Антон Котенко
GWT — это библиотека инструментов от Google для написания сложных (и не очень) веб-приложений на Java с последующей трансляцией в качественно оптимизированный, кроссбраузерный JavaScript. В библиотеке обеспечена возможность создания декларативного пользовательского интерфейса, а также доступно множество готовых компонентов — от кнопок до разнообразных лэйаутов.
Я расскажу о самой библиотеке GWT, о библиотеке mvp4g, значительно упрощающей работу по концепциям MVP и поддерживающей мульти-модульную архитектуру проекта, и о том как это сочетание используется в нашем текущем проекте, о наших достижениях, ошибках и опыте, который мы получили. Лекция, полагаю, будет интересна и тем, кто работает с GWT и тем, кто хочет подробнее ознакомиться с возможностями обоих библиотек на примере готового крупного проекта.
В каждой части доклада я собираюсь рассказать и о достоинствах и о недостатках того или иного подхода, той или иной библиотеки. Также, если позволит время, постараюсь вкратце затронуть организационные моменты касающиеся разработки на GWT — о том, что нужно учитывать команде проекта при взаимодействии с GWT-разработчиками.
Кстати, для разработчиков десктоп-приложений вход не менее свободный :).
Видео
- Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/1c6-web-development-with-gwt-and-mvp4g-kotenko-ru-p1.avs.avi
- Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/1c6-web-development-with-gwt-and-mvp4g-kotenko-ru-p2.avs.avi
- Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/1c6-web-development-with-gwt-and-mvp4g-kotenko-ru-p3.avs.avi
Для этого доклада нужен подкаст (аудиозапись)?
Примечания и отзывы
- Веб-разработка на GWT и mvp4g (Антон Котенко, ADD-2011)
Идеология GWT. И практика. Я многое знаю по нашим внутренним семинарам, поэтому сначала записывал не столь плотно. Но потом, когда речь пошла о концепциях и их реализации — пошли интересные мысли и размышления. Вообще доклад очень концептуально нагружен, при этом к концепциям добавлены реализации — это очень хорошо. Разбираясь с GWT следует понимать, что многие решения, которые кажутся недостатками имеют серьезные обоснования и являются результатом компромиссов — и следует разбираться в истории, чтобы понимать логику. А саму технологию он оценивает как зрелую, это не погоня за модой, все разумно и динамично развивается.
Идеология GWT состоит в том, что пишем приложения на Java, а он на лету компилирует в Javascript с учетом конкретного броузера. Очень много вложено в прозрачную передачу броузер-сервер. Это имеет обратную гримасу — любой имеющийся кусок на JS, например, визуальный редактор или google maps можно обернуть в Java и и тогда использовать внутри GWT наряду с остальным. Единственное, кроссброузерным сам не становятся, это на вас.
Model-View-Controller концепция сменилась на Model-View-Presenter — вместо единственного действия «сохранить» активное взаимодействие, интерактив по событиям. Как следствие — появляется концепция Event Bus — шины событий, на которые предполагается подписка. Именно она обеспечивает интерактив, взаимодействие презентеров. При этом View ты можешь подменять, в том числе для целей тестирования, а интерактив презентеров сохраняется.
Еще интересное.
- Deferred Binding — взамен reflection. Динамическое создание интерфейсов. Они сами используют это для кроссброузерных вещей, и примеры были об этом, но в принципе идея понятна — блоки кейсов под случаи, reflection во многом так используется. Это при компиляции (но по месту?)
- Dependency Injection — через GWT Injection/Guice — в динамике. Централизация настроек фабрик и прочего. Я: вообще это важная концептуальная идея, в сторону конфигурационно-ориентированного программирования и решения проблемы настроек.
- Remote Service — для общения с серверами, асинхронное.
- Сейчас нет ориентации на не-java сервер, но можно через request-builder, например, с php.
- Верстальщикам тоже надо использовать gwt, а не html-разметку. Конечно, они могут использовать html и самому обеспечивать кроссброузерность. Но gwt все равно делает div и прочее для своей обвязки, и получается не слишком комфортно — ни разработчику, ни самому дизайнеру, когда он смотрит результаты.
- Есть проблема, что js-ошибка может покрешить все приложение. Но они дорабатывают, можно перехватывать и обрабатывать.
Дальше было про mvp4g — фреймворк. Заложено мультимодульное программирование, шина событий. Он многое облегчает и активно развивается. Код сильно проще полного gwt-кода. Система аннотаций для кода.