Лучшая библиотека виджетов GWT? [закрыто]


134

Вопрос ко всем гуру GWT - какая из лучших библиотек GWT виджетов существует? И почему?

Список на основе ответов:

И наконец- новое поколение основанное на JsInterop :


Вы забыли включить gwt-mosaic в список?
Ашвин Прабху

2
Этот вопрос не был конкретным в отношении требований, поэтому, как и ожидалось, за наиболее заметный (основной GWT) проголосовали, даже если он не отвечает всем требованиям. Если у вас сложное корпоративное приложение с большим количеством экранов и большим объемом данных, и вам нужны мощные сетки и редакторы, для этого и нужен SmartGWT. Простой GWT отлично подходит для многих приложений, но многие предприятия с этим конкретным набором требований оценивают GWT и решают, что SmartGWT лучше подходит. Чтобы получить обзор и решить для себя, прочитайте Руководство по быстрому запуску. smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf
Чарльз Кендрик

вам не хватает gwt-bootstrap
caarlos0

Я создал предложение для сайта, чтобы дать такие вопросы, как этот официальный дом вдали от переполнения стека. Это называется Рекомендации по коду. Помогите воплотить его в жизнь, присоединившись и задавая вопросы прямо сейчас!
daviewales

Это выглядит также многообещающе: gwt-material-demo.herokuapp.com
kozla13

Ответы:


52

Не связывай себя ни с одной из этих библиотек. Используйте Vanilla GWT для создания структуры вашего проекта. В частности, используйте шаблон MVP и шину событий. Пожалуйста, обратитесь к статье Google, чтобы узнать, как лучше спроектировать ваше клиентское приложение с помощью GWT: Создание приложений MVP

После этого вы можете использовать любой виджет этих библиотек (например, таблицу или комбинированный список, средство выбора даты и т. Д.) И включить его в свой проект. Попробуйте использовать ТОЛЬКО расширенные компоненты, если вы не видите способа сделать это с помощью vanilla GWT. Таким образом, вы не привязываете себя к этим библиотекам, которые ВСЕГДА испытывают боль, когда вы пытаетесь сделать что-то, что не появляется в демонстрационном приложении, содержит много ошибок и их поддержка в лучшем случае плохая.

Как искать виджеты следует в следующем порядке:

Осторожнее с другими библиотеками, я работал с ними (и до сих пор ночные кошмары).


1
Какой-нибудь конкретный опыт работы с другими библиотеками вы бы хотели поделиться?
Адам

6
GXT, я бы не советовал это своему злейшему врагу. Если вы считаете это, пожалуйста, сначала Google и убедитесь, что вы знаете, куда вы попадаете. SmartGWT, JS-обертка, очень некрасивая. Беги подальше от этого. У меня есть опыт работы с обоими в реальном проекте. Сначала я использовал SmartGWT, но его ограничения заставили меня перейти на GXT. Вскоре я обнаружил беспорядок, который у них там был, с привязками форм и java-дженериками (Иисус, каждый раз, когда я помню ....) Я не знаю, что хуже! Я закончил это, да, но я очень страдал. После этого я научился использовать vanilla GWT и только тот виджет, который мне понравился из других библиотек.
monzonj

Этот пост старый и по своей природе будет датироваться, но я широко использовал GXT в течение последних 2 лет, и, хотя у него есть проблемы, он также позволяет создавать очень хорошо выглядящие приложения с относительной легкостью. Он имеет очень полезные сетки, буферизованные сетки и живые сетки. SmartGWT также имеет хорошо оснащенные сетки и компоненты. Также рассмотрим Ваадин .
Карл Притчетт

43

Зависит от того, что вы подразумеваете под «лучшим». Лучший вид? Лучший API? Лучше всего для расширения ваших собственных потребностей?

Например, я просто оценивал классы таблиц для использования в нашем приложении. Мы использовали GWT-Ext, но у нас много проблем с производительностью, и очень трудно подобрать таблицы по размеру так, как они нам нужны. Я подошел очень близко к GWT-Mosaic , но решил вместо этого создать виджеты в инкубаторе GWT .

Итак, почему я сделал этот выбор? Похоже, что слишком многие библиотеки там имеют свой собственный, из-за отсутствия лучшего слова, багаж. Либо вам придется полностью погрузиться в какую-то инфраструктуру MVC (которая может быть не полностью совместима с остальной частью вашей кодовой базы), либо вы должны принять новую чью-то запутанную систему компоновки, либо вам придется смириться с тем, что вы не можете действительно отладить код (потому что это просто оболочки JSNI).

