Почему я должен использовать jQuery вместо GWT?

Мне нужно решить между jQuery и GWT для моего нового проекта.

Я не программировал в JavaScript некоторое время, и я смотрел в GWT в течение последних нескольких дней. Это выглядит довольно удивительно, но все разные JS для разных браузеров и всего:

  • Разработка в Java занимает больше времени, чем одно и то же, используя jQuery (по крайней мере для этого проекта)
  • документация плохая (например, как я должен знать, какие элементы следует использовать при разработке страницы?), для этого недостаточно документации)

Я использую jQuery для большинства своих проектов, и это довольно хорошо.

Я хочу убедить клиента в том, что jQuery лучше подходит для этого проекта, и мне нужно больше аргументов для поддержки этого.

Ответ 1

Я бы пошел с JQuery.

Я когда-то поддерживал проект GWT, который в конечном итоге заставил меня перезаписать его дважды. Сначала как рефакторизованное приложение GWT, второе в JQuery.

Я не касался Javascript всерьез в течение очень долгого времени. Последний раз было около 2002 года. Я разработчик Java, поэтому первое впечатление о GWT было потрясающим. Но это было просто впечатление.

Проблемы с GWT:

  • Это заставляет вас следить за своей структурой клиент/сервер. В конце концов, все, что я хочу, это AJAX и те хорошие виджеты. Виджеты GWT сами по себе не кажутся такими красивыми. Эстетически, я предпочитаю Adobe Flex! Но чтобы сравнить сравнение, пользовательский интерфейс JQuery выглядит лучше, чем GWT. Кроме того, у вас есть замечательная поддержка Theme Roller от JQuery.

  • Я пробовал DWR. Это здорово. Гораздо проще включить AJAX в код Java, используя DWR, чем GWT.

  • Если вы используете GWT, в конечном итоге вы будете вынуждены изучать JavaScript. Arjen из SpringSource однажды сказал о XML и SOAP (хотя и не о точной цитате): "Как вы можете создавать WebServices и не знать XML? SOAP - это XML. Вы не можете избежать этого". То же самое с GWT. Это все еще Javascript в конце.

  • Реально, Javascript не так уж трудно учиться против Java. Больше людей знают Javascript, чем Java. Даже веб-дизайнеры знают это. Вы программист, и вы боитесь Javascript?

  • Вернемся к проекту, который я переписал. Когда я переписал наше приложение GWT, мне потребовалось почти два месяца, чтобы переписать его. С JQuery мне потребовались две недели, и я был ржав с помощью JavaScript.

  • С JQuery вы действительно не пишете hardcorde JavaScript. Вот почему вы используете JQuery в первую очередь. Поддержание кода с GWT ужасно. Вы хотите увидеть последние изменения, которые вы сделали в коде... go compile... ждать GWT... 5 минут... ополаскивать... и повторять и надеяться, что это не вызовет ошибку. Если это произойдет, вы снова будете перекомпилировать и ждать еще 5 минут. Промыть и повторить. С помощью JQuery измените строку, обновите браузер. Готово.

Я знаю, что я не объективен здесь, но я просто делюсь своим опытом:) Мораль не боится Javascript. Google использует Javascript в любом случае

Ответ 2

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

Однако , если вы знаете и понимаете JavaScript, я бы использовал JavaScript, независимо от выбранной вами библиотеки. Хотя у меня не было возможности слишком тщательно проверять сгенерированный код GWT, я видел несколько примеров в Google I/O, и, хотя он выглядел все конфеты и блестки, вы, скорее всего, создадите более элегантный код JavaScript, сделав это ol 'fashioned путь.

Ответ 3

Если ваша группа больше всего знакома с Java, и вы планируете выполнять значительную часть клиентской функции, вы должны хотя бы оценить GWT. Безопасность типов, отладка Eclipse и общий код между серверной/клиентской стороной будут чувствовать себя комфортно для вашей команды разработчиков Java.

Однако, если ваша команда используется для программирования JavaScript с помощью jQuery или другой библиотеки JavaScript, тогда может быть проще придерживаться технологии, которая является чистым JavaScript. GWT имеет способ захвата больших разделов страницы, что не знакомо большинству разработчиков JavaScript. Перейдя по странице, я имею в виду, что типичный код GWT любит создавать свои собственные элементы DOM вместо добавления функциональности существующим элементам на странице. Вот почему во многих приложениях GWT есть экран "загрузка..." при первой загрузке страницы. Это необязательно, но это наиболее распространенный стиль разработки GWT.

Тот факт, что генерируемый код выходит из GWT, менее важен для большинства разработчиков GWT. GWT позволяет вам скомпилировать Java в нечто эквивалентное нормальному java *.class файлу, но в синтаксисе JavaScript, который веб-браузер понимает как интерпретировать. GWT действует скорее как компилятор, чем генератор кода, управляемый шаблонами. Иногда вам нужно будет проверить сгенерированный код, но по большей части ваша отладка будет на Java через ваш отладчик Java.

Еще одна вещь, о которой стоит подумать, заключается в том, что независимо от выбранной вами клиентской технологии ваша команда разработчиков должна быть знакома с HTML, JavaScript, CSS и браузером в целом. GWT позволяет писать код на стороне клиента в знакомой среде Java, но не скрывает того факта, что вы работаете в браузере.

Ответ 4

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

Итак, если у вас куча статических сторон с некоторыми независимыми виджетами, такими как календарь, слайдер и т.д., достаточно jQuery. Если вы хотите создать одностраничное приложение, возможно, с большой командой, GWT - лучший способ. GWT имеет богатую архитектуру дизайна под капотом, особенно сборку в шаблоне MVP, систему шаблонов UI-Binder, поддержку i18n и т.д.

Так как разработчик JavaScript работает более года на большом приложении GWT, я бы рекомендовал никогда не создавать одностраничное приложение только с jquery, потому что оно не создавалось. Если вы хотите использовать JavaScript, посмотрите на позвоночник, позвоночник, нокаут или dojo.

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

Ответ 5

"Лошади для курсов"

Выберите, какой смысл имеет смысл для проекта. Некоторые вещи, чтобы рассмотреть

  • Тесные временные рамки и более знакомые с одним над другим
  • Скорость и техническая поддержка других разработчиков для использования выбранного инструмента. Распространенность одного над другим может также иметь последствия здесь.
  • У вас есть код, который можно использовать уже в проекте, например. плагинов, служебных функций и т.д.

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

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

Ответ 6

Ответ непрост. Ответ "это зависит":

GWT:

  • если вы знаете и как Java
  • если код сервера также написан на Java, запись кода клиента в Java позволяет использовать тот же код на клиенте и сервере
  • если вам нравятся вещи, предоставляемые строго типизированными языками: проверка типа компиляции, автоматическое рефакторинг, автоматическое создание кода (Ctrl + 1 в Eclipse), завершение кода (Ctrl + пробел)
  • если вам нравится компонентно-ориентированное программирование (например, MenuBar создает меню)
  • если сложность GWT (по сравнению с jQuery) не проблема для вас
  • если большой сгенерированный код не является проблемой для вас

JQuery

  • если вы знаете и как JavaScript
  • вам не нужно использовать тот же код на клиенте и сервере (например, клиент - JS, сервер - Java или PHP).
  • если вам не нужна проверка типа времени компиляции, автоматическое рефакторинг и т.д.
  • если вам не требуется компонентно-ориентированное программирование (для создания сложного компонента в jQuery вам необходимо создать серию divs и вызвать $( "те divs" ). makeXXXXControl())
  • если вам нравится простота (jQuery проще GWT)
  • если вам нужен очень маленький код (например, чтобы ускорить загрузку сайта)

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

Ответ 7

Я согласен с Russ Cam, что это зависит от того, с чем знакома ваша команда. Когда я работаю над своими личными бизнес-приложениями, я предпочитаю GWT. Я считаю javascript, даже с jquery, иметь раздражающий объектно-ориентированный синтаксис. Если у вас есть приложение с 10 000 строк кода пользовательского интерфейса, jquery поражает меня как что-то, что может привести к беспорядку сдерживания кода с плохим повторным использованием.

Кто-нибудь знает о крупномасштабном проекте, выполненном в jquery?

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

Что-то подумать о javascript/jquery против gwt. Если вы используете общие объектно-ориентированные принципы и шаблоны проектирования, вы, скорее всего, получите более эффективный код с gwt. Почему?

Возьмем пример полиморфизма. Если вы пишете приложение, в котором используется тяжелый полиморфизм в javascript, вы получите преимущество maintanability и повторное использование кода, которое это обеспечивает. Тем не менее, ваш код также получит удар производительности при использовании полиморфизма.

Теперь, если вы использовали gwt, вы также получите преимущество maintanability и повторное использование кода, которое это обеспечивает, но компилятор gwt оптимизирует полиморфизм в конкретном использовании класса, что увеличивает производительность.

Ответ 8

Я думаю, что GWT - слишком большая абстракция. Javascript на самом деле является мощным языком. Вы можете написать объектно-ориентированный код и использовать пространства имен. В библиотеке, подобной jQuery, вам не придется беспокоиться о проблемах с совместимостью браузеров для большей части того, что вы делаете. Благодаря всем доступным инструментам разработчика браузера (например, Firebug) во всех основных браузерах сейчас очень легко работать с javascript. Когда возникает ошибка javascript, я могу легко определить, где это произошло в моем коде. Я могу смотреть переменные и знать все, что происходит подробно, потому что я работаю против кода, который я написал (в отличие от GWT).

Ответ 9

Основные проблемы, которые я вижу с GWT против собственного Javascript-решения (jQuery или другие):

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

  • Поскольку вы пишете свой код в Java, вы можете использовать библиотеки Java. Если вы найдете какую-нибудь библиотеку JS, которая вам нравится, было бы сложно добавить ее в свой проект GWT, вам может понадобиться написать для нее оболочку Java. Если вы разрабатываете собственный JS, вы можете просто добавить его в свой проект.

  • JS - это удивительный язык сам по себе, с твердой объектной моделью, отличной от Java. Я разработал несколько приложений в родной JS для HP webOS и с удивлением обнаружил, что многие из предубеждений, которые я имел о языке, были неверны. Вы можете писать чистый, эффективный и поддерживаемый код в JS столько, сколько вы можете в Java, и если вы потратите время на понимание объектной модели JS, вам даже не понадобится использовать библиотеку поддержки, чтобы имитировать более типичный класс/объект модель, подобная Java и С++ поверх JS. Прототипы Javascript довольно круты.

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

Удачи.

Ответ 10

jQuery = понимание низкого уровня

Помимо обычного javascript, а другой - объяснения java, JQuery имеет более близкое сопоставление один-к-одному с javascript, в то время как GWT более абстрагируется. Поэтому, если вы предпочитаете более глубокое понимание того, что происходит с вашим кодом на низкоуровневом (javascript), тогда jquery - правильный путь.

GWT = понимание абстракции = функциональная гарантия

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

понимание низкого уровня может быть более полезным

Лично я получаю гораздо больше удовольствия от кодирования самого низкого уровня. Я создал некоторые веб-приложения на работе из чистого javascript, который функционировал безупречно. После написания javascript-кода, который взял данные из базы данных и сгенерировал полный отчет по исследованиям в Microsoft Word. Сложность этого проекта требовала более низкого уровня javascript. Я не уверен, что это можно было бы сделать легко с помощью Java-решения.

GWT заверяет менеджеров, но дорого стоит

Но опять же, java и asp.net предпочитают более крупные компании b/c, есть большая техническая поддержка (то есть Oracle и Microsoft), и у недосягаемых менеджеров на рынке, как правило, лучше спать по ночам, когда они знают, что они может решить проблему A, просто заплатив x сумму долларов за поддержку. Поэтому, приняв систему, они вскоре начинают понимать, что расходы на техническую поддержку слишком много, и дешевле платить больше за лучших разработчиков. Следовательно, карьера java или .net обычно кладет пищу на стол.

ремонтопригодность

Также API, подобный GWT, легче поддерживать. Я мог только представить себе ужас, который кто-то пропустит, если им придется отлаживать мой javascript-код. Но это было до того, как я стал лучшим и чистым программистом, и поскольку я знал каждый аспект кода, отлаживать b/c не было, с ним никогда не было проблем.

Низкоуровневое кодирование дает вам почти 100% -ное понимание того, что происходит, однако с API вы тратите время на поиск детектора ошибок в Google и размещение вопросов на таких сайтах, как StackOverflow. Но менеджеры не понимают этого b/c, большинство из них не программисты.

Ответ 12

GWT - это компилятор (Java для JavaScript), а jQuery - это фреймворк. Вам не нужно выбирать один над другим. Вы можете использовать один из них, оба или нигде.

Например, вы можете закодировать на Java, если хотите или имеете существующий исходный код, а затем использовать jQuery для других вещей. Доступны обертки, но GWT может вызывать JavaScript (и наоборот), см. http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/

Ответ 13

Мое личное мнение было бы для jQuery, но это потому, что я никогда не использую Java и действительно люблю использовать плагины jQuery.

Ответ 14

Активная группа пользователей и недавняя набирающая популярность четкое обозначение jQuery - победитель.