GWT как таковой, ваше мнение

Хотелось бы узнать ваши впечатления и мнение о GWT.

По рациональной стороне дела:
Насколько это послушный и предсказуемый framework?
Отладчик получившегося JavaScript с прямой связью с Java исходниками — существует?
«Шаг влево, шаг вправо» — насколько (без)болезненно даётся, если надо сделать что-то не совсем обычное/стандартное/очевидное?

По иррациональной стороне дела:
Вам приятно работать с GWT?

Общее:
Насколько перспективная технология?
Насколько быстро её можно освоить, если вдруг случится такое, что припрёт необходимость работать с GWT на проекте?
Какие есть засады с GWT?

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Трудно ли будет прикрутить к GWT стороннюю js-библиотеку с WEB-GL ?
Типа этих :

github.com/...aka/VivaGraphJS

www.yasiv.com/...aphs#Bai/rw5151

Вот посмотрите, может это сэкономит вам время:
gist.github.com/5HT/5522302

Кто-нибудь работал с ExtJS ? Как впечатления?

слышал из первых рук что хороший фреймворк.
кроссбраузрность, всё такое.

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

Как и почти всякий фреймворк: шаг влево / шаг вправо — караются расстрелом. Помнится, когда на нем ваяли командой клиента для веб-сервиса, была масса проблем с синхронизацией JS-потоков (пользовали браузерную БД, которая WebSQL). Cross-Origin scripting тоже пришлось через какую-то крупную задницу настраивать, пришлось в проект включать сторонний Java-апплет и поднимать на сервере локальный прокси, чтобы хоть как-то заработало. Короче, чур меня.

ыла масса проблем с синхронизацией JS-потоков (пользовали браузерную БД, которая WebSQL). Cross-Origin scripting
Лол, а ОС на нем вы не писали? То что вам понадобились какие то извращения для которых гвт не позиционируется, совсем не делает его плохим инструментом в областях где он позиционируется.
была масса проблем с синхронизацией JS-потоков (пользовали браузерную БД, которая WebSQL).
Че??? Джаваскрипт, вроде как, однопоточный, по крайней мере, в современных браузерах (Воркеры — это немного другое и далеко не все поддерживают)

UPD. Стоп. Или вы пытались писать многопоточный джава код, который должен быть транслирован ГВТ в джаваскрипт (если это вообще возможно)

Он возможно имел ввиду Worker из HTML 5.

Че??? Джаваскрипт, вроде как, однопоточный, по крайней мере, в современных браузерах
угу. но вот гуглехром при доступе к ресурсам — многопоточный. у меня он кукисы тер, что еще пол беды, а еще мог создать два кукиса с одним именем и разными значениями.
вобщем я не знаю конкретных проблем человека, но скорее всего хром и несколько табов портили все

Знавал я один проект, который по причине перформанса (GWT) и перевели на JS (деньги потраченны ессно ни на что). Хотя злые языки говорят что заказчик сильно настаивал на тулките и донастаивался (видимо мотивация была — ГВТ это модно).

А почему именно AngularJS все советуют? А не какой-нибудь JQuery UI, например.

А почему именно AngularJS все советуют?
Патамуша долбаные хипстеры :)
А не какой-нибудь JQuery UI, например.
jQueryUI — это набор виджетов, AngularJS — это архитектурный фреймворк.
Но мне больше нравится Backbone.js (если его не хватит, то есть надстройки вроде Backbone.Marionette), в нем меньше «внутренней/черной магии».
Хотя это дело вкуса, важно чтобы вы не смешивали фронт- и бек- энды. А если они у вас хорошо разделены, то особой пользы от GWT и JSF не будет.
не смешивали фронт- и бек- энды. А если они у вас хорошо разделены, то особой пользы от GWT
Это как? ГВТ фронтендный фреймворк!

Повірте, там коблива-йоблива вистачає шо на серверстороні шо на клієнті.

не смешивали фронт- и бек- энды.
Это как?
Фронт-энд отдельно, бек-энд отдельно. Ваш КО.
ГВТ фронтендный фреймворк!
Фронтэнд понятие растяжимое, например: www.gwtproject.org/...torial/RPC.html
Или вы используете ГВТ, только чтобы не писать на джаваскрипте?
Фронт-энд отдельно, бек-энд отдельно. Ваш КО.
Спасибо КО, может ты еще прояснишь свою мысль по поводу смешивать фронтенд и бекенд?
Или вы используете ГВТ, только чтобы не писать на джаваскрипте?
Это, плюс в целом фреймворк не плохой. А почему интересуешься?

