Чому я повинен використовувати jQuery замість GWT? [зачинено]


75

Мені потрібно визначитися між jQuery та GWT для мого нового проекту.

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

  • розробка в Java займає більше часу, ніж те саме, за допомогою jQuery (принаймні для цього проекту)
  • документація погана (наприклад, як я повинен знати, які елементи слід використовувати при розробці сторінки? - для цього недостатньо документації)

Я використовую jQuery для більшості своїх проектів, і це досить добре.

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


13
gwt використовує Java і генерує html + javascript
BobiYo

1
Я думаю, він мав на увазі написання Java-коду на Java, який GWT генерує відповідний JavaScript для клієнта. Див. Code.google.com/webtoolkit/overview.html
Russ Cam

@Chris GWT робить код запису розробника на Java, а потім при обробці запиту доставляє java у javascript для цього конкретного типу браузера
AutomatedTester

Гаразд, вибачте за те, що ви перейшли на коментар Java / JavaScript. Бобане, якщо ви використовуєте gwt для генерації html + javascript, я не впевнений, що jQuery можна використовувати як заміну gwt. Хтось може мене виправити з цього приводу, чи я пропускаю суть?
Chris Nicol

Це правда, що їх обох не можна порівнювати, оскільки вони обидва мають різну концепцію, мені особисто подобається використовувати jQuery для проекту, але крім аргументу, що на розробку з gwt піде вдвічі більше часу, ніж з jQuery (на 100% впевнений для цього проекту), мені потрібно запропонувати більше аргументів :). Дякуємо за прояв інтересу до цього питання Кріс.
BobiYo

Відповіді:


63

Я пішов би з JQuery.

Одного разу я підтримував проект GWT, що зрештою змусило мене переписати його двічі. Перший як реконструйований додаток GWT, другий у JQuery.

Я дуже довго не торкався Javascript. Востаннє це було близько 2002 року. Я розробник Java, тому моє перше враження про GWT було приголомшливим. Але це було лише враження.

Я виявив проблеми з GWT:

  1. Це змушує вас слідувати його структурі клієнт / сервер. Врешті-решт, все, що я хочу - це AJAX та ці хороші віджети. Віджети GWT самі по собі не здаються такими гарними. Естетично я віддаю перевагу Adobe Flex! Але щоб зробити порівняння ближчим, інтерфейс JQuery виглядає краще, ніж GWT. Крім того, у вас є чудова підтримка Theme Roller від JQuery.

  2. Я спробував DWR. Це чудово. Набагато простіше увімкнути AJAX у коді Java за допомогою DWR, ніж GWT.

  3. Якщо ви використовуєте GWT, зрештою вас змусять вивчити JavaScript. Колись Ар'єн із SpringSource сказав про XML та SOAP (хоча не точну цитату): "Як ви можете розробляти WebServices і не знати XML? SOAP - це XML. Ви не можете цього уникнути". Те саме з GWT. Врешті-решт це Javascript.

  4. Реально, Javascript не так важкий для вивчення проти Java. Більше людей знає Javascript, ніж Java. Це знають навіть веб-дизайнери. Ви програміст і боїтесь Javascript?

  5. Повернутися до проекту, який я переписав. Коли я переписав наш додаток GWT, мені довелося майже два місяці, щоб переписати його. З JQuery у мене пішло два тижні, і я заіржав з JavaScript.

  6. З JQuery ви насправді не пишете hardcorde JavaScript. Ось чому ви використовуєте JQuery в першу чергу. Підтримувати код за допомогою GWT - це жахливо. Ви хочете побачити останні зміни, які ви зробили в коді ... перейдіть до компіляції ... зачекайте GWT ... 5 хвилин ... промийте ... і повторіть і сподівайтесь, що це не призведе до помилки. Якщо це станеться, ви будете перекомпілювати знову і чекати ще 5 хвилин. Промити і повторити. За допомогою JQuery змініть рядок, оновіть браузер. Готово.

Я знаю, що я тут не об’єктивний, але я просто ділюсь своїм досвідом :) Мораль - не лякайся Javascript. Google все одно використовує Javascript


1
мені просто потрібно скомпілювати його один раз і продовжувати оновлювати веб-сторінку, якщо у мене є оновлення: D
Чан Ле

3
Кріс - ти дивився на GWT 2. *? Чи покращила б ця версія багато з того, що ви згадали?
Рей

2
Незалежно від вибору мови, ви можете відчути потребу переписати будь-яку програму (важко звинувачувати це на GWT). Є програми Java або навіть веб-програми, які я бачив, що я б дуже хотів їх переписати лише тому, що вони погано написані, а не лише тому, що це Java. Це не означає, що винна Java - це був оригінальний автор (и) цього коду Java. Я згоден з тим, що проблема з компіляцією займає занадто багато часу. Крім того, написання великої кількості JavaScript може призвести до коду, який є настільки ж неможливим, якщо розробники не дисципліновані.
Ло-Тан

9
Я використовую GWT з Maven, що дозволяє мені компілювати серверну частину програми лише тоді, коли я вношу зміни на стороні сервера. І коли я вношу зміни лише на стороні клієнта, налагоджувач GWT негайно відображає ці зміни .. тому єдиний раз, коли мені доводиться чекати 5 хвилин, поки компілятор GWT закінчить роботу, це коли я вношу зміни, які впливають як на стороні клієнта, так і на серверній стороні, наприклад, додавання нових служб RPC, що трапляється лише на самому початку розробки і дуже епізодично після цього. Тож я можу сказати, що налагодження GWT - це не що інше, як ви описуєте.
Ренато

1
Для розробників JAVA іноді це здається хорошим вибором, час компіляції - це відмовно в GWT, з іншого боку, налагодження в коді Java і пошук помилки - це чудова річ у GWT, наразі ми подаємо позов до GWT - це один із наших проектів, і він добре працює для нас все-таки, наприклад, складний GRID, нам допомагає, але конкретна структура зовсім не зручна для розробників, деякі віджети GWT зовсім не потужні, ми змішали GXT з GWT для кращого вигляду, погляд GWT зовсім не переконливий, тому ми тренування зі змішуванням GXT + GWT + Smart GWT, але я думаю, це призведе нас до проблемної ремонтопридатності коду
Forhad

56

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

Однак, якщо ви знаєте і розумієте JavaScript, я б використовував JavaScript незалежно від обраної вами бібліотеки. Хоча у мене не було можливості занадто уважно оглянути згенерований код GWT, я бачив кілька прикладів введення / виводу Google, і хоча він виглядав цілком цукерковим та блискучим, ви, швидше за все, створили більш елегантний код JavaScript, роблячи це за старою модою шлях.


1
Нещодавно я писав
AlexJReid

22
Ви не налагоджуєте код Javascript, ви налагоджуєте код Java.
Alberto Zaccagni

1
@Alberto, я не думаю, що Джастін мав на увазі це так, як ти вказуєш на це. Він мав на увазі "налагодження" в більш загальному значенні.
Кріс,

1
у мене був відносно складний проект GWT, і він був запущений і запущений, ніколи не торкаючись javascript. Це кредит як Google, так і GXT.
Jorel

1
@Espen Ти все ще до чогось прив'язаний, за винятком того, що зараз це GWT (що не обов'язково погано чи добре).
Джастін Джонсон,

18

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

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

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

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


15

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

Отже, якщо у вас купа статичних сторін із незалежними віджетами, такими як календар, слайдер тощо, jQuery досить. Якщо ви хочете створити односторінковий додаток, можливо, із великою командою, GWT - кращий спосіб. GWT має багато якісної дизайнерської архітектури під капотом, особливо побудова в шаблоні MVP, система шаблонування UI-Binder, підтримка i18n тощо.

Отож, як розробник JavaScript працює більше року над великою програмою GWT, я б рекомендував ніколи не створювати односторінкову програму лише з jquery, оскільки вона не була створена. Якщо ви хочете використовувати JavaScript, подивіться на хребет, хребет, нокаут або доджо.

До речі, наскільки хороша архітектура GWT, у вас буде багато накладних витрат на JAVA. Тож якщо ваш проект зростає, час компіляції властивостей css та i18n буде дратувати.


1
Хорошим фреймворком JS для побудови додатків є Enyo , який якимось чином всеосяжніший, ніж магістральний одер-нокаут.
inta

10

"Коні на курси"

Виберіть, який із них має найбільший сенс для проекту. Деякі речі, які слід врахувати

  • Вузькі часові рамки і більш знайомі з одним над іншим
  • Швидкість та ремонтопридатність для інших розробників для використання обраного інструменту. Поширеність одного над іншим може мати наслідки і тут
  • Майте будь-який код, який міг би бути використаний вже в проекті, наприклад, плагіни, утилітні функції тощо.

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

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


10

Відповідь непроста. Відповідь "це залежить":

GWT:

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

jQuery:

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

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


3

Я згоден з Russ Cam, що це залежить від того, з чим знайома ваша команда. Коли я роблю роботу для своїх особистих бізнес-додатків, я набагато віддаю перевагу GWT. Я вважаю, що javascript, навіть з jquery, має надокучливий об'єктно-орієнтований синтаксис. Якщо у вас є програма з 10000 рядків коду інтерфейсу користувача, jquery здається мені чимось, що призведе до безладу в обслуговуванні коду з поганим повторним використанням.

Хтось знає про масштабний проект, зроблений у jquery?

Думаю, якщо ви намагаєтесь вичавити кожен останній байт із отриманого розміру файлу, не використовуйте жодної бібліотеки та не пишіть javascript з нуля (тобто: ефект зникання домашньої сторінки google).

Щось, над чим слід подумати щодо javascript / jquery проти gwt. Якщо ви використовуєте загальноприйняті об'єктно-орієнтовані принципи та шаблони проектування, швидше за все, ви отримаєте ефективніший код за допомогою gwt. Чому?

Візьмемо приклад поліморфізму. Якщо ви напишете програму, яка використовує важкий поліморфізм у javascript, ви отримаєте перевагу ремонтопридатності та повторного використання коду. Однак ваш код також отримає показник ефективності використання поліморфізму.

Тепер, якщо ви використовували gwt, ви також отримаєте вигоду для ремонтопридатності та повторного використання коду, яке це забезпечує, АЛЕ компілятор gwt оптимізує поліморфізм у використанні конкретного класу, отже, збільшуючи продуктивність.


3
Деякі величезні проекти, що використовують jQuery / Vanilla Javascript: Gmail, Google Reader, Google Maps, Grupon, Shopify, Facebook ... Проблема полягає лише в тому, щоб знати, як користуватися Javascript. І вам слід порівнювати Backbone / Knockout / Angular з GWT, а не GWT з jQuery.
Celso Dantas

3

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


3

Основними проблемами, які я бачу з GWT порівняно із власним рішенням Javascript (jQuery чи інші), є:

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

  • Оскільки ви пишете свій код на Java, ви можете використовувати бібліотеки Java. Якщо ви знайдете якусь бібліотеку JS, яка вам подобається, додати її до свого проекту GWT буде надзвичайно складно, можливо, вам доведеться написати для неї обгортку Java. Якщо ви розробляєте рідну JS, ви можете просто додати її до свого проекту.

  • JS - це чудова мова сама по собі, з твердою об'єктною моделлю, яка відрізняється від Java. Я розробив кілька програм у власній JS для HP webOS, і з подивом виявив, що багато упереджень, які я мав щодо мови, були неправдивими. Ви можете писати чистий, ефективний та ремонтопридатний код у JS стільки, скільки можете в Java, і якщо ви знайдете час, щоб зрозуміти об'єктну модель JS, вам навіть не потрібно буде використовувати бібліотеку підтримки, щоб імітувати більш типовий клас / об'єкт модель на зразок Java та C ++ поверх JS. Прототипи Javascript досить круті.

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

Удачі.


4
тому ми пишемо програми в машинному коді
Ярослав Заруба


2

jQuery = низькорівневе розуміння

Окрім звичайного одного javascript, а інший - пояснення Java, Jquery має більш близьке співвідношення "один до одного" з javascript, тоді як GWT більш абстрагований. Тож якщо ви віддаєте перевагу глибше розуміти, що відбувається з вашим кодом на низькому рівні (javascript), тоді jquery - правильний шлях.

GWT = розуміння абстракції = функціональна гарантія

GWT пропонує перевагу згенерованого компілятором коду, тому може гарантувати більшу гарантію нормальної роботи вашого веб-сайту. Однак, як і будь-якому великомасштабному API, потрібно витратити час, щоб зрозуміти, що робить цей клас і що робить цей клас, і чи сумісний він із цим API чи ні.

низькорівневе розуміння може бути кориснішим

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

GWT заспокоює менеджерів, але дорого

Але знову ж таки java та asp.net, як правило, віддають перевагу більшим компаніям, б / к, є більша технічна підтримка (тобто Oracle та Microsoft), а затяті сучасні менеджери, як правило, покращують сон вночі, коли знають, що можуть вирішити проблему A, просто заплативши x суму доларів за підтримку. Тож після прийняття системи вони незабаром починають розуміти, що технічна підтримка коштує занадто дорого, і за кращих розробників дешевше платити більше. Отже, кар’єра Java або .net зазвичай кладе їжу на стіл.

Ремонтопридатність

Також API, такі як GWT, простіше в обслуговуванні. Я міг лише уявити собі жах, який пережив би хтось, якщо б йому довелося налагоджувати мій код JavaScript. Але це було до того, як я став кращим та чистішим програмістом, і оскільки я знав усі аспекти коду, немає чого налагоджувати б / с, з ним ніколи не було проблем.

Низькорівневе кодування дає вам майже 100% розуміння того, що відбувається, однак за допомогою API ви витрачаєте час, граючи в детектора помилок в Google і публікуючи запитання на таких сайтах, як StackOverflow. Але менеджери цього не розуміють, більшість з них не є програмістами.


6
Справді, вам потрібно навчитися робити абзаци.
Kirk Woll,

1
@KirkWoll Готово! Будь ласка, не соромтеся виправляти / покращувати заголовки абзаців ... (я не користувач 922475, оригінальний автор)
Вітаю

1

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

Наприклад, ви можете кодувати на Java, якщо хочете або маєте наявний вихідний код, а потім використовувати jQuery для інших матеріалів. Є доступні обгортки, але GWT може викликати JavaScript (і навпаки) див. Http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/



0

Активна група користувачів та набирання популярності останнім часом однозначно вказує на перемогу jQuery.


1
це залежить від того, що ви робите - там немає єдиного розміру, який підходить для всіх бібліотек. jQuery чудово підходить для поступового вдосконалення наявної розміченої сторінки, тоді як gwt призначений для створення складного, масштабного інтерфейсу додатків у браузері. Ймовірно, вам буде важко зробити інтерфейс клієнта Google Wave за допомогою jquery.
Chii

7
Php теж є переможцем, але це не означає, що ми повинні ним користуватися
Рох

1
тоді PHP має бути найкращим у світі
Ярослав Заруба

це залежить від конкретної ситуації
Форхад,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.