если базовый, пример приложения GWT загружается в браузере в течение 30 секунд, это нормально? Реальные приложения займут 2 минуты? - PullRequest
5 голосов
/ 26 мая 2011

У меня есть приличный компьютер, способный работать под управлением 64-разрядной Windows 7. Так почему же в любой момент я останавливаю небольшое примерное приложение GWT в «режиме разработки», редактирую его и перезагружаю его, требуется 30 секунд, чтобы стать отзывчивым в браузере,как в последнем Firefox, так и в последнем Chrome?

Является ли такой цикл редактирования-компиляции на основе мелассы просто нормальным, ожидаемым в настоящее время разработчиком GWT?

Будет ли намного хуже для более реалистичногоприложения или все эти 30 секунд - это просто накладные расходы фреймворка, и мой собственный код не сделает его намного более раздутым, чем это в ближайшее время?

Можно ли решить эту проблему с помощью какого-либо другого "режима" иликаким другим способом настройки?

Есть ли у людей Google машины намного быстрее, чем у меня, на которых это меньше боли, или они страдают, как и все мы?

Ответы [ 3 ]

12 голосов
/ 27 мая 2011

Во время разработки GWT-приложение можно запускать в разных режимах, и часто возникает путаница, когда необходимо

  • re запустить сервер,
  • re загрузка сервера,
  • обновление браузера,
  • или просто нажатие где-нибудь на веб-странице.

ДавайтеСделайте шаг назад и посмотрите на все различия между Режим разработки / Режим производства , с одной стороны, и "С отладчиком" / "Без отладчика" , с другой стороны.Конечно, все, кто использует GWT, уже слышали о них ...

Режим

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

Запускает на стороне клиента специальный плагин для браузера, который подключается к серверу кода,Вы всегда можете легко определить этот режим, посмотрев на URL-адрес: он будет содержать что-то вроде ?gwt.codesvr=127.0.0.1:9997

Основное преимущество режима разработки состоит в том, что он не требует предварительной компиляции кода для JavaScript -он запускает клиентскую сторону как байт-код Java на сервере кода.По сути, это эмуляция JavaScript - но она настолько близка, что большинство людей уже не замечают разницы (некоторые даже считают, что GWT компилирует Java в JavaScript в режиме разработки, , что не так .)

Поскольку код запускается как байт-код Java, этот режим также позволяет подключить отладчик для кода на стороне клиента, как мы увидим чуть ниже (но вам не обязательно!)

Режим производства

Запускает клиентскую часть как скомпилированный JavaScript.Прежде чем вы сможете его использовать, вы должны сначала использовать компилятор GWT Java to JavaScript (часто известный как gwtc, или «тот, что с toolkit http://code.google.com/webtoolkit/doc/latest/tutorial/images/GWTCompileProject.png icon»)

После его завершения(требуется время!) просто запустите встроенный сервер GWT, как в режиме разработки, но на этот раз удалите ?gwt.codesvr=127.0.0.1:9997 из вашего URL.(В качестве альтернативы вы можете развернуть войну на отдельном сервере (например, Tomcat) и запустить ее оттуда.)

Преимущество здесь в том, что а) вы можете проверить реальный скомпилированный результат, и б) чтоОбновление браузера происходит намного быстрее, чем в режиме разработки.

Запуск

"Без отладчика"

Вы можете просто запустить приложение без подключения отладчика (это возможно как в разработкеи режим производства).Используйте «Run As ...», если вы используете Eclipse.

В режиме разработки это означает, что вы запускаете веб-сервер (встроенный Jetty, обычно на порту 8888) и сервер кода (обычно порт 9997),В рабочем режиме вам не нужен сервер программного кода.

Если у вас есть изменения на стороне клиента , они будут перезагружены при обновлении браузера.Это относительно быстро - вам не нужно перезагружать (кодовый) сервер.Но это не так быстро, как с отладчиком.