ну вообще в гвт можно писать сразу и сервер и клиент (клиент потом компилится в js) а сервер — там просто чет типа сервисов rpc

А можно и не писать, это не обязательный компонент.

Сами вы хипстер. Angular на сегодняшний один из лучших для посторения клиента. Причем к нему можно еще и JQueryUI плагини прикрутить если уже так сильно захочеться.
О да, а blackbone типа лучше?

О да, а blackbone типа лучше?
Вы имели ввиду backbone? Если да, то лучше, ибо, как минимум, прозрачный джаваскриптовый код, нет никакой черной магии (привет ng-app и ng-...), возможность выбирать темплейты (логиклесс или нет).
Angular на сегодняшний один из лучших для посторения клиента.
Очнь спорное утверждение.
нет никакой черной магии (привет ng-app и ng-...)
А в чем черная магия?

Т.е. по вашему, то что фрейм позволяет много чего делать декларативно, вместо того чтобы писать кучу одинакогого кода — это черная магия? Мда, вы явно люди писать много кода (даже если он не особо нужен)

Т.е. по вашему, то что фрейм позволяет много чего делать декларативно, вместо того чтобы писать кучу одинакогого кода — это черная магия?
Куча кода — это пара строк джаваскриптовых-строк вместо пары ХМЛ-атрибутов?
Снова же подход ангулара вполне удобен, когда вы делаете простые вещи, но когда вам надо делать сложные интерфейсы и потом поддерживать/постоянно изменять их и при этом это делают разные люди, вы упретесь в его ограничения.
Это выводы из личного опыта использования angularjs?
Опыт с ангуларом у меня довольно небольшой (тот самый простой КРУД).
Выводы сделаны из истории:
— onEvent атрибутах в хтмл;
— опыт (очень негативный) с knockoutjs;
— внимание ... опыт с ... maven.
К слову, из личного опыта, вся декларативность заканчивается на «вывести Хелло, импут-велуе», для чего-то более сложного (хотя бы ввод по ентеру) уже надо писать таки джаваскрипт и более размашистый чем с бекбоуном. Например, инлайн-редактирование делается уже не так просто (особенно если его надо кастомизировать) и главное более размазано (часть «логики» оказывается в разметке).
Ну и дерективы — это прекрасная возможность отстрелить себе ногу ... по самую голову.
но когда вам надо делать сложные интерфейсы и потом поддерживать/постоянно изменять их и при этом это делают разные люди

В такие моменты и приходит понимание, что чёрт бы с ним с синтаксисом, насколько он компактный или не очень. Самое главное — насколько предсказуемо поведение фреймворка, насколько точно его можно контролировать.
Это не проблема — написать лишние несколько строк кода. Главное — всегда знать, куда ткнуть, чтобы поправить выбранный фрагмент, и точно знать, что оно сработает так, как ожидается.
По затратам времени и нервов в итоге выйдет дешевле.

Главное — всегда знать, куда ткнуть, чтобы
Это важно, но важнее чтобы человек который видит код первый раз догадался куда ткнуть, а не побежал бить вам лицо :)

Догадается, если и код нормально написан, и фреймворк вменяемый.
А когда кому-то хочется дать по голове за г@внокод, обычно автора давно след простыл.

ИМХО, я бы взял backbone / angular.js для UI + JAX-RS на бекэнде (или Spring MVC). GWT и JSF это просто тихий ужас.

и бэкбон и ангуляр сразу?

Або й навіть vanilla js (ну то вже ап ту ю)

Коли працював — мдаааа. Я б другий раз на ньому нічого б не починав.

Переваги мізерні якщо порівнювати з проблемами.

Юзайте JS framework для UI. І шось на ваш смак для бекенд.

Примерно так я и подозревал.

Работал на Vaadin
это фреймворк поверх GWT
там Hello World генерит десятки мегабайт джаваскриптов и тормозит.
поставьте на Эклипс плагин Ваадин и сгенерите проект Helloо Woоrld — улыбниитесь. оно одним кликом генерится.
горячие финские парни понимают толк)

