Уместен ли GWT для новых проектов?

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

В настоящее время GWT стал более зрелым

С 2009 года вопросы / ответы GWT эволюционировали, и некоторые JS-фреймворки доступны на Java:

  • GwtQuery для jQuery (gQuery)
  • GXT для ExtJS (бывший ExtGWT)
  • Smart GWT заменил GWT-ext
  • ... и, конечно же, многое другое ... (пожалуйста, добавьте)

И даже больше, код Java можно преобразовать в автономные библиотеки JS: gwt-exporter

Но низкоуровневых JS-фреймворков может быть достаточно

Но чем больше я читаю, тем больше я вижу веб-разработчиков, которые советуют отвернуться от GWT и напрямую использовать JS-фреймворки (Firebug, IDE плагины для JS-фреймворков ...).

Производительность

Однако мне нравится идея разработки и отладки с использованием одной и той же среды IDE (Eclipse, Netbeans, IntelliJ IDEA ...). Я думаю, что буду более продуктивным ... Я также должен подумать о документации и сообществе (реакция форума на этот вопрос SO) ...

Вопросы

  1. Для какого нового проекта 2014 года следует (или нет) рассматривать GWT?
  2. Существуют ли подходящие альтернативы GWT для упрощения разработки и развертывания веб-приложений AJAX?
  3. Каковы текущий режим и тенденция?

Мой конкретный случай

Я только что завершил POC (веб-приложения интрасети) на основе Python3 (http.server.HTTPServer), вызывающего (POST) bash скрипты (некоторая обработка на C ++) и получение данных JSON. Некоторые JS (без фреймворка) на веб-странице для рендеринга. Поэтому мне интересно, какой вариант лучше всего подходит для следующей итерации.

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


ОБНОВЛЕНИЕ, октябрь 2015 г.

GWT выглядит менее активным, потому что новых выпусков нет с 11 месяцев. Но раньше до 13 месяцев между версиями 2.4 и 2.5. Зеркало репозитория Git все еще очень активно. Более того, GWT является расширяемым, и новые функции могут поступать из библиотек GWT, не требуя новой версии инфраструктуры GWT. См., Например, наиболее распространенные мобильные библиотеки GWT и соответствующие циклы выпуска. А пока есть тенденция использовать Node.js повсюду! Принятие GWT для новых проектов действительно зависит от навыков / мотивации разработчиков и срока службы проекта (оборот / обучение / сопровождение). Некоторые другие критерии, такие как повторное использование доступного исходного кода и время выхода на рынок, также могут быть приняты во внимание ... См. Отличные ответы ниже.


person oHo    schedule 20.11.2013    source источник
comment
В этом посте может быть запрошено личное мнение, но я думаю, что этот вопрос заслуживает того, чтобы остановиться на SO, потому что он представляет общий интерес и хорошо проработан.   -  person Lorenz Meyer    schedule 20.11.2013
comment
Я согласен с вами @LorenzMeyer: Нелегко запрашивать советы по технологическому решению, не вызывая личного мнения (личные слабости, обмен личным опытом ...). Надеюсь, что ответы будут объективными и полезными для других. Скажите, пожалуйста, что мне следует улучшить в своем вопросе (заголовке?) Ура;)   -  person oHo    schedule 21.11.2013
comment
Через год после этого вопроса, через год после последнего выпуска GWT. Для кого-то, кто оценивает это для нового проекта, это звучит как бы мертво.   -  person Matthew Cornell    schedule 19.10.2015
comment
Извините, я имел в виду 11 месяцев, и мне кажется, что никаких новых релизов нет, как будто проект не очень активен. Я понимаю, что это всего лишь одна точка данных (возможно, в код были регулярные обновления), но это заставляет меня немного беспокоиться о целесообразности их использования в будущем.   -  person Matthew Cornell    schedule 19.10.2015
comment
Спасибо @MatthewCornell за ваш отзыв. Да, GWT выглядит менее активным. Но помните: 13 месяцев между версиями 2.4 и 2.5. зеркало репозитория Git все еще очень активно. Более того, GWT является расширяемым, и новые функции могут поступать из библиотек GWT. См., Например, наиболее распространенные библиотеки GWT для мобильных устройств и соответствующие циклы выпуска. А пока есть тенденция использовать Node.js повсюду! Это действительно зависит от навыков / мотивации разработчиков ...   -  person oHo    schedule 20.10.2015


Ответы (5)


Для пункта 1 я могу дать вам несколько критериев, которые я бы использовал:

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

