Имеет ли смысл использовать Google Web Toolkit (GWT) в качестве полноценной веб-инфраструктуры Java?

Меня интересует возможность того, что GWT может служить основой для всего моего уровня представления.

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


person Community    schedule 13.04.2009    source источник


Ответы (7)


Я работал с GWT около года назад. В то время это казалось отличной идеей, но с некоторыми оговорками:

  • У меня были проблемы с некоторыми частями API, которые, вероятно, были связаны с тем фактом, что вы кодируете так, как будто вы используете java, хотя на самом деле вы пишете для отдельно скомпилированной среды, которая действует как java, поэтому вы делаете некоторые неправильные предположения (в данном случае передаете вложенные значения во внешний интерфейс). Я думаю, что был другой, переписывающий мои ant-скрипты, чтобы использовать 32-битную jvm для компиляции gwt.
  • Я потратил немного времени, пытаясь настроить внешний вид - мы так и не развернули готовый проект, поэтому я не уверен, сколько работы потребовалось бы, чтобы перейти на профессиональный уровень, но казалось (логически), что это будет сравнимо с настройкой интерфейса Swing. может быть, визуально немного более громоздко, чем html.
  • Поскольку в конечном продукте ajax настолько скрыт от вас, у меня были некоторые опасения по поводу того, что я могу сделать, если производительность будет низкой.

При этом, похоже, с этим определенно стоит поиграть, и мой опыт был давным-давно в годы Интернета, особенно с учетом того, что сейчас он, вероятно, намного более зрелый. Также стоит отметить, что это совсем другой (и освежающий) способ разработки кода GUI по сравнению с большинством фреймворков MVC, и его стоит изучить, хотя бы по одной другой причине.

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

person Community    schedule 13.04.2009
comment
Меня беспокоило то, что писать Java-код для создания визуального интерфейса не так интуитивно. Не похоже, чтобы у вас действительно была эта проблема. Не думал о настройке ajax - это было бы слишком сложно, я бы сказал. Интересно, чем отличается GWT от того, когда вы его использовали. - person karl; 13.04.2009
comment
Не знаю, почему вы так говорите. Мне кажется, что если вы создаете высоконагруженный профессиональный сайт с очень требовательными графическими требованиями, GWT, вероятно, не лучший выбор, в противном случае все в порядке - это потому, что GWT тяжелый в браузере - производительность- Мудрый? - person karl; 13.04.2009
comment
Учитывая серьезность ваших предостережений, я удивлен, что вы меня не отговариваете. Но похоже, что вы думаете, что эти опасения перевешиваются. . . какие? Я не вижу здесь большого количества позитива :) - person karl; 13.04.2009
comment
Я бы не стал использовать его для высокой нагрузки, потому что трафик ajax плотно обернут и не находится под моим контролем - на самом деле это может быть хорошо. Что касается графики - мне бы очень неприятно оказаться в трудном положении, пытаясь сопоставить макеты клиента с сгенерированным кодом gui. - person Steve B.; 13.04.2009
comment
Я понимаю, что вы имеете в виду, говоря о графических сложностях. Я полагаю, что эксперты нашли способ обойти это. Но получить помощь может быть сложно, поскольку она не так популярна. Спасибо. - person karl; 13.04.2009

Вы упомянули, что GWT будет обрабатывать презентационный уровень. Вы бы тоже занимались бизнес-уровнем на Java? Если это так, я хотел бы указать вам на IT Mill Toolkit, который делает именно это: это набор инструментов, который использует GWT для рендеринга своих компонентов графического интерфейса пользователя, что позволяет вам делать свои приложения полностью на Java. Я думаю, что термин, который он пытается использовать, звучит как «RIA, управляемая сервером».

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

Предупреждение: я работаю в IT Mill, хотя это не имеет отношения к моему мнению.

person Community    schedule 14.04.2009
comment
Наверное, нет, если это стоит денег ... Но пост CW, так что неважно, что люди думают :) - person Bill K; 22.04.2009
comment
Билл: набор инструментов бесплатный как в пиве, так и с открытым исходным кодом. Да, и меня не волнует репутация, CW или нет. Я просто был озадачен реакцией. Я имею в виду, если бы я держал это в «секрете», что мне действительно платит моя компания, было бы лучше? Я бы, наверное, просто поджарился сильнее, если бы кто-то заметил то, что я пропустил, я думаю. - person Henrik Paul; 22.04.2009
comment
Если бы сотрудник Google пришел на SO и указал на какую-то новую особенность GWT, не проголосовали бы за него тоже? - person Peter Recore; 14.07.2009

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