Если у вас есть изменения на стороне сервера , вам придется выполнить перезагрузку веб-приложения на сервере (в Eclipse вы используете маленький желтый значок перезагрузки)в представлении «Разработка») Это намного быстрее, чем полный перезапуск сервера, но, опять же, это не так быстро, как с отладчиком!

Development view reload icon

«С отладчиком»

Как в режиме разработки, так и в режиме производства, вы можете запустить приложение с подключенным отладчиком.Используйте «Debug As ...», если вы используете Eclipse.

Для режима разработки отладчик подключается как к клиентской, так и к серверной части кода - тогда как в рабочем режиме он может толькоприкрепить к стороне сервера !

Если у вас есть изменения на стороне клиента с подключенным отладчиком, изменения кода вступят в силу немедленно, поэтому все, что вам нужно сделать, это нажать где-нибудь вваша веб-страница, которая приводит к запуску кода.

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

Все это очень быстро, но недостатком является то, что Java-отладчики могут справляться только с определенными изменениями кода. Если у вас есть более серьезные изменения, отладчик завершит работу, и вам придется перезапустить сервер (я все еще ищу способ просто перезагрузить и снова подключить в этом случае - я думаю, что это возможно, но у кого-нибудь уже есть рабочее решение?)

Кроме того, с отладчиками вам нужно быть осторожным с состоянием вашего приложения. Помните, что изменения в вашем коде не будут переоценивать существующее состояние!


Итак, у вас есть четыре комбинации

  • Режим разработки без отладчика
    • Изменение клиента: использовать обновление браузера (средний)
    • Смена сервера: Re загрузка сервер (быстрый)
  • Режим разработки с отладчиком
    • Смена клиента / смена сервера: просто нажмите на веб-страницу (очень быстро) . Повторно запустить сервер, если это не удалось (очень медленно) .
  • Режим производства без отладчика
    • Изменение клиента: перекомпилировать, затем обновить браузер (очень медленно)
    • Смена сервера: повторно загрузка сервер (быстро)
  • Производственный режим с отладчиком (для серверной части)
    • Изменение клиента: перекомпилировать, затем обновить браузер (очень медленно)
    • Смена сервера: просто нажмите на веб-страницу, чтобы вызвать новый вызов сервера (очень быстро) . Повторно запустить сервер, если это не удалось (очень медленно) .

Дополнительные отличия:

  • Простое обновление браузера в производственном режиме намного быстрее, чем в режиме разработки.
  • GWT-RPC в режиме производства намного быстрее, чем в режиме разработки.

Каждая комбинация имеет свои преимущества и недостатки по скорости и удобству разработки. Мне нравится использовать их все, в зависимости от ситуации.


Этот пост стал немного длинным, но я видел много вопросов по этой теме, и я хотел записать все это в одном месте. Спасибо за чтение: -)

6 голосов
/ 26 мая 2011

Полагаю, мой ответ в форме вопроса: «Вы уверены, что вам вообще нужно перезагрузить компьютер?»

Предполагается, что вы запускаете его в браузере (который звучиткак и вы), тогда большинство изменений «горячие» почти сразу, как только вы их закончили.Вчера я провел все виды изменений в основном файле кода в модуле, и мне не пришлось перезагружать сервер для любого из них.

Мне часто приходилось перезагружать страницу в браузере, чтобы увидеть изменения, но это другая проблема.

2 голосов
/ 26 мая 2011

В режиме разработки GWT каждый раз, когда вы перезагружаете страницу, сервер dev перекомпилирует исходный код приложения GWT. Это позволяет вам просто внести некоторые изменения в свой код GWT и просто перезагрузить страницу в браузере, чтобы увидеть изменения - нет необходимости перезагружать сервер в режиме разработки.

Когда вы развертываете свое приложение на производственном сервере, вы развертываете уже скомпилированные файлы JavaScript. Поэтому задержка, которую вы увидите, будет временем загрузки этих страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...