Проработав на двух проектах, использующих GWT для UI, сформировал о нем не самое хорошее мнение:
1. GWT нужен тем, кто не хочет учить javascript.
2. Пока собирается maven билд с GWT модулями, можно успеть сходить на обед. Оптимизация среды слегка помогает.
3. Если хочешь добиться правильного поведения UI, то почти всегда надо писать свой компонент. И даже изредка с native javascript кодом.
4. Отладка GWT проста... до определённого уровня. После этого уровня она резко становится намного сложнее чем отладка просто javascript.
Но сегодня я понял, что не одинок в этом мнении. Вот статья "Почему GWT не будущее веб-разработки": http://www.cforcoding.com/2009/10/lost-in-translation-or-why-gwt-isnt.html
Автор сей статьи выдает такие контр-тезисы к основаниям GWT:
1. GWT приносит четкую типизированность Java, чего нету в javascript
Жесткая типизация происходила из утверждения что жестко типизированный код лучше читается и быстрее компилируется/выполняется. Однако как показывает практика, нетипизированный код читается тоже неплохо, что доказывается десятками популярных javascript-фреймворков. А прирост скорости на современных PC абсолютно не играет роли.
2. Javascript девелоперов мало, а Java девелоперов много
Звучит практично, но если нам надо написать книгу на русском, есть ли смысл писать её на английском, а потом переводить? Как показывает практика, в итоге им все равно приходится учить javascript.
Кроме того, кросс-компиляция имеет множество недостатков:
-Слабости java и javascript объединяются, и их получается ещё больше.
-Сильные стороны java и javascript пересекаются, и в сумме их становится меньше.
-Архитектурные идиомы языков отличаются
-Дополнительное абстрагирование от javascript вносит свою путаницу
3. GWT предоставляет библиотеку компонент, достаточную для любых целей
Однако любой кто писал на GWT сталкивался с недостатком функционала виджетов. Даже Ext/SmartGWT не решает этой проблемы, и приходится клепать свои компоненты. Для javascript такой проблемы обычно не возникает - даже самый экзотический виджет обычно уже кем-то реализован.
4. Скорость разработки на GWT выше скорости разработки на javascript
Достаточно один раз собрать достаточно большой GWT модуль чтобы расстаться с этой иллюзией. А на javascript все делается мгновенно. В принципе, это главный косяк GWT. Если с остальным можно мирится, то этот неприемлем (впрочем, медленные итерации кодинг-проверка это проблема не только GWT). Частично это решается разгуливанием всего в модули, и помодульной пересборкой и деплойментом. Также можно настроить перекомпиляцию только измененных классов. Но оба этих приема применимы далеко не всегда.
5. GWT вносит свои коррективы в дизайн приложения. Однако не каждому приложению подходит дизайн a-la Gmail.
6. Javascript позволяет писать намного меньше кода, чем это надо в GWT. Это в первую очередь вызвано тем, что в Javascript есть естественная работа с хэшмэпами, а в Java для этого требуется множество строк кода. Поэтому послойное абстрагирование из Java плохо прокатывает в GWT.
7. Программист изучает не язык программирования, а идиомы программирования. Именно поэтому C# и Java так похожи. И также, поэтому, трансляция с Java на Javascript такая сложная и неестественная.
среда, 4 апреля 2012 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий