Во время разработки 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 вы используете маленький желтый значок перезагрузки)в представлении «Разработка») Это намного быстрее, чем полный перезапуск сервера, но, опять же, это не так быстро, как с отладчиком!
«С отладчиком»
Как в режиме разработки, так и в режиме производства, вы можете запустить приложение с подключенным отладчиком.Используйте «Debug As ...», если вы используете Eclipse.
Для режима разработки отладчик подключается как к клиентской, так и к серверной части кода - тогда как в рабочем режиме он может толькоприкрепить к стороне сервера !
Если у вас есть изменения на стороне клиента с подключенным отладчиком, изменения кода вступят в силу немедленно, поэтому все, что вам нужно сделать, это нажать где-нибудь вваша веб-страница, которая приводит к запуску кода.
Если у вас есть изменения на стороне сервера с подключенным отладчиком, аналогично, изменения кода вступят в силу немедленно, поэтому все, что вам нужно сделать, этовыполнить какое-либо действие, которое вызывает соответствующий серверный вызов.
Все это очень быстро, но недостатком является то, что Java-отладчики могут справляться только с определенными изменениями кода. Если у вас есть более серьезные изменения, отладчик завершит работу, и вам придется перезапустить сервер (я все еще ищу способ просто перезагрузить и снова подключить в этом случае - я думаю, что это возможно, но у кого-нибудь уже есть рабочее решение?)
Кроме того, с отладчиками вам нужно быть осторожным с состоянием вашего приложения. Помните, что изменения в вашем коде не будут переоценивать существующее состояние!
Итак, у вас есть четыре комбинации
- Режим разработки без отладчика
- Изменение клиента: использовать обновление браузера (средний)
- Смена сервера: Re загрузка сервер (быстрый)
- Режим разработки с отладчиком
- Смена клиента / смена сервера: просто нажмите на веб-страницу (очень быстро) . Повторно запустить сервер, если это не удалось (очень медленно) .
- Режим производства без отладчика
- Изменение клиента: перекомпилировать, затем обновить браузер (очень медленно)
- Смена сервера: повторно загрузка сервер (быстро)
- Производственный режим с отладчиком (для серверной части)
- Изменение клиента: перекомпилировать, затем обновить браузер (очень медленно)
- Смена сервера: просто нажмите на веб-страницу, чтобы вызвать новый вызов сервера (очень быстро) . Повторно запустить сервер, если это не удалось (очень медленно) .
Дополнительные отличия:
- Простое обновление браузера в производственном режиме намного быстрее, чем в режиме разработки.
- GWT-RPC в режиме производства намного быстрее, чем в режиме разработки.
Каждая комбинация имеет свои преимущества и недостатки по скорости и удобству разработки. Мне нравится использовать их все, в зависимости от ситуации.
Этот пост стал немного длинным, но я видел много вопросов по этой теме, и я хотел записать все это в одном месте. Спасибо за чтение: -)