Google Web Toolkit 2.0 Новые возможности

Это не официальный перевод документации Google Web toolkit, оригинал What's New in 2.0.
Перевод по собственной инициативе осуществляли:
Васильев Андрей (http://www.google.com/profiles/112202968620375558084#buzz) и
Камнев Георгий (https://www.google.com/profiles/100292672883824156195#buzz)
Вы уважаемый читатель можете внести свой вклад в данный учебник прислав свои замечания и пожелания или дополнения к данному учебнику по адресу указанному на сайте http://cofe.tv (раздел Контакты).
PDF Версия

Новые возможности

Режим разработки

Одно из самых больших изменений, которые вы заметите в версии 2.0 GWT - это режим разработки, который заменяет то, что раньше называлось "host mode" (режим хоста). До версии 2.0 отладка осуществлялась в "host" режиме при наличии специального браузера (это был переработанный firefox, входивший в состав SDK). Сейчас для версии GWT 2.0, веб-приложение разрабатывается и отлаживается в браузере (Safari, Firefox, Internet Explorer, и Chrome) c плагином Google Web Toolkit для разработчиков, который доступен для большинства популярных браузеров. Иными словами, теперь можно разрабатывать и отлаживать код для различных браузеров: Safari, Firefox, Internet Explorer, и Chrome.



И не только это, исходный код даже не обязательно должен быть для той же операционной системой что и браузер! Например, можно разрабатывать и отлаживать код на Linux, пока ваше приложение  работает в Internet Explorer на отдельной системе. Для получения дополнительной информации см. Руководство разработчика по отладке в режиме разработки.

Используя отладку кода непосредственно в браузере, режим разработки позволяет использовать собственные, уникальные для каждого браузера, инструменты разработки в сочетании с отладкой Java. Так и есть, теперь вы можете отлаживать исходный код Java в Firefox и одновременно, использовать такие инструменты, как Firebug для просмотра DOM структуры и экспериментировать с CSS. То же относится к Safari и Инспектору, и так далее для других браузеров.

Режим разработки также поддерживает меж-браузерную отладку кода, а это означает, что вы можете подключиться к сеансу отладки более чем одним типом браузера. Это особенно хорошо согласуется с возможностью покинуть работающую сессию режима разработки на продолжительное время, это позволяет простым обновления браузера просматривать результаты изменения в Java коде. Это отличный способ быстро убедиться, что ваш проект работает правильно во всех основных браузерах, без необходимости перезагрузки в отладчике Java.

Наконец, новый плагин Google для Eclipse включает в себя поддержку запуска и управления режимом разработки, включая новый встроенный режим отображения логов (eclipse view), логи отображаются непосредственно в Eclipse. Кроме того, можно запустить режим разработки вручную, используя Swing-интерфейс можно работать совершенно вне контекста Eclipse, например в Netbeans (для Netbeans есть соответствующий плагин) или других IDE.

Анализ производительности Speed Tracer

Speed Tracer это новый инструмент, который позволяет обнаружить и устранить проблемы производительности в web-приложениях. Он визуализирует измерения взятые из браузера и анализирует их во время работы приложения. Используя Speed Tracer, можно получить лучшее представление о том где тратится время в работе приложения.
Speed Tracer разбивает приложение на следующие части:
  • Синтаксический анализ JavaScript и его выполнение
  • Планировки (layouts) и всевозможные графики 
  • Вычисление CSS стилей и селекторов CSS
  • Обработка событий DOM
  • Загрузка сетевых ресурсов
  • События таймера
  • XMLHttpRequest callbacks
  • и многое другое ...
См. Speed Tracer Getting Starting guide для более подробной информации.

Управляемое разработчиком разделение кода

Управляемое разработчиком разделение кода, позволяет разделить ваш GWT код на множество фрагментов для более быстрого старта. Представьте себе, что бы посмотреть весь фильм необходимо весь его загрузить. Ну, вот тоже вам нужно сделать с большинством приложений Ajax, скачать все целиком перед использованием. С расщеплением кода, вы можете загрузить минимальный сценарий, необходимый для получения интерактивного приложения, а остальные приложения загружаются по мере необходимости.

Например, представьте, что вы создаете приложение электронной почты. Ваше приложение будет иметь некоторые ключевые компоненты, такие, как умение читать и писать письма. Тем не менее, у вас также будет много второстепенных функций, таких как редактирование профилей пользователей, настройка автоответчика, а также управление вашими контактами. С расщеплением кода, можно создавать приложение для скачивания только базовой функциональности, которая позволяет пользователям взаимодействовать с их электронной почтой в кратчайшие сроки. Код, необходимый для дополнительных функций, не будет загружаться, пока пользователь не потребует этого.

Это может показаться сложным, но расщепление кода на самом деле легкое занятие. Просто найдите место в вашем проекте, где вы хотите разделить некоторый код и используйте метод GWT.runAsync () для создания точки разделения. Продолжая добавлять точки расщепления там, где это имеет смысл, вы можете легко и безопасно разделить код так что бы начальная загрузка когда была минимальна. Компилятор автоматически организует дополнительные фрагменты кода для загрузки позже. И, в отличие от расщепления вручную через тег <script type="text/javascript" ...>, компилятор GWT сделает весь этот тяжелый труд вручную, обеспечит, чтобы  все зависимые части приложения загрузились в правильной последовательности автоматически. Для примера чтобы продемонстрировать расщепление кода см. приложение Витрина включенное в состав в GWT SDK, который был обновлен.

См. Руководство разработчика по расщеплению кода для более подробной информации.

Оптимизация компилятора

В дополнение к расщеплению кода так же существуют фундаментальные улучшения способности компилятора генерировать JavaScript. С каждой новой версией GWT, мы добавляем оптимизацию компилятора, чтобы скомпилированный JavaScript был меньше и быстрее. Это большое преимущество, если у вас уже есть проекты GWT, потому что вы можете просто обновить, скомпилировать и - пуф - приложений запускается и работает быстрее. Действительно, GWT 2.0 включает в себя несколько удачных новых оптимизаций, и мы уже слышали анекдоты о сокращении размера в сжатом JavaScript от 3% до более чем 20% от исходного размера.

Сырая компиляция

Если вам нужно часто компилировать код в JavaScript - хотя и надеюсь режиме разработки потребность в этом будет не велика - вы можете использовать новый флаг компилятора draftCompile, который ускоряет компиляцию, пропуская оптимизации. Чтобы было ясно, вам определенно не следует развертывать (deploy) JavaScript скомпилированным таким образом, но можно сэкономить время на непроизводственных компиляциях (non-production builds).

Декларативный пользовательский интерфейс

С UiBinder, GWT теперь позволяет создавать пользовательские интерфейсы декларативно в XML вместо того, чтобы собрать их программно. Файл XML поддерживает следующие функции: код пользовательского интерфейса меньше, более удобен для чтения, проще в обслуживании и быстрее в разработке:
  • Указание CSS стилей локально, без беспокойства о дублировании CSS имен.
  • Смешивание GWT виджетов с родным HTML для более быстрых и эффективных приложений.
  • Удобную поддержку связанных ресурсов и интернационализации.
UiBinder это отличный способ сотрудничества программистов с дизайнерами пользовательского интерфейса, которым более привычно использовать XML, HTML, CSS чем Java код. Он также облегчает переход от HTML макетов к реальному интерактивному виджету. Например, разработчики могут копировать / вставить HTML-код предоставляемый веб-дизайнерами. Мы также видели, что некоторые веб-дизайнеры, любят изменять UiBinder XML шаблоны и использовать быстрый цикл режима разработки отредактировать/обновить, пока они экспериментируют с дизайном интерфейса. Это гораздо веселее проектировать с использованием интерактивных виджетов, чем пассивное издевательство над HTML.

UiBinder также помогает предотвратить попадание мелких ошибок, такие как опечатки в идентификаторах, в продукте путем проверки всех перекрестных ссылок между .ui.xml и .java файлами во время компиляции.

Чтобы помочь вам эффективно использовать UiBinder Google плагин для Eclipse в настоящее время обеспечивает поддержку UiBinder-а своими wizarda-ми, завершение кода, подсветка ошибок, и рефакторинг.

Демо приложение Mail было обновлено, чтобы показать практический пример использования UiBinder. Вы также можете прочитать Руководство разработчика по декларативной компоновке с UiBinder для получения дополнительной информации.

Панели компоновки

Создать такой внешний вид вашего пользовательского интерфейса какой вы хотите традиционно является сложным с HTML и CSS. До 2.0 GWT, даже виджеты GWT были не в состоянии полностью абстрагироваться от некоторых проблем с компоновкой, которые могут возникнуть. Однако, GWT 2.0 представляет панели компоновки, которые действительно позволяют надежно создавать нужный макет. Демо-приложение Mail в GWT SDK было обновлено, чтобы показать вам, как это работает

Панели компоновки создают предсказуемую, основанную на ограничениях систему компоновки поверх стандартного CSS. Потому что это работает с CSS, а не вопреки ему, панели компоновки продолжают работать предсказуемо в присутствии пользовательских стилей CSS, которые вы возможно захотите включить. И потому, что основанный на CSS макет выполняется внутри, на движке браузера, JavaScript для этого не понадобится. В результате, макет работает быстро и плавно - вы можете заметить скорость особенно при изменении размера окна браузера.

Как и следовало ожидать, работа панелей компоновки, особенно хороша с UiBinder. Только несколькими строками из XML, можно создать очень сложные схемы, в том числе анимированные переходы, сплиттеры и многое другое.

Связанные ресурсы с помощью ClientBundle

GWT представил ImageBundle в версии 1.4, чтобы обеспечить автоматический spriting изображений. ClientBundle обобщает эту технику, принося мощность объединения и оптимизации ресурсов в один загружаемый файл для таких вещей, как текстовые файлы, CSS и XML. Это означает меньшее количество обращений к сети, которая, в свою очередь, может уменьшить латентность приложения, особенно на мобильных устройствах. Смотрите в Руководстве разработчика, раздел по ClientBundle, для дополнительной информации.

Тестирование с помощью HtmlUnit

GWT версии 2.0 теперь кроссплатформен, GWTTestCase больше не использует SWT или native версии кода фактических браузеров для запуска модульных тестов. Вместо этого он использует HtmlUnit как встроенный браузер. Так как HtmlUnit полностью написана на языке Java, то уже нет native кода участвующего в типичной тестируемой разработке. Отладку GWT тестов в режиме разработки можно произвести исключительно в отладчике Java.

Кроме того, GWT предлагает множество способов выполнения тестов в различных обозревателях, включая поддержку выполнения тестов в режиме разработки на любом браузере. См. Руководство разработчика разделы HtmlUnit и тестирование с помощью JUnit для получения дополнительной информации.

Обновление

Есть 3 задачи, связанные с обновлением 1.7 GWT проекта до GWT 2.0 проекта:
  • Скачать GWT 2,0 и обновить ваши конфигурации запуска.
  • HostedMode был заменен DevMode, так что вам будет необходимо обновить настройки проекта в Eclipse соответственно.
  • Тесты в настоящее время работают в HtmlUnit по умолчанию. Вам нужно будет изменить некоторые из ваших тестов для работы с HtmlUnit.

Загрузка GWT 2.0

Скачайте GWT 2.0 со страницы загрузки и распакуйте его в папку по вашему выбору. GWT 2.0 поставляется в одном zip-архиве для всех платформ, так что вам не нужно загружать пакеты для каждой платформы. Если вы используете Eclipse для разработки, вы должны также скачать плагин Google для Eclipse на той же странице загрузки.

Обновите путь сборки вашего GWT-проекта для использования последних GWT-user.jar и GWT-dev.jar (и любые другие jar файлы GWT, те что вы включили в ваш classpath). Заменить ссылки на gwt-dev-<платформа>.jar ссылками на новый gwt-dev.jar (больше нет суффикса конкретной платформы).

Обновите конфигурации запуска или компиляции и shell-скрипты, чтобы включить в последние JAR-ы в classpath (те же Jar-ы, что упомянуты в пункте 2).

Выполните компиляцию вашего GWT проекта для создания последних GWT-файлов приложения для вашего проекта.

Развертывайте последние GWT-файлы приложения на ваш веб-сервер.

Переход от HostedMode к DevMode

После обновления библиотек (jar) до версии 2.0, вы увидите следующее сообщение при запуске режима разработки с использованием HostedMode:
[WARN] The class com.google.gwt.dev.HostedMode is deprecated and will be removed --
use com.google.gwt.dev.DevMode instead.
В целях устранения этого предупреждения, следует изменить свой основной класс com.google.gwt.dev.HostedMode на com.google.gwt.dev.DevMode.

Как только вы запускаете режим разработки, вы можете выбрать для запуска браузер по умолчанию или скопировать URL режима разработки в буфер обмена и вставить его в свой любимый браузер. В любом случае, вам будет предложено установить Google Web Toolkit плагин в первый раз, когда вы подключите Ваш браузер к серверу кода в режиме разработки. Установите плагин и перезапустите браузер.
Для получения дополнительной информации об отладке в режиме разработки, прочитайте Руководство разработчика по отладке в режиме разработки.

HtmlUnit и Тесты

В GWT 2.0, GWTTestCases использует HtmlUnit как встроенный браузер. HtmlUnit является браузером без графического интерфейса (GUI) на базе Java, который имитирует другие популярные браузеры, такие как Firefox (по умолчанию) или Internet Explorer. Это означает, что тесты выполняются быстрее и отладка в режиме разработки может быть сделана исключительно в отладчике Java.

Так как HtmlUnit браузер без GUI, макет не может быть проверен на HtmlUnit. Пример теста компоновки - проверка offsetWidth в виджете прикрепленном к странице. Вам нужно будет аннотировать любые тестовые методы и классы, основанные на компоновке, с помощью @DoNotRunWith, чтобы они не выполнялись с использованием HtmlUnit.

HtmlUnit иногда ведет себя несколько иначе, чем реальные браузеры, которые он имитирует. В частности, асинхронные тесты порой ведут себя непредсказуемо в HtmlUnit. Вы можете указать, сколько раз тест должен быть выполнен повторно передав -Xtries n (где n количество повторов теста перед сообщением об ошибке) в JUnitShell. Для получения дополнительной информации, читайте Руководство разработчика, раздел по HtmlUnit.

Если вы хотите запустить GWTTestCases в реальном браузере, например, потому что они используют макет, вам придется использовать один из других стилей запуска тестирования. Все стили запуска поддерживают оба способа тестирования, в режиме разработки и в продуктивном режиме (production).
  • Ручной режим позволяет копировать и вставлять URL в браузер, где тест будет выполняться. Это полезная опция для выполнения тестов во время разработки.
  • Стиль запуска Selenium проходит тесты подключаясь к серверу Selenium, который является идеальным выбором для систем непрерывной сборки.
  • Стиль запуска Remote Web проходит тесты на системе с работающим BrowserManagerServer предоставляемом GWT. Это альтернативная форма удаленного тестирования, если Selenium не отвечает вашим потребностям.
Смотрите Руководство разработчика  раздел о тестировании с помощью JUnit для получения дополнительной информации.

Примечание: В GWT 2.0, термин "веб режим" был переименован в "production режим". Таким образом, при запуске тестов в режиме промышленной эксплуатации, вам нужно передать -prod флаг в JUnitShell вместо флага -web, который в настоящее время устарел.

Комментариев нет:

Отправить комментарий