В общем, у GWT есть (обычные?) Проблемы молодых технологий. Тем не менее, он действительно упрощает некоторые вещи, например, Ajaxifying, как вы его назвали.

person Community    schedule 13.04.2009
comment
Я удивлен это слышать. Насколько вы знакомы с технологиями Java? - person karl; 13.04.2009
comment
Да, я имел в виду Java в целом. Я не был уверен, были ли ваши проблемы результатом незнания способа работы с Java. - person karl; 13.04.2009
comment
Но похоже, что в этом случае виновата технология. - person karl; 13.04.2009
comment
Спасибо, что подняли этот красный флаг. Я определенно буду осторожно подходить к GWT, имея это в виду. - person karl; 13.04.2009

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

Ловушки, которые я обнаружил, вы можете найти здесь:

Самые большие подводные камни GWT?

person Community    schedule 14.04.2009

Мы разработали большое приложение HR Portal, в котором весь уровень представления выполнен в GWT. Бэкэнд - Spring. Все работает очень хорошо, и пользовательский интерфейс был очень хорошо воспринят пользователями. Очень важно, что нам легко добавлять новые функции и поддерживать приложение. Я думаю, что было бы намного сложнее сделать что-то сопоставимое и поддерживаемое с использованием библиотек Javascript.

Вам действительно нужна какая-то платформа на стороне клиента, иначе вы ее напишете (как это сделали мы!): Наше приложение построено на Портлеты GWT (бесплатно и с открытым исходным кодом).

Мы используем фрагменты HTML для создания скинов приложения для различных развертываний, а макет каждой «страницы» сохраняется в файле XML.

person Community    schedule 19.08.2009

немного полезной информации об этом в этом веселом видео: http://raibledesigns.com/rd/entry/my_drunk_on_software_interview

person Community    schedule 14.04.2009

GWT сам по себе является библиотекой улучшения пользовательского интерфейса, а не фреймворком. Если вы используете его с Google App Engine, у вас будет базовая структура. (Это другая история, и пока я смотрел на нее, я решил не включать это в нашу архитектуру).

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

Что касается ANT, то с 64-битным компилятором проблем нет.

‹Java failonerror =" true "fork =" true "classname =" com.google.gwt.dev.Compiler "dir =" $ {dir.GWTCompile} "› ‹- dir.GWTCompile - это каталог, содержащий GWT -› ‹Classpath› путь к классам ‹/classpath› ‹jvmarg value =" - $ {gwt.maxMem} "/› ‹arg value =" @ {gwt.baseModule} "/› ‹arg value =" DEBUG "/› ‹arg value = "-strict" / ›‹/java›

Что касается сгенерированного кода, все это есть на вашей войне, если вы хотите его просмотреть. (Это также открытый исходный код, так что вы можете посмотреть его там.)

Что GWT делает в процессе компиляции: он создает несколько копий JS-библиотек для разных наборов браузеров (одна из причин, по которой компиляция может занять несколько минут), вы можете добавлять / удалять их по мере необходимости. Это уменьшает количество JS-пакета, который необходимо загрузить, и увеличивает скорость, поскольку в нем не должно быть этих неприятных if (EI) this else if (FF) that. Однако, когда вы выполняете локальную отладку (по крайней мере, в eclipse), вам не нужно ждать, что позволяет оставить это для сервера сборки (или когда вам нужно вручную собрать и развернуть (неандертальцы)).

Обратная сторона GWT. Поскольку это клиентская сторона javascript (почти полностью), вы не можете использовать ее для вещей, которые ее не поддерживают или не поддерживают одну из версий. Поэтому для таких вещей, как iPad и iPhone, вы можете столкнуться с некоторыми проблемами, если не используете дополнительные библиотеки, предназначенные для устранения этих пробелов (например, mgwt).

person Community    schedule 03.09.2014