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

Веб-разработка на 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».