Персональные инструменты
 

Веб-разработка на GWT и mvp4g (Антон Котенко, ADD-2011)

Материал из CustisWiki

Перейти к: навигация, поиск

Аннотация

Докладчик
Антон Котенко

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-кода. Система аннотаций для кода.


2807.jpg


Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».

Репликация: База Знаний «Заказных Информ Систем» → «Веб-разработка на GWT и mvp4g (Антон Котенко, ADD-2011)»