Потребности в отладке в контексте вашей целевой платформы также являются для меня критерием. Отладка кода GWT очень удобна, если у вас есть браузер, который поддерживается DevMode или, по крайней мере, может использоваться с новыми исходными картами на основе SuperDevMode. Например. Safari в MacOS X не поддерживается. Для мобильных устройств вы можете удаленно отлаживать JavaScript в Android Chrome, но, насколько мне известно, это невозможно для GWT.

Еще один критерий для меня - размер команды и текучесть кадров. Инструменты на основе Java (IDE, средства проверки качества кода, ...) помогают разработчикам, особенно новичкам, ориентироваться в коде других разработчиков. Это также верно для других языков статических типов, но вы просили GWT / Java.

Следующий вопрос - стек ... GWT легко решает клиентскую и удаленную коммуникационную часть, если использовать контейнер сервлетов на стороне сервера. Его также легко комбинировать со зрелыми корпоративными технологиями Java (JPA, EJB, Spring framework, ...). Это большая сила, если вам нужен / вы хотите иметь стек. Если вы собираетесь работать в многоязычном режиме без JVM на стороне сервера (как упоминалось выше), этот вариант не для вас.

Конечно, есть больше критериев для фреймворков GWT и JavaScript.

И большой вопрос в предпочтениях. В JavaScript есть действительно хорошие концепции (например, замыкания), но он также представляет собой риск из-за динамической типизации. Какой из них вы предпочитаете?

По пункту 2:

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

Относительно пункта 3:

  • Я бы определенно взглянул на TypeScript, потому что он улучшил набор текста и совместимость с JavaScript.
  • Насколько я помню, у Дарта похожая цель
  • Вечнозеленым является JQuery, но в зависимости от ваших потребностей есть хорошие альтернативы. Но это очень субъективно
  • Для виджетов подойдет Twitter Bootstrap (http://getbootstrap.com/), если это вам подходит. Есть даже его версия для GWT (http://gwtbootstrap.github.io/)
person Steffen Schäfer    schedule 20.11.2013
comment
Большое спасибо, Штеффен, ваш ответ помогает принять решение. Спасибо также за ссылку GWT-Bootstrap;) Если хотите, можете также упомянуть Node.js как текущую тенденцию. . Жду других ответов, прежде чем принять ... Ура;) - person oHo; 22.11.2013
comment
Как насчет 5 минут компиляции, которые я читал в других ветках GWT? - person Toskan; 15.07.2014
comment
Для разработки есть способы избежать 5+ минут компиляции, поскольку вам обычно не нужна полностью оптимизированная версия при тестировании в качестве разработчика на localhost. С моей точки зрения, при сборке для производства это не проблема (используйте для этого большой сервер). Если вы сделаете то же самое со своим JS-приложением (встраивание CSS / изображений / ..., объединение всех исходных кодов, минификация / обфускация, идеальное кеширование, ...), вы в конечном итоге используете несколько инструментов, которые займут гораздо больше времени в всего, чем компилятор GWT. И да, вы должны сделать все это, если вам важны задержки, пропускная способность и другие вещи. - person Steffen Schäfer; 17.07.2014
comment
Итак, сколько времени на компиляцию вы на самом деле затрачиваете при использовании настроек разработки? - person Toskan; 11.12.2014
comment
Ориентир ... Мой самый большой проект GWT - это около 10 тысяч строк кода. Я запускаю режим super dev в разработке (GWT 2.7). Цикл разработки - это редактирование, сохранение файла, нажатие кнопки обновления GWT-eclipse-plugin, кнопка обновления в браузере, и мое приложение отображается за секунды. Другое дело - производственная компиляция. Компиляция для оптимизированного вывода для всех основных браузеров занимает около минуты. Предостережение: я использую 6-ядерный Mac Pro с SSD и 16 ГБ оперативной памяти, поэтому я уверен, что это поможет ускорить процесс. - person Stinky; 01.07.2015
comment
По моему личному мнению, gwt слишком сложен. На самом деле вы не можете написать просто java-код. Вместо этого вам нужно искать в поддерживаемых библиотеках. Например, нет jodatime (см. Первый комментарий) в gwt. И это только открытый пример. С моей точки зрения, лучше использовать Angular как фронтенд с чистым отдыхом вместо gwt. - person Cherry; 01.12.2015
comment
Я могу просто сказать вам, что мне дали проект GWT для исправления, и это большая проблема, потому что: GWT устарел, имеет внутренние ошибки и зависит от конкретной IDE и плагина браузера. В настоящее время для запуска подключаемого модуля отладки GWT необходимо установить Firefox 24 . Может быть, когда-то GWT был хорош, но теперь он создает больше сопротивления, чем тяги, так сказать. - person Tomáš Zato - Reinstate Monica; 07.03.2016

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

Я просто хотел добавить 1 свой субъективный момент. Реальность такова, что большинство разработчиков - это так называемые backend-разработчики без знаний, опыта и, самое главное, желания разрабатывать веб-интерфейс. Реальность ИТ-рынка США такова, что большинство предпочло бы Java в своем резюме JS, PHP, Python и другим экзотическим языкам. Причина - компенсация. Java-разработчикам в среднем платят больше. Не уверен насчет других стран.

Таким образом, большинство разработчиков в компании будут разработчиками Java (или .NET, о чем идет речь). Чтобы заставить их работать в пользовательском интерфейсе, вы должны использовать Java-совместимую технологию, например JSP или GWT. JSP потребовалось бы изучить библиотеки JS, чтобы сделать интерфейс более или менее презентабельным.

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

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

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

В этом случае вы можете обойтись без GWT, который менее чужд Java-разработчикам, чем jQuery и высокоуровневые библиотеки, такие как GXT со стандартной темой.

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

person ATrubka    schedule 04.12.2013

Просто перейдите на страницу примеров GWT, демонстрацию реальных примеров приложений GWT

Просто прочтите о сверхтяжелой природе этих примеров.

Сам GWT не такой легкий, и я сомневаюсь, что он был разработан для создания датпикера. GWT - это нечто совершенно иное, чем jQuery. Возможно, он более сопоставим с JSF2, чем с jQuery. На вопрос «следует ли мне использовать GWT или jQuery?» Можно ответить так:

если вы хотите добавить датпикеры, некоторые эффекты, сортируемую таблицу, автозаполнение здесь и там. Вам, вероятно, следует использовать jQuery.

Если вы хотите выяснить, хотите ли вы использовать GWT в качестве механизма / механизма внешнего интерфейса, вам следует рассмотреть другие, которые фактически сопоставимы. При обсуждении Java, вероятно, ваш единственный выбор - JSF2. И кривая обучения JSF крутая.

Копаю глубже и нашла грустный пост:

http://polygoncell.blogspot.mx/2013/07/gwt-for-new-project-no-thanks.html

Я зашел на эту страницу, потому что читал о грядущих проектах, таких как AngularJS, Backbone, одностраничные приложения (SPA): короче говоря, Google отказался от GWT. GWT теперь с открытым исходным кодом, потому что они просто отказались от него. Теперь AngularJS получил большой толчок от Google.

РЕДАКТИРОВАТЬ наш дорогой Андрей сказал мне "доказать мою точку зрения"

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

1) Зайдите на свой любимый сайт о вакансиях

2) Найдите {интересующую вас технологию} вакансии

3) Проверьте количество вакансий, требования к соответствующей технологии и т. Д.

4) Повторите №2 и №3 для конкурентных технологий.

5) Оценить

сегодня, 19. мая 2016, на upwork я искал GWT вакансий.

Вакансий: 23.

Я искал angularjs вакансий.

Вакансий: 1338. Верно. одна тысяча триста тридцать восемь.

точка доказана?