Не поймите меня неправильно, инкубатор GWT не совершенен ... виджеты в некотором количестве изменяются. В моем случае это был лучший выбор. Это дает мне хорошее (но определенно не идеальное):

  • API
  • растяжимость
  • Смотри и чувствуй (ну, это немного слабовато, но для этого и нужен CSS.)

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

  • Стандартные виджеты GWT (с большим количеством пользовательских стилей)
  • Инкубаторные столы GWT
  • Несколько доморощенных виджетов

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


Большинство библиотек виджетов требуют некоторой лицензии из-за зависимости от некоторой внешней библиотеки AJAX. Это также добавляет дополнительный размер вашему решению. Также обратите внимание, что большинство библиотек виджетов зависят от одного или нескольких дополнительных внешних компонентов.
IgorM


10

GWT одна довольно хорошая библиотека.

Я не использовал все перечисленные, но могу рекомендовать Ext GWT .


2
Я согласен с голым GWT. Наряду с проектами инкубатора ( code.google.com/p/google-web-toolkit-incubator ), вы можете реализовать все что угодно. Я использовал MyGwt, но он отстой, когда они закрывают проект и меняют его имя, а все форумы и поддержка меняются, лицензия
Robert Childan

1
Это должно быть ужасно. Это не очень практичный способ поддержки программного обеспечения.
DragonBorn

9

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


8

Большинство упомянутых библиотек не имеют открытого исходного кода и, что еще хуже, являются просто обертками над библиотекой JavaScript. Сила GWT заключается в том, что приложение работает в разных браузерах (в частности, из-за генерации кода для «больших» браузеров). Эти базовые библиотеки JavaScript могут вызвать много проблем.

Я согласен с JGDIN GWT Incubator и GWT Mosaic пока что являются лучшими.


Очень вводит в заблуждение. Почти все перечисленные библиотеки имеют открытый исходный код с коммерчески дружественными лицензиями (Apache, BSD, LGPL), кроме ExtGWT (GPL). Более того, даже в очень ограниченном наборе компонентов, предоставляемом в настоящее время, GWT имеет много кросс-браузерных ошибок - просто поищите их в базе данных ошибок, чтобы убедиться в этом. Компилятор GWT не волшебен и не исправляет автоматически странные, специфичные для конкретной ситуации ошибки в макете браузера и т. П. - они должны обходить их, как и любой другой фреймворк. И при этом они не всегда на переднем крае - у SmartGWT нет официальной поддержки iPhone или Android.
Чарльз Кендрик

7

Не сказать, что это «лучший», но я в последнее время использую GWT-Ext на работе. У него есть плюсы и минусы:

Плюсы:

  • Относительно прост в настройке и использовании
  • Достойное сообщество за этим стоит
  • Множество примеров в Интернете, каждый из которых имеет сопровождающий код
  • Хороший выбор виджетов, которые охватывают широкий спектр функций

Минусы:

  • Делает предположения о формате и структуре ваших данных, которые вы, возможно, не сможете вместить
  • Библиотека - это просто оболочка JSNI, которая усложняет отладку и расширение
  • Будущая поддержка и развитие библиотеки сомнительна
  • Некоторые раздражающие кросс-браузерные проблемы все еще существуют (особенно с макетами)
  • Функция поиска на их форумах по сути бесполезна. (Это становится моей любимой мозолью> _ <)

6

НЕ используйте ни один из них! Если вы планируете разрабатывать крупномасштабное приложение, вам следует рассмотреть возможность использования шаблона MVP. Лучшая реализация вокруг - это фреймворк MVP4G , он поддерживает разделение кода GWT из коробки. Есть много отличных примеров, с которых можно начать. Самый ценный из них - Mvp4GModules.


5

Добавьте новый: GWT-Bootstrap :)

Сейчас нет стабильной версии, но скоро будет.


1
GWT-Bootstrap обладает потенциалом быть лучшим.
Майк

За исключением очень фундаментального контроля дизайна в таких областях, как вкладки и модалы. Им нужно уменьшить свою зависимость от JQuery и больше думать о «приложении».
Καrτhικ

Патчи очень приветствуются. В любом случае, спасибо за предложение
caarlos0

4

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

Сторонние библиотеки часто могут неожиданно нарушить ваши планы. И трудно найти и исправить источник проблемы.

Поэтому я бы предложил использовать обычный GWT.


3

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


3

для меня EXT-GWT (он же GXT) - лучшая библиотека, доступная в настоящее время, я использую ее в 6-месячном проекте, и она очень помогает со многими предопределенными компонентами, такими как сетки, деревья ... Это также прекрасно


3
Ты, наверное, шутишь! Я использую GXT уже 18 месяцев ежедневно, и могу честно сказать, что это кошмар.
Алекс Уорден

2

SmartGWT - это хорошая библиотека, в которой есть много примеров, но пользовательский интерфейс не такой элегантный. Для пользовательского интерфейса Ext GWT это хорошо.


2

Группа пользователей gwt-mosaic выглядит не очень активной, и я не смог найти руководство пользователя, кроме фрагментов вики. gwt-mosaic познакомила меня с двумя интересными инструментами.

1) gwt-mosaic включает в себя оболочку для PageBus Tibco, который является инструментом публикации / подписки для JS-частей вашего приложения (обработчики RPC, обратные вызовы виджетов, установщики виджетов). Это альтернатива шине событий GWT.

2) gwt-mosaic поощряет использование Beans Binding (http://code.google.com/p/gwt-beans-binding/) для привязки данных к виджетам и проверки виджетов.

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

Я слышал, что ext-gwt вялый, а файлы JS большие.

Инкубатор виджетов gwt выглядит устаревшим. Я верю, что роскошная сетка будет выпущена с новым gwt.

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


Там нет проблемы SmartGWT GAE с большими файлами .jar, если вы не игнорируете инструкции по установке в документах, на самом деле SmartGWT Pro включает в себя пример проекта, который работает на GAE и предоставляет полный CRUD, используя JPA для сохранения. Кроме того, дешевый является относительным - самый дорогой вариант лицензии и поддержки, предлагаемый для SmartGWT, все еще является незначительной частью стоимости доставки всего приложения / продукта, если учесть стоимость разработчиков, QA, аппаратного обеспечения / хостинга и т. Д. Если у вас ограниченный бюджет, есть бесплатная (LGPL) версия.
Чарльз Кендрик

2

Определенно не SmartGWT. Их структура раздутая и имеет очень полусыренную природу. У них есть миллион виджетов, но попытка заставить их работать на ваш проект не легка. Источники данных очень сильно усложняют процесс управления вашими данными, например, чтобы получить доступ к данным в вашем источнике данных, вы должны часто использовать fecth и проверять. Хотя вы можете кэшировать результаты, их не всегда легко опрашивать.

RPC - еще одна слабая и запутанная область. В документации и на форумах противоречивая информация. Хотя в документации будет сказано, что вам редко следует использовать пользовательские операции как часть ds, на форуме вам сообщат, что это совершенно нормально. Научиться эффективно использовать эти инструменты - трудный подъем в лучшие дни.

Они будут перепродавать продукт. Например, пакет карт / аналитики содержит графики ... Но эти графики не будут отображать отрицательные значения или позволят вам манипулировать метками осей любым осмысленным способом. И они открыто отвечают на вопросы об этом на форуме с отношением «да и что». «Мы не планируем добавлять это в 3.0x, хотя это один из наших пунктов продажи, это на нашей дорожной карте». Когда они продавали мне пакет, они никогда не упоминали, что я не могу отображать отрицательные значения. В самом деле? Какой график не должен быть в состоянии показать отрицательные значения? Я могу думать только об одном - о том, что изображает количество несчастных изоморфных клиентов.

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

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

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


Все совершенно неверно, как вы можете легко проверить. Вот пример MVC ( smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc ), который этот пользователь в основном не получает - прочитайте описание, и вы увидите, как демонстрируется огромная сила. Я даже не могу догадаться, что означает необходимость «извлекать и проверять», но, скорее всего, пользователь не прочитал Руководство по быстрому запуску и неправильно использует систему. Просто прочтите его сами ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ), и архитектура понятна и не требует пояснений. Кроме того, наши графики отображают отрицательные значения.
Чарльз Кендрик

Давайте будем честными здесь. Текущая стабильная сборка 3.0 не поддерживает отрицательные числа, и, по их собственным словам, они отказываются поддерживать ее: forums.smartclient.com/showthread.php?t=21219 .
бинарный гигант


?? Этот поток указывает клиенту использовать точечный релиз (3.1). Это бесплатно, не обновление, и это очень стабильно. Вы пытались сделать это как попытку перепродать или извлечь больше денег, что не только ложно, но и не может быть дальше от истины: просто посмотрите на все основные новые функции, которые люди получают бесплатно в 3.1 ( blog.isomorphic) .com /… ). Вы явно вводили в заблуждение намеренно, что проливает свет на другие ваши комментарии.
Чарльз Кендрик

Я не намерен вводить в заблуждение. В ответ, однако, я скажу, что вводить в заблуждение все замечательные возможности продукта, в данном случае аналитического пакета, вводит в заблуждение, но как-то не учитывать, что он (до 3.1) фактически не отображал отрицательные числа. Кроме того, обновление до версии с тремя точками - это хорошо, если в версии 3.0 нет пользовательских реализаций CSS, что подчеркивает еще один момент, когда работа с SmartGWT является болезненной ...
binarygiant

1

Библиотека Google по умолчанию является самой мощной библиотекой.

Ext GWT добавляет навороты, но кроме этого он похож на Google.


1

В настоящее время нам нравятся виджеты GWT Mosaic . Мы работали с ext-JS, и мы катали свои собственные виджеты в прошлом. Лицензирование ext-JS и массовая работа были для нас проблемой. Роллинг наш не то, что мы хотим сделать. Мозаика дает нам счастливую золотую середину, которая, как нам нравится думать, станет еще более счастливой золотой серединой по мере развития проекта.


1

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


1

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


1

Я не упомянул об этом, Ваадин (ранее известный как IT Mill Toolkit), но, возможно, это потому, что это технически не совсем GWT; поскольку их FAQ говорит:

Чем это отличается от GWT?

Приложения GWT запускаются в браузере, а приложения Vaadin - на сервере. На самом деле мы используем GWT в качестве «движка рендеринга» на стороне браузера, поэтому вы можете комбинировать Vaadin и GWT.


1

SmartGWT работает медленно, примеров нет, и очень сложно найти ответы даже на основные вопросы, то есть посмотреть все мои неотвеченные вопросы на этом форуме. Я сбрасываю smartgwt.


SmartGWT, безусловно, находится в стадии разработки, но становится все лучше. Дважды я велел разработчикам исправлять ошибки в стволе в течение нескольких дней после того, как я сообщал о них, что обнадеживает. Это большой и тяжелый API, хотя вы должны спросить себя, соответствует ли оно написанному вами приложению.
AndrewR

SmartGWT имеет больше образцов, чем любая из обсуждаемых здесь библиотек. Это объективно проверяется: ( smartclient.com/smartgwt/showcase/#main ) У нас также есть чрезвычайно сильное руководство по быстрому запуску ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ). Пожалуйста, посмотрите на вопросы, заданные этим пользователем - один был недействительным, один я ответил.
Чарльз Кендрик


0

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

С веб-сайта:

GWT Portlets - это бесплатная веб-платформа с открытым исходным кодом для создания приложений GWT (Google Web Toolkit). Он определяет очень простую и продуктивную, но мощную модель программирования для создания привлекательных модульных приложений GWT.

Модель программирования чем-то похожа на написание портлетов JSR168 для сервера портала (Liferay, JBoss Portal и т. Д.). «Портал» - это ваше приложение, созданное с использованием инфраструктуры портлетов GWT в качестве библиотеки. Функциональные возможности приложения разрабатываются в виде слабо связанных портлетов, каждый из которых имеет дополнительный сервер DataProvider.


0

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



0

Две важные вещи - и то, что пропускает большинство библиотек - это модульное тестирование и отладка. Это где GWT сияет. Если вы используете библиотеку, основанную на vanilla js, вы отказываетесь от возможности модульного тестирования и отладки своего проекта. Как разработчик GWT, вы должны учитывать эти моменты и использовать библиотеку без или с минимальной зависимостью от js.


0

Мы занимаемся проектами gwt более 2 лет и придерживаемся виджетов по умолчанию. Мы сделали нашу собственную библиотеку с открытым исходным кодом, чтобы автоматически заполнить стандартные или наши собственные расширения виджетов. Пожалуйста, проверьте это, это называется gwt-jet . Он очень хорошо протестирован, поскольку мы используем его в больших производственных средах, и мы надеемся, что он будет расти с течением времени.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.