Подтвердить что ты не робот

Кто-нибудь использовал GWT и может сказать, что он действительно доставляет то, что он promises?

Я давно веб-разработчик Java, и, как и большинство веб-разработчиков, я использовал довольно много JavaScript. Несмотря на то, что я не ненавижу JavaScript, как многие другие разработчики Java, я все еще осознаю его недостатки.

GWT - это способ записи javascript с помощью java. Поскольку я знаю оба языка в течение длительного времени, я довольно скептически отношусь к этому утверждению. Я имею в виду, что я с трудом верю, что вы действительно можете создавать полноценные Java-приложения с богатым графическим интерфейсом, используя только GWT. Вот почему я спрашиваю здесь, есть ли у кого-нибудь возможность работать с GWT в крупномасштабном проекте. Если это так, мне бы очень хотелось услышать, что они думают об этом.

4b9b3361

Ответ 1

Я написал довольно большой размер приложения в GWT, и я должен сказать, что меня больше впечатляет GWT, чем когда я начинал проект. Мое общее "чувство" платформы заключается в том, что все действительно хорошо продумано, и они не делают ничего, если только не могут сделать это хорошо, и могут делать это хорошо во всех браузерах (пользователи IE по-прежнему являются вашими пользователями!)

Теперь имейте в виду, что GWT действительно выделяется - это создание больших, очень динамичных одностраничных веб-приложений. Если ваша цель состоит в том, чтобы улучшить статическую страницу с некоторыми эффектами javascript, чем GWT - массивный избыточный уровень (gquery может изменить это, но у меня нет опыта работы с gquery)

Некоторые функции, которые мне нравятся, включают:

  • Возможность совместного использования кода между сервером и клиентской стороной. (если ваша сторона сервера написана в java, конечно). Я не ожидал, что сначала начну использовать это много, но на практике он действительно может сэкономить много дубликатов кода. Тем не менее, я считаю, что в целом это работает только с кодом, написанным с учетом GWT - с использованием кода, который не был написан с GWT, часто не работает. Это связано с тем, что GWT имеет только подмножество классов в JDK, а в javascript вы должны заботиться о производительности намного больше, чем на стороне сервера.
  • Он нацелен на достижение самого быстрого javascript, быстрее, чем вы когда-либо пишете вручную (потому что, если вы его вручную пишете, код будет недостижим). Несчастная реальность заключается в том, что браузеры, которые используют многие люди, имеют невероятно медленные javascript-движки, поэтому производительность вашего кода javascript имеет большое значение. Компилятор Gwt - настоящий оптимизирующий компилятор - он будет встроенными методами, ставит все ваши строки. девиртуализировать вызовы методов, когда это возможно, и т.д. Поскольку вы компилируете для каждого браузера и локали, компилятор может также встраивать специфический для браузера и локальный код. Эта презентация Google I/O имеет несколько ориентиров в нескольких слайдах.
  • Он также автоматически справит ваши изображения вместе, чтобы свести к минимуму количество требуемых HTTP-запросов, снова улучшая скорость вашего сайта. GWT 2.0 позволит вам объединять произвольные файлы.
  • большинство файлов, созданных gwt, имеют сильный хеш в качестве имени файла, что позволяет вам устанавливать файлы на кеширование навсегда, но не беспокоиться о том, что люди, имеющие старые версии, изменяют файл
  • Разделение кода в GWT 2.0 очень впечатляет и будет очень сложно сделать вручную. По мере роста размера вашего приложения обработка размера вашего javascript все больше и больше, и вам нужно разделить его на куски.
  • Вы кодируете статически типизированный язык. Я знаю, что некоторые люди предпочитают динамическую типизацию, но мне нравится сравнивать эту дискуссию с дебатами emacs vs vi - в обоих лагерях много умных людей, и спорить в Интернете не собирается менять предпочтения.
  • Вы можете использовать множество замечательных инструментов, которые существуют в java-экосистеме, которые, как правило, намного более зрелые, чем эквивалентные инструменты javascript. - junit, java IDE, java-отладчики, рефакторинг и т.д.

Ответ 2

Если вы знакомы как с JavaScript, так и с Java, вы действительно отлично подойдете, чтобы максимально использовать возможности GWT. То, что многие люди не понимают, это то, что GWT довольно многослойна и что вы действительно можете решить, на каком из этих уровней вы хотите работать.