там Hello World генерит десятки мегабайт джаваскриптов и тормозит.
А пробовал включать флажек optimize в компиллере?

сильно помогает ускорить компиляцию?
мавеном билдится ну оочень долго.

Для девелопмента тебе вообще ничего компилить не нужно при правильном сетапе, development plugin подхватывает все изменения на лету.
А в продакшн понятно нужно потерпеть 10 минут в день.

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

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

Vaadin має відмінну від GWT ідеологію і наскільки я розумію більше схожий на Play
Тому говорити про Vaadin в контексті GWT некоректно

А для работы с Vaadin требуется знать GWT?

Не хотелось бы с ними связываться, конечно, но на всякий случай хочу знать.

Vaadin можна використовувати не знаючи GWT, можливо навіть краще не знати GWT))
Загалом Vaadin теж непоганий фреймворк)) і компоненти в нього красиві, тільки не тре на ньому однокласники писати))

якщо однокласники фiнскi то можна))

по поводу перспектив — МС были вебформы и аякс тулкит — они там тоже пытались генерить кучу яваскрипта — ничего хорошего из этого не получилось

гавно, как и все компонентные серверсайд технологии типа jsf.

це не серверсайд технологія і в жодному разі не схоже на jsf

да насрать. Я пишу считай сервер-сайд код, который гвт транслирует в джаваскрипт, который выполняясь у клиента, делает ремоунтные запросы на серверный эндпоинт. И да, что у гвт, что у джсф — компонентная модель, реализация просто разная. Тем неменее я продолжаю настаивать что и то и то — гавно!

Ви пишете відверті дурниці, краще поміняйте реальне імя на нікнейм, а то ще відіб’ється на карєрі.

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

судячи по всьому рівень був все ж таки недостатній, як вже було сказано вище RPC є необовязковим, можна працювати наприклад з REST

як вже було сказано вище RPC є необовязковим
Так и с ДОМом можно работать напрямую. От только смыслу тогда от ГВТ?

фішка GWT не в RPC
Врешті є RequestFactory
Ну і робота з REST загальна практика і не вимагає танців з бубном
Проте у більшості випадків RPC покриває всі потреби

В таком варианте да, согласен. С Рестом было бы веселее. Тоесть таки признаете что в ГВТ входят серверсайд технологии? При чем ремоут сервисы это ихний основной апроуч, который они расписывают на каждом столбе. Так вот он — полное гавно. Но даже если без него делать гвт, все равно мне не нравится. Те костыли, которые они нагородили просто ненужны во времена хтмл5. Как было сказано коммандой Мартина Фаулера: ГВТ — прекрасная реализация убогой идеи.

1) наявність RPC не робить GWT сервер сайд технологією
2) RPC покриває всі основні потреби а для складних випадків є інші способи комунікації
3) хтмл5 наразі не замінює джаваскрипт
4) GWT це просто інструмент, доволі простий і зручний

нуда-нуда, если бы у дедушки не было члена, то он был бабушкой...

Воно ну зовсім не таке. Спільне хіба слова java і web. JSF повністю серверсайдна, а GWT генерить і UI частину на JS і HTML

Dart(также гугловский продукт) сравнивают с GWT и рассматривают как его альтернативу

в целом не очень положительные впечатления от использования GWT. в качестве java framework советую попробовать Play framework, только версию 1.2, потому что 2. заточена больше под Scala.

В play 2 на java от кода глаза кровоточат, а у 1.2 с поддержкой уже не очень...

GWT доволі цікава штука. Розвивається нормально. Писати на ній сайти мабуть неварто хоч і можна, а от бізнес аплікації якраз те що треба. Якщо потрібно гарні компоненти то є GXT ну або Vaadin (хоч це не зовсім GWT). Насправді найбільша складність це налаштувати з самого початку проект коректно бо без правильної структури GWT аплікація перетворюється в хаос. Незважаючи на всякі страхи компоненти власні писати нескладно як за допомогою GWT так і за допомогою вставок JavaScript. Дебаг аплікації це напевне найкраща частина — в більшості випадків значно зручніше і зрозуміліше ніж при роботі з чистим JavaScript. GWT можна доволі нескладно комбінувати з іншими технологіями на клієнті. Комунікація з сервером може відбуватись по рест сервісах. Інтегрується зі спрінгом або з Guice Прості речі навчитись робити нескладно особливо коли є вже проект або хоча б хтось поруч з досвідом. Робити нормальні проекти з нуля мабуть все таки вимагає досвіду.
Відомим зразком великого клієнту писаного на GWT є всім відомі однокласники www.insight-it.ru/...odnoklassnikov

он чому ті одноклассники так жахливо тормозять.....
імхо, це накраща негативна рекомендація для GWT, що я би міг уявиити.

це здоровезний юай який буде лагати на слабих компах. Думаю тормози там підвязані також під бекенд. Тож не варто робити висновки що GWT поганий по тому що Однокласники тормознуті

я б не сказав шо дебаг там мед. Прості речі там робляться ще простіше, а складні ще складніше (це коли якась нестиковка компонент чи баг вроджений чи ще якесь НЁХ). Всунути сторонній JS компонент — вимагає парива. Структура проекту, так. Корисні налаштування — маст хев. Компіляція тих всіх пермутейшенів займає немало часу і ресурсів компа.

Насколько это послушный и предсказуемый framework?

Имхо, несколько более «непредсказуемый» фраимворк в отличии от стандартных джава фреимворков. Но после хорошего ознакомления вполне можна работать....
Отладчик получившегося JavaScript с прямой связью с Java исходниками — существует?

Собственно ГВТ это и делает — ставиш плагин на хром, и дебажеш жава код.
«Шаг влево, шаг вправо» — насколько (без)болезненно даётся, если надо сделать что-то не совсем обычное/стандартное/очевидное?
Впринципе всегда есть нейтив джаваскрипт. Но некоторые проблемы (например стандартный крестик закрытия диалогового окна) было очень напряжно решить даже при его наличии.
Вам приятно работать с GWT?
Всяко лучче чем с жабаскриптом.
Насколько перспективная технология?
Судя по интернетам — популярность не особая.
Насколько быстро её можно освоить, если вдруг случится такое, что припрёт необходимость работать с GWT на проекте?
Как и любой другой фремворк.
Какие есть засады с GWT?
Из того что помню:
-Высше упомянутый крестик закрытия диалогового окна (может его гугл уже и починил сейчас, хз)
-Уйма времени ушла чтобы настроить нормально компиляцию, всякие ресурсы и18н, проект в иде, дебаг режим, гвт-рпц итд. И все равно где то какието конф глюки постоянно вылазили.
-Про перформанс нужно думать, и помнить о вещах типа "использовать общий интерфейс — плохо).

Vaadin проводил опрос The Future of GWT среди разработчиков vaadin.com/...gwt/report-2012. Коротко, 80% приложений на GWT для Enterprise, 89% будут использовать GWT для следующих проектов и др. полезная информация.
Google многие из своих продуктов делал на GWT, список можно посмотреть тут plus.google.com/...sts/TjxeEzErZez. Среди них AdWords/AdSense.
GWT project отделился от google и неплохо себя чухает под управлением GWT Steering Committee.

RE: Отладчик получившегося JavaScript с прямой связью с Java исходниками — существует?
GWT compiler генерит SourceMaps — Bidirectional Mapping between Java Language and Compiled JavaScript. Дебажите себе спокойно в Chrome DevTools
RE: Вам приятно работать с GWT?
Работать приятно, спасибо отличной поддержке GWT в Intellij IDEA.
Event Bus + MVP pattern + DI c Gin(на базе Guice) делают разработку приятней и позволяют при желании пытаться покрыть логику unit тестами.

Будут вопросы, пишите. Удачи
P.S. Ищу себе в команду GWT Dev goo.gl/TIHa31
Да, и вот тут goo.gl/mLGQeo еще полезно про GWT — Pros and Cons

Google многие из своих продуктов __делал__ на GWT, список можно посмотреть тут plus.google.com/...sts/TjxeEzErZez. Среди них AdWords/AdSense.
Тут осторожно
products that use Google Web Toolkit
На сколько я знаю о AdWords/AdSense та ГВТ только в админке (которая не такая уж и навороченая, вроде). Chrome Webstore то же как-то не похож на ГВТ-приложение (по исходниках скриптов/страничек), поэтому предположу что там так же только админка (но это только предположение)
------------
А вы используете чистый ГВТ или какие-то надстройки (типа екста)? Если используете надстройки, то какие и почему? Пару лет назад были проблемы с обновлениями версий, как с этим сейчас?

Мы используем чистый GWT, компоненты пишем сами. Когда мы только начинали с GWT (версия 1.3), проектов типа Sencha GXT или врапперов типа Smart GWT еще не было, да и к внешнему виду UI у нас были особые требования. Одно из них это поддержка дополнительной high contrast темы оформления UI для disabled users.

Насчет Sencha GXT, насколько я помню, раньше он немного отставал от GWT, например в поддержка UIBinder, event handler model и т.п. Да и просто так обновить GWT не получалось, приходилось ждать новых версий в которых заявлена поддержка последней версии GWT.

Кстати, поддержка Accessibility это один из больших плюсов GWT.

Если уж хочется джавы на клиенте то PrimeFaces

Если уж хочется джавы на клиенте то PrimeFaces
Ага, от ХМЛя и побольше и со вставками джаваскрипта и ХТМЛ.
Как-то не особо JSF позволяют писать «клиентский код» на джаве. ИМХО, еще хуже чем ГВТ, ибо получается месиво из джавовского аутпута (гереренного фейсесами) и кода на джаваскрипт/ХТМЛ.
Тогда уж лучше нанять таки фронт-эндщиков и сделать им REST-сервис.

ой только не надо про прайм фейсы. Тут я имею что сказать.
ТОЛЬКО если устравает все что есть в их showcases по умолчанию.
Шаг в лево шаг в право начинается садомия с ручным jQuery и самое клевое что javascript api для прайм фейсов писали лютейшие м№даки. А уж сколько там багов где попало и вообще неаккуратностей- я просто промолчу.

Как бы оффтопик, но всё же: что посоветуете на замену PrimeFaces?

в случае реально навернутого UI выход один — отдавать с сервера только данные а клиент писать на JS как независимое приложение. Темплитинг на клиенте и прочее и прочее. angularjs и подобные вещи в общем.

Не стал бы трогать ЭТО даже 6ти метровым шестом.
Ущербная по сути идея исходившая из не любви жаба програмистов к JavaScript
Преспектив никаких.
везде где оно есть от него пытаются избавится. Шаги в лево и право очень напряжны и тд и тп.

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

были большие затыки получить развесистый UI на GWT. Для очень банальных бизнес задач наверно он ок, но не дай бог начать делать что то и правда навороченое.

А какие именно затыки если не секрет?

люди писали сингл педж апликешен с очень развесистыми драг енд дроп штуками. В итоге забили и стали делать JS руками поверх данных с бекэнда. Я так понимаю было тяжело добится нужного поведения для сложного UI

да рабинович же напел же. Я щупал только простые кейсы и то не понравилось.

У меня сильно другое впечатление, gwt — отличная тема, но на нее все забили в том числе гугл, поэтому я бы гвт не стал бы выбирать для следующего проекта.

я просто с JS неплохо дружу и мне эта тема кажется очень уж костыльной.

А мне джава скрипт кажется костыльным ))

ну вот тут уже вкусовщина. Я люблю что бы фронтенд был 100% подконтрольный и никакой генерации из черти чего. Сильно я наелся со всеми компонентными фремвоками.

Пока непонятно в чем именно потеря контроля.

Скорее не потеря, а усложнение контроля.

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

Так наоборот, бизнес логику на джаве намного легче разгребать с полной поддержкой рефакторинга и дебагинга, в отличие от джаваскрипта.

я не про разгребать, а про хакать ))
это на сервер лезть далеко,
а бизнес-логика на клиенте доступна для колупания.

везде где оно есть от него пытаются избавится.
Не везде. Лично я, так же как и вы, скептично отношусь к ГВТ.
Но для корпоративных проектов вполне имеет место быть, особенно с надстройками, типа сенчевской. К слову, в Украине сейчас начали часто встречаться проекты на ГВТ, но может это просто волна (с 2010 года :) ) только докатилась.
----------
Чисто субъективно Vaadin больше понравился: проще старт/настройка, как-то более понятная работа.
Из недостатков: совсем уж маргинален, по состоянию на 2011 — начало 2012-го.
----------
К слову №следующий: Вот тема 2011-го года dou.ua/...ums/topic/4163 тогда как-то не особо пошла.

Мне принципиально не нравится идея генерить веб UI из Java
я еще и RAP пробовал, тоже ересь.

Подписаться на комментарии