person Toskan    schedule 15.07.2014
comment
@Tokskan Короче говоря, google сбросил GWT ... Обновите, почтовый ящик google (новый продукт google) использует GWT: googlewebtoolkit.blogspot.com/2014/11/ - person Stinky; 28.05.2015
comment
правда, звучит многообещающе то, что они пишут. Еще одно приложение для супертяжеловесов, конечно. Посмотрим, что принесет будущее. - person Toskan; 28.05.2015
comment
Я думаю, это зависит от того, что вы подразумеваете под тяжелым. Я переписал приложение ADF (фреймворк на основе JSF, который я считаю тяжелым) в очень оптимизированный GWT (убрав стандартные стили GWT, скомпилировав все CSS, изображения и т. Д.), И это уменьшило требуемую полосу пропускания на 75% и количество запросов на построение страницы на 90%. Это рендеринг одного и того же контента, изображений и т. Д. По сравнению с ADF, я бы определенно сказал, что GWT может быть очень легким (очевидно, вы научитесь оптимизировать любой инструмент, который вы используете). Я не могу сказать, как он сравнивается с обычным JS с библиотеками. С чем вы это сравнивали? - person Stinky; 28.05.2015
comment
с тяжелым я на самом деле имел в виду больше стиля настольных приложений. В этом смысле тяжелый. Уловки соединений и зависимостей практически во всех элементах. Конечно, это сильно снизит нагрузку. - person Toskan; 28.05.2015
comment
Ах, я понимаю, что вы имеете в виду. Google Adwords (упомянутый здесь gwtproject.org) может быть примером более простого классического примера в отличие от замены настольных приложений. - person Stinky; 28.05.2015
comment
Именно поэтому такие вопросы редко допускаются в StackOverflow. Вы делаете здесь очень предвзятое заявление. Если вы делаете заявление о чем-либо, вы должны доказать это. В противном случае не делайте таких заявлений. - person Andrews; 19.05.2016
comment
@ Эндрюс, почему бы вам не пойти дальше и не заявить, почему мой пост предвзят? вместо того, чтобы просто плакать о том, как несправедлива жизнь. - person Toskan; 20.05.2016
comment
@Stinky cough google adwords, безусловно, отличный пример непростого примера. Вы действительно говорите, что механизм Google Adwords прост? хлеб с маслом, источник дохода Google? но я думаю, вы больше имеете в виду, что он не занимает весь экран? загружается быстро? - person Toskan; 20.05.2016
comment
@ Эндрюс, я обновил свой ответ. Это нормально для тебя сейчас? - person Toskan; 20.05.2016
comment
@Toskan Это доказывает мою точку зрения. Теперь действительно ясно, что ваше утверждение основано на некотором базовом представлении о технологии, а не на технической или оценочной логике. Чтобы прояснить ситуацию, GWT предназначен для разработчиков Java, ищите разработчиков Java. Кроме того, наличие рабочих мест для конкретной технологии не обязательно является показателем того, является ли эта технология более сильной. Причин может быть множество. Ответственность за доказательство лежит на тебе, потому что ты заявляешь это здесь, а не я. - person Andrews; 20.05.2016
comment
хаха хорошая шутка, чувак: D это действительно рассмешило меня. Теперь Java-разработчик - программист. Почему бы нам не искать программиста вместо поиска GWT? ты действительно смешной. ха-ха :) - person Toskan; 21.05.2016

Думаю, чтобы ответить на пункт 1, вам нужно будет посмотреть, какова ваша текущая ситуация и каковы ваши цели.

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

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

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

В пункте 3, где я работаю, мы, кажется, движемся к использованию JS-фреймворков (в частности, AngularJS) с некоторыми (новыми) серверами / службами, написанными на Python и Groovy, а устаревшие системы все еще находятся на Java. У нас также есть несколько сервисов, написанных на Clojure.

person Nick    schedule 13.09.2014
comment
GWT имеет компилятор Java для JS, а не байт-код JVM для компилятора JS. Это означает, что другие языки JVM могут использоваться только для бэкэнда. Фронтенд должен быть написан на Java. - person user7610; 06.11.2014

GWT уместен. Им пользуются 130 000 разработчиков. Если вы мне не верите, просто посмотрите на [GWT возвращается в ... в 2015 году] [blog.xam.de/2014/02/gwt-is-coming-back-in-2015.html] и еще один вопрос по stackexchange. который говорит об этом. GWT не должен быть вашим первым вариантом, потому что он добавляет много сложности.

Для каких проектов подходит GWT? GWT намного сложнее:

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

Однако он чище, удобнее в обслуживании, это java, он быстрее, и вы можете повторно использовать свой код на jvm и ios, если используете J2ObjC

есть несколько очень веских причин использовать GWT - Java
- повторно использовать свой собственный код с других платформ. Например, почтовый ящик Google повторно использует большую часть своего кода Android в Интернете с помощью GWT и повторно использует его код снова на iPhone (спасибо J2ObjC) и на сервере (спасибо за способность JVM работать на многих разных платформах). - использовать библиотеки и инструменты java, разработчики java - многие разработчики предпочитают java js и имеют веские причины предпочесть его - созданы с нуля для сложных, производительных веб-приложений. - Код Java чище и удобнее в обслуживании

GWT снижается согласно тенденциям Google и действительно тенденции в сфере вакансий, но javaScript и jQuery также снижаются. Я не знаю, почему все эти технологии падают. Моя теория заключается в том, что существует множество новых фреймворков, которые крадут разработчиков из GWT и javaScript. Я не думаю, что это обязательно означает, что javaScript и GWT еще умирают. Это не более чем результат гораздо большей конкуренции.

person Community    schedule 13.11.2014