Например, я иногда пишу прямо против библиотеки DOM для проектов. Это очень похоже на написание кода JavaScript, за исключением того, что вы можете правильно использовать IDE и получить мощь компилятора. Из компилятора я получаю проверку статического типа, множество хороших оптимизаций компилятора и (на самом деле мой любимый для поддержания кода) утверждения режима отладки. Никто никогда не делает много возможностей делать утверждения, но так приятно иметь возможность скомпилировать режим отладки, который делает дорогие проверки, чтобы поддразнивать ошибки, а затем отключать режим отладки и просто испарять код. (Не только утверждения assert уходят, но и весь код, доступный из утверждений, также компилируется).

В других случаях я пишу код с помощью библиотеки GWT UI. Этот код немного похож на swing или SWT-код, поэтому он наиболее удобен для разработчиков Java. Работая на этом уровне, вам не нужно беспокоиться о DOM, и, как правило, можно создавать приложение без написания JavaScript. Иногда вы сталкиваетесь с ошибкой, когда что-то не работает последовательно в определенном браузере. Люди GWT считают эти ошибки.

Вы можете выбрать, на каком уровне абстракции вы хотите работать. На каждом уровне есть компромиссы, но GWT должен их поддерживать.

Кроме того, полное раскрытие: я чувак в видео, что Chi связал выше, так что вы можете сказать, что я довольно привязан к GWT.

Ответ 3

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

Google Wave, я думаю, стал прототипом "что возможно" с GWT.

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

Ответ 4

Я думаю, что GWT делает то, что он говорит на олове...

Top 5 Причины выбора GWT:

  • Гобелен может быть чрезмерно сложным, а кривая обучения довольно крута для новых разработчиков, которые начинают\присоединяться к команде. Особенно по более крупным проектам.

  • Я обнаружил, что могу разрабатывать "более богатые" приложения, используя GWT, видя, что моя сила - это Java, а не Javascript. Для того, чтобы я мог реализовать аналогичную функциональность с помощью Tapestry, мне пришлось бы написать Javascript, который позже станет кошмаром для обслуживания.

  • Совместимость с браузером, я потратил бы много времени, пытаясь заставить мою руку написать Javascirpt для работы во всех разных браузерах (например, я сказал, что Javascript не моя сила:-) Компилятор GWT скрывает меня от этого, приводит к тому, что я трачу больше времени на создание функций.

  • Обратный кнопочный блюз, прослушиватель истории GWT обрабатывает кнопку возврата браузеров по сравнению с Tapestry.

  • GWT имеет меньший размер, потому что только данные передаются по проводке, предназначенному для обновления всей страницы.

Список продолжается, но в целом, я очень рад, что сделал изменения и не оглядывался назад.

Ответ 5

Я создал два довольно существенных приложения GWT за три года работы в Google. Он доставляет то, что он promises - мои приложения были гораздо более интерактивными и гораздо более аякс-y, чем мои знания Javascript, и моя инструментария Javascript позволила бы мне создавать другие инструменты.

Я также нашел приложения более интерактивными и более интересными, чем обычные альтернативы на стороне сервера, которые я использовал, прежде чем переходить на него.

Он не свободен от бородавок, но это очень продуктивная среда, чтобы делать виды приложений, которые я делаю.

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

Ответ 6

Я кратко рассмотрел его для более старого приложения на одной из моих работ, и я должен признать, что это было очень впечатляюще. Весь код был написан на Java, и javascript был построен красиво.

У него были AJAX, динамические страницы, работы. Для него есть плагины, такие как Ext GWT.

Конечно, стоит посмотреть и попробовать, но вы можете обнаружить, что цикл разработки не "чувствует" себя правильно, поэтому вы можете использовать обычный JavaScript.

Ответ 7

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

Общие проблемы, связанные с GWT, с которыми я столкнулся, обычно имеют отношение к инфраструктуре Ext GWT/GXT или интеграции FCKEditor.

Ответ 8

Просто скалы GWT google делает "google wave" полностью на GWT.

Ответ 9

Я не знал много Javascript, когда пытался создать свой сайт. Фактически, именно поэтому я откладывал создание веб-сайта.

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

Ответ 10

За несколько лет я сделал несколько проектов, и это фантастика. Возвращение к основанной на JS/JSP/базе данных действительно ужасно.

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

Можете сделать гораздо более быстрым и удобным способом.

Ответ 11

Существует крутая кривая обучения, но для действительно динамических приложений ui просто невозможно создать из рук в javascript как можно эффективнее. В частности, я имею в виду, например, интерфейс приложения для службы, где все поля поиска и тип результата s и длина были полностью неизвестны. Для такого типа вещей динамическая среда выполнения, определенная ui, на мой взгляд, ничего лучше GWT.

Недостатки - это крутая кривая обучения (особенно для программистов-программистов Java, традиционного запроса/ответа сервлета-ави и парней) и попадания в GWT после принятия этого решения.