LINUX.ORG.RU
ФорумTalks

GWT - зло, абаснуй!


0

1

Надо разложить по полочкам все недостатки GWT, начиная от реализиции до концепции, т.е. до самой идиотской идеи компилировать ущербный язык Java в JS.

Причем если разработчику на примере «дырявых абстракций» Спольски и других вещей я еще могу объяснить, то как объяснить какомунить руководителю, который зомбирован пиаром этого уг.

Итак что нам известно (наяндексовано):

  • убогость концепции java->js: Возможно, самый спорный аспект GWT-архитектуры - преобразование языка Java в код клиента. Некоторые GWT-сторонники говорят, что написание кода клиента на языке Java по сути предпочтительнее, чем написание кода на JavaScript. Это вовсе не всесторонний взгляд на проблему, и несколько JavaScript-разработчиков могли бы с большой неохотой пожертвовать гибкостью и выразительностью их языка ради временами обременительных заданий по разработке на языке Java. Единственная ситуация, в которой замещение JavaScript на Java-код было бы привлекательным, - в команде, в которой не хватает опытных Web-разработчиков. Однако, если эта команда будет двигаться в сторону Ajax- разработок, для нее будет лучше, если нанимать опытных JavaScript-программистов, а не полагаться на Java-программистов для производства JavaScript. Ошибки, вызываемые недостатками знания более высокого уровня абстракции GWT, нежели чем JavaScript, HTTP и HTML, неизбежны, и неопытные Web-программисты потратят много усилий и времени, искореняя их. Как разработчик и блоггер Дмитрий Глазков замечает в этом случае: «Если вы не можете работать с JavaScript, вам не следует писать код для Web-приложений. HTML, CSS и JavaScript - три необходимых условия для этого.» (см. Ресурсы).
  • GWT тяжело интегрируется с другими продуктами (Spring, Acegi). Интеграцию сложно выполнить без нарушения стандартного цикла разработки под GWT, что может привести к несовместимости с будущими версиями GWT (нужно это учитывать)
  • тладка GWT приложения выполняется через GWT-консоль. Отладка в GWT-консоли – это обычный анализ логов. То есть, Вам придется забыть про всю мощь отладчика среды разработки
  • Интернационализация - также большая проблема для GWT. Поскольку Java-классы GWT-клиента запускаются в браузере, они могут не иметь доступа к возможностям или к узлам источников, чтобы взять находящиеся там строки кода во время выполнения.
  • К сожалению, иногда абстракции недостаточно: в моей проверке действительности ZIP-кода, к примеру, мне захотелось использовать стандартные выражения, чтобы выполнить проверку. Однако, GWT не может выполнить метод String.match(). Даже если бы он мог, стандартные выражения в GWT имеют свои синтаксические отличия применения кода на сервере или кода клиента. Всё это происходит потому, что GWT при работе полагается на лежащий в основе regexp- механизм среды выполнения, и это пример проблемы, которая делает несовершенными ваши абстракции.
  • Однако, GWT-панель инструментов представлена только в бинарной форме, и модификации ее не разрешены. Это верно и для компилятора Java-кода в JavaScript, и обратно, что обозначает, что любые ошибки в вашем сгенерированном JavaScript-коде неконтролируемы. Особая проблема взаимодействия пользователя и GWT-разработчиков: каждая версия нового браузера требует обновления GWT-средств, чтобы обеспечить поддержку.

Кто работал с GWT что скажете плохого об этом поделии?

★★☆

Ответ на: комментарий от Siado

блин но старовато это все, в gwt 2.0 оне изрядно подчистили мелкие косяки вроде проблем с сущностями и ресурсами. Конечно осовная идиотская идея осталась.

wfrr ★★☆
() автор топика
Ответ на: комментарий от vga

ну в 2.0 они добавили опейсание интерфейсов, но один хрен вставить туда тупо html код похоже не получится, надо поточнее изучить сей фокус. А так это в принципе не старшно ибо это не для веб сайтов а для ria, т.е. «приложений» а не статических страниц.

wfrr ★★☆
() автор топика
Ответ на: комментарий от Siado

http://www.rsdn.ru/forum/java/3646206.flat.aspx


Сейчас использую Ext GWT — полное гавно, никому не рекомендую. Тормозит, неотлаживаем, работает непредсказуемо, документация слабая (все через форум), API сделан инопланетянами (может там конечно гений какойто делает, и я его просто не понимаю, но по мне так все очень не логично, и через одно место рассчитано), и к тому же он не применим, из-за лицензии, в коммерческих проектах (т.е. тратить время на его изучение с надеждой на этом заработать не рекомендую).

Siado ★★★★★
()
Ответ на: комментарий от wfrr

>хибернейт у нас не юзают, ибо объемы данных такие что оверхед слишком большой выходил бы.

Больше 2 лимнов записей в базе есть?

Я вот когда то учавствовал в проектике, где «умельцы2 умудрялись ловить оверхед на базе с ~300000 записей. А с базой они между прочим работали через ибатис...

Mrxrrr
()
Ответ на: комментарий от Siado

во, про лицензию ты мне напомнил почитать.

wfrr ★★☆
() автор топика
Ответ на: комментарий от Siado

> Да и Qt4 заменяет добрую долю жабы.

О да.

qt-everywhere-opensource-src-4.6.1
всего 391МБ, из них:
doc ~ 168,9МБ;
demos ~ 5МБ;
examples ~ 7,4МБ;
lib ~ 7,4МБ;
tools ~ 21,7МБ;
src ~ 168,2МБ
и ещё по мелочи.

openjdk-7-ea-src-b80-21_jan_2010
всего 297,8МБ, из них:
corba ~ 8,6МБ;
hotspot ~ 39,1МБ;
jaxp ~ 20,7МБ;
jaxws ~ 15,4МБ;
langtools ~ 12,3МБ;
jdk/make ~ 13,2МБ;
jdk/src (вместе с javadoc в самих исходниках) ~ 130,7МБ;
jdk/test ~ 57,5МБ.

:))))

iZEN ★★★★★
()
Ответ на: комментарий от Siado

там на рсдн много других вещей нашел про то что про обычный js можно забыть в принципе. подозреваю что про REST тоже можно забыть

wfrr ★★☆
() автор топика
Ответ на: комментарий от iZEN

Дык за жабой же тянется jvm большая и толстая а кутя компиляется.

А про добрую долю - это я не так написал, при разработке на кутях в qt4-core куча всяких полезных няшек.

Siado ★★★★★
()
Ответ на: комментарий от wfrr

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

Ну если результат их ваяния устраивает и заказчика и пользователей то вообще то они вполне себе даже правы. Главное, что работает и все довольны. А уж как это устроено внутри дело 10е.

bibi
()
Ответ на: комментарий от wfrr

спецом для тебя в топике написан вопрос жирным шрифтом.

А зачем? Ведь все же равно уже написали. Так что поздняк метаться. Нет, допустим, лично я не буду его использовать. В монстров разных мастей я уже наигрался вдоль и поперек. Но что с того то? 'Жопой чую' - это слабое объяснение. Хотя обычно интуиция редко подводит. Так что забей. Пятница. Возьми пивка или я не знаю чего там белки пьют и расслабься.

bibi
()

>тладка GWT приложения выполняется через GWT-консоль. Отладка в GWT-консоли – это обычный анализ логов. То есть, Вам придется забыть про всю мощь отладчика среды разработки

неправда

GWT тяжело интегрируется с другими продуктами (Spring, Acegi). Интеграцию сложно выполнить без нарушения стандартного цикла разработки под GWT, что может привести к несовместимости с будущими версиями GWT (нужно это учитывать)


сфигали?

Однако, GWT-панель инструментов представлена только в бинарной форме, и модификации ее не разрешены.


ORLY?
http://code.google.com/intl/ru/webtoolkit/terms.html
http://code.google.com/p/google-web-toolkit/source/

thevery ★★★★
()
Ответ на: комментарий от bibi

А зачем?

За печкой. И причины тому есть.

Ведь все же равно уже написали.

Даешь много велосипедов _расширяемых_ и _переносимых_. Как то так.

Так что поздняк метаться.

Не мой путь.

wfrr ★★☆
() автор топика
Ответ на: комментарий от thevery

неправда

Пруф.

сфигали?

Пруф.

ORLY?

Перечитай чукча, где там сорцы компилятора?

Тут шоле «The requested URL /p/google-web-toolkit/source/ was not found on this server. »

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

> проприетарных тухнологий

не знаю как GWT, но для разработки по мне это страшнее любой кривой технологии. первое время пока все соответствует примерам из how-to все выглядит замечательно ровно до того момента, пока не спотыкаешься о какую-нибудь хрень, которая слабо документирована или может вообще содержит баг, по которому не определишь это так задумано, или в следующей версии его исправят. Тут и с дебагером при отсутствии исходников можно топтаться 2 недели на одном месте пытаясь разными способом угадать мысли того человека, который создавал этот метод (и при этом ничего не добиться), а с учетом пункта «Отладка в GWT-консоли – это обычный анализ логов» можно скрестить пальцы и всеми силами надеяться, что такой проблемы никогда не случится.

bender ★★★★★
()
Ответ на: комментарий от Siado

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

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

то я тоже хочу бабла, так что бобро на моей стороне


Пейши веб на своих плюсах, посмотрим кто тебе будет платить бабло

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

>посмотрим кто тебе будет платить бабло

Ух ты, ты знаешь слово «бабло»?

Siado ★★★★★
()
Ответ на: комментарий от Siado

> Дык за жабой же тянется jvm большая и толстая а кутя компиляется.

Куда она «тянется»? Для полнофункционального плагина в браузере и на Рабочем столе (Java WebStart) скачать JRE 15МБ — не проблема.

За одним единственным VLC у меня тянется какая-то хрень на 391МБ в исходниках, ОДНИМ архивом ~ 153МБ. Скажи, это нормально?

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

За одним единственным VLC у меня тянется какая-то хрень на 391МБ в исходниках, ОДНИМ архивом ~ 153МБ. Скажи, это нормально?

Для BSD - нормально. Но даже для венды vlc 17 метров. так шо запуская свою венду

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

Но даже для венды vlc 17 метров. так шо запуская свою венду

На каждую программу, использующую QT4, иметь статически скомпилированный тулкит (нужной версии)? А жирно не будет?

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

>Куда она «тянется»? Для полнофункционального плагина в браузере и на Рабочем столе (Java WebStart) скачать JRE 15МБ — не проблема.

За одним единственным VLC у меня тянется какая-то хрень на 391МБ в исходниках, ОДНИМ архивом ~ 153МБ. Скажи, это нормально?


Ну ты сравнил жопу с пальцем. А вот скомпиленный VLC всего-то не больше 22 метров

Siado ★★★★★
()
Ответ на: комментарий от iZEN

> Web-контент — используются только HTMLv4 и CSSv2(v3). Динамический контент — используются плагины на стороне браузера. Больше ничего не нужно. Надёжность и безошибочность — в простоте.

Лорчую, флеш и сильверлайт наше все. Когда-то давно были еще апплеты, но это в прошлом

VIVA RIA

simple_best_world_web_master
()
Ответ на: комментарий от isden

۠> эта команда гребет кучу бабла. и кто же неправ, они (гребущие кучу бабла) или ты (гойворящий что они неправы)? =)

Зависит от цели: срубить бабла и забыть проект как страшный сон, или сделать няшный код и дрочить на красоту архитектуры. Лично мне неприятно работать по первой схеме

simple_best_world_web_master
()
Ответ на: комментарий от wfrr

>Пруф.

скриншот дебаггера что ли показать? или вас смущает hosted режим?

Пруф.


http://software-wonders.blogspot.com/2007/02/it-is-not-mistery-that-google-we...

Перечитай чукча, где там сорцы компилятора?


а где во фразе «GWT-панель инструментов» слово «компилятор»?

Тут шоле «The requested URL /p/google-web-toolkit/source/ was not found on this server. »


http://code.google.com/p/google-web-toolkit/source/browse/#svn/releases/2.0/u...

thevery ★★★★
()
Ответ на: комментарий от simple_best_world_web_master

примерно ты меня понял, особенно с учетом того разрабатывать продукты на этом поделии придется совсем не тем кто ее (платформу на основе GWT ) разработал.

wfrr ★★☆
() автор топика
Ответ на: комментарий от thevery

скриншот дебаггера что ли показать? или вас смущает hosted режим?

Да скриншот IE, а лучше оперы в которой отлаживается сие поделие.

а где во фразе «GWT-панель инструментов» слово «компилятор»?

Буквоедствуешь, ты лучше скажи как это может называться опенсуксем при таком раскладе.

http://software-wonders.blogspot.com/2007/02/it-is-not-mistery-that-google-we...

Это доказательство невозможности интеграции GWT

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

۠۠> туда тупо html код похоже не получится, надо поточнее изучить сей фокус. А так это в принципе не старшно ибо это не для веб сайтов а для ria, т.е. «приложений» а не статических страниц.

инклюдить js, через него генерить весь произвольный код, не?

simple_best_world_web_master
()
Ответ на: комментарий от simple_best_world_web_master

по сообщениям блоггеров туда js просто так не впихнуть

wfrr ★★☆
() автор топика
Ответ на: комментарий от simple_best_world_web_master

Это прост онизводит высказывания «Рест, как интерфейс в браузере - мертв.» до метанаций.

А про возможности GWT мы никогда не узнаем, ибо он проприетарен

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

> Это прост онизводит высказывания «Рест, как интерфейс в браузере - мертв.» до метанаций.

покажи хоть 1 сайт, _полностью_ реализующий рест, причем _без костылей._

simple_best_world_web_master
()
Ответ на: комментарий от Karapuz

Кстате, я все собираюсь осилить pcre и какой-то сборщик мусора к сям привернуть. Недавно видел один «сайт», написанный на сях, надо сказать проникся.

simple_best_world_web_master
()
Ответ на: комментарий от Karapuz

Кагапузик, тут не против явы а против

самой идиотской идеи компилировать ущербный язык Java в JS

думаю даже школьник уяснить различия статически типизируемых компилируемых языков и динамических. Тем более чо в js прототипирвоание а не наследование. Т.е. это похоже на подход:

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

wfrr ★★☆
() автор топика
Ответ на: комментарий от simple_best_world_web_master

покажи хоть 1 сайт, _полностью_ реализующий рест, причем _без костылей._

перечитай топик, тот не про комплексы фанатиков REST.

wfrr ★★☆
() автор топика
Ответ на: комментарий от simple_best_world_web_master

> Зависит от цели: срубить бабла и забыть проект как страшный сон, или сделать няшный код и дрочить на красоту архитектуры. Лично мне неприятно работать по первой схеме

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

isden ★★★★★
()
Ответ на: комментарий от isden

приятно/неприятно - дело десятое когда нужно кормить семью.

Исденьщик, милый, вопрос стоит о том чтобы покормить раз и забыть, или о том что нужно потом сопровождать и поддерживать. И о легкости «рубки бабала», так вот на текущий момент обсуждаемая тухнология делает проект нерасширяемым и не поддерживаемым, так что ввязаться в работу с ним это не срубить бабла, а отхватить гимора. И вопрос стоит в том как это объяснить людям несведующим.

wfrr ★★☆
() автор топика
Ответ на: комментарий от isden

> приятно/неприятно - дело десятое когда нужно кормить семью.

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

simple_best_world_web_master
()

Нет, это не спам^W^W^W^W^W^W^WНет, это не троллинг, я действительно считаю, что время сайтов на html+css+js прошло. Это примерно как писать на асме во времена говнокода на всяких визуальных средах. Красиво конечно, но долго, дорого и утомительно, а когда видны успехи говнокодеров - еще и завидно иногда. Раньше как было? Нужно тебе какую-то базу данных вести - пиши софтину сам, потом стали лепить говноформочки на фоксе, дельфи, затем в моду вошел веб и стало модно делать «тонких клиентов» на похапе или жумле/шарпоинте.

Клиенты меняются, а логика базостроения остается. Браузер как клиент уже умирает - ему на смену приходят rss, im (xmpp/irc/icq), появляются богатые медиа-среды вроде Flash, где с 10 версии уже доступно 3D с шейдерами, причем реализуемое на уровне GPU и всякие другие гугловейвы со своими протоколами. Даже красноглазики могут поюзать всякий svg+js+comet, изобретая свой велосипед для медиаприложений. Протоколов/форматов данных за последнее время появилось дофига, браузеры со своим голым html скоро отойдут на второй план.

Да и сам HTML - что это? Неудачная попытка перенести концепцию бумажных страниц в компьютер с впихиванием квадратиков с различным содержимым, а гипертекст в текущем виде - это имитация книжных закладок, т.е. костыль by design. Ну неудобно закладки расставлять в книгах, равно как бегать в браузере по истории, поэтому уже в каждом браузере появились вкладки, позволяющие никуда не уходить с начитанного места.

Как язык разметки именно текста - оно тоже мертво. Смерть началась с Нетскейпа, где для создания табличек с тонкими рамочками надо было сгенерить код на десятки килобайт, создавая таблицу с черным фоном и закрашивая каждую ячейку в белый цвет отдельно. Да и сегодняшние костыли со всякими цсс-хаками порой не лучше. Боролись за переносимость и где же она? А нету ее. Надо подстраиваться под каждый браузер отдельно, сводя на нет идею ручного написания. Это все равно, что писать код под каждый процессор и его баги отдельно, что опять возвращает нас к асму. Есть конечно вариант - можно писать для ИЕ, все равно это доминантная платформа, но вот для моей ОС его еще не изобрели. Да и не надо.

Да и вообще... HTML был изобретен в 1989 году, как средство хранения статической информации, а сейчас куда не плюнь - везде динамика, юзеры сами наполняют порой на 100% содержимое сайта, параллельно с основным текстом страницы обычно скармливаются всякие «последние сообщения васи» или «вы недавно посмотрели ...» или «нас сейчас читают», что убивает еще и кеширование страниц. Какой кеш, если страница каждый раз разная, хотя основная информация на ней не меняется?

А тем временем MS уже тестирует свою систему интерактивного ТВ, это когда вместо текста пойдет видео с сабами, блекджеком и шлюхами, сгенерированное для каждого юзера персонально, специально по его запросам, а где-то внизу будет крутится таргетированная реклама, которую не вырезать в принципе, ибо она вшита в видеопоток.

Краткий итог сему высеру: html+js+css, как средство нативного создания сайтов, практически мертво, и скоро будет одним из многих средств отрисовки/доставки, как когда-то была видеопамять видяшки. И сайты надо делать не на похапе/хтмл/цсс, а писать полнофункциональные информационные системы с интерфейсом в виде веба, пока он еще не помер. Например, писать на java, в морды делать на всяких GWT.

simple_best_world_web_master
()
Ответ на: комментарий от wfrr

> так вот на текущий момент обсуждаемая тухнология делает проект нерасширяемым и не поддерживаемым

А вообще это в духе рашки - получить проект, допилить на 95%, потом бросить и начать писать с нуля. Бабло то пилить надо. PROFIT.

simple_best_world_web_master
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.