Должен ли я использовать Google Web Toolkit для моего нового веб-приложения?

StackOverflow https://stackoverflow.com/questions/30811

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хотел бы создать интерактивное веб-приложение AJAX с поддержкой базы данных, которое имеет пользовательскую систему календаря (определенный вид событий, редактирование).Для этого потребовалось бы довольно много JavaScript и AJAX, и я подумал о Google Web Toolkit для интерфейса и Ruby on Rails для серверной части.

Является ли Google Web Toolkit надежным и качественным?Какие скрытые риски могут возникнуть, если я выберу Google Web Toolkit?Можно ли легко объединить это с Ruby on Rails на стороне сервера?Или я должен попытаться напрямую использовать библиотеку JavaScript, такую как jQuery?

У меня нет опыта в веб-разработке, за исключением некоторого количества HTML, но я опытный программист (c ++, java, c #), и я хотел бы использовать только бесплатные инструменты для этого проекта.

Это было полезно?

Решение

RoR на самом деле является одной из тех вещей, с которыми GWT создан для хорошей работы, пока вы правильно используете REST.Это есть в книге приложений Google Web Toolkit, и вы можете посмотреть демонстрацию из книги, использующую эту идею здесь.Это не значит, что у вас не возникнет никаких проблем, но я думаю, что поддержка определенно есть.

Есть отличный проект для упрощения RoR / GWT, который вы можете найти здесь (MIT license).У меня еще не было возможности опробовать это, но, похоже, в это было вложено много мыслей.Одна загвоздка в том, что, похоже, он еще не был полностью протестирован с 2.1 Rails, только 2.0, поэтому вы можете столкнуться с несколькими (вероятно, незначительными и исправляемыми) ошибками.

Другие советы

Если вы хотите интегрировать GWT с бэкэндами, отличными от Java, такими как ROR, PHP и т.д., вам следует иметь в виду, что GWT 1.5 теперь поддерживает типы наложения JavaScript.Эта функция позволяет вам писать классы, которые могут быть сопоставлены поверх собственных объектов JavaScript, чтобы легко предоставлять методы доступа к свойствам этих объектов и другую расширенную функциональность.

Смотрите эту ссылку для получения более подробной информации:Типы наложения JavaScript

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

Если вы знаете JAVA и у вас есть где ее разместить (например, в контейнере tomcat или glassfish) Я бы порекомендовал это гораздо больше, чем использовать Ruby для серверной части.Основная причина заключается в том, что тогда вы сможете предоставить общий доступ ко всем своим объектам и использовать встроенный механизм RPC.Я делал это для довольно многих наших проектов, и это огромная экономия времени, не говоря уже о том, что код менее подвержен ошибкам, потому что вы не конвертируете свои java-объекты во что-либо, а затем обратно.

Я уже связывал свой GWT с Rails раньше, используя функцию to_json в Rails, а затем читая JSON в GWT.Все это поддерживается, но это гораздо более раздражает, чем просто выполнение серверной части на JAVA.

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

GWT - это очень высокое качество с отличным сообществом.Однако вам нужно знать CSS, если вы хотите изменить внешний вид вещей (вы это сделаете) - CSS может многое изменить в макете, как и обычный веб, если вы этого захотите.Библиотеки, такие как GWT-ext или ExtGWT, могут немного помочь, поскольку они имеют потрясающий внешний вид "из коробки", но за определенную цену (дополнительный размер для вашего приложения).

Вы можете закодировать все на Java, используя GWT, и вы можете интегрировать с ним существующие сторонние библиотеки javascript.Это очень вкусно.Однако я никогда особо не пользовался RoR, так что ничего не могу сказать по этому поводу.

Если у вас есть опыт работы с Java, но нет опыта работы с Javascript / CSS, то GWT станет для вас спасением (если вы, конечно, не хотите их изучать).В CSS так много мелких неудобных деталей.Нередко приходится тратить полдня на исправление несоосности в 2 пикселя, которая возникает только в IE6.

Я не уверен в том, насколько легко было бы использовать ROR для серверной части...Я уверен, что это возможно, поскольку GWT ajax-коммуникация - это просто сервлеты.Но они предоставляют некоторые действительно приятные функциональные возможности для передачи объектов Java туда и обратно, которые вы не сможете использовать, если ваш сервер также не использует Java.

Я писал о некоторых из них недостатки GWT недавно.В основном, недостатками являются:длительный цикл развертывания для внесения изменений в некоторые части приложения и довольно крутая кривая обучения.Как опытный Java-программист, второе должно быть меньшей проблемой, и если вы используете отдельный серверный сервер, первое также смягчается (поскольку полное повторное развертывание в первую очередь требуется при изменении "серверной" части приложения).

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

Но, эй, я говорю, дерзай.Потенциал у GWT потрясающий, и я готов поспорить, что у него будет светлое будущее.

Вам определенно следует использовать GWT для нового проекта (его довольно просто использовать и в старом проекте).

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

Еще одним преимуществом является возможность отладки вашего кода (что само по себе является адом для javascript).

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

Фундаментальное преимущество

GWT переводит программирование веб-уровня на JAVA.Итак, очевидные преимущества Java начинают вступать в игру.Это обеспечит объектно-ориентированное программирование.Это также обеспечит отличную проверку времени отладки и компиляции.Поскольку он генерирует HTML и Javascript, у него также будет возможность скрыть некоторую сложность в своем генераторе.

Фундаментальный недостаток

Недостаток вытекает из того же утверждения.GWT переводит программирование веб-уровня на JAVA.Если вы знаете JAVA, вероятно, вы никогда не будете искать альтернативный язык для написания своей бизнес-логики.Он самодостаточен и великолепен.Но когда дело доходит до написания конфигураций для JAVA-приложения.Мы используем файлы свойств, базу данных, XML и т.д.Мы никогда не храним конфигурации в файле класса JAVA.Подумайте хорошенько, почему это так?

Это связано с тем, что конфигурация - это статические данные.Для этого часто требуется иерархия.Предполагается, что он должен быть читабельным.Это никогда не требует компиляции.Для этого не требуется знание языка программирования JAVA.Короче говоря, это совсем другая игра с мячом.Теперь вопрос в том, как это соотносится с нашим обсуждением?

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

В предыдущем абзаце содержится очень, очень сильное заявление.Это объяснит, почему веб-страницы на основе HTML и XML по-прежнему остаются самыми популярными.XML - лучший в бизнесе инструмент для написания конфигураций.Фреймворк должен позволять четко отделять веб-страницу от бизнес-логики (цель MVC framework).Сделав это, веб-дизайнер сможет применить свои навыки визуализации и артистизма для создания великолепно выглядящих веб-страниц, просто настроив XMLS и не беспокоясь о тонкостях языка программирования.Разработчики смогут использовать все лучшее, что есть в business JAVA, для написания бизнес-логики.

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

Вы могли бы также рассмотреть Граали ("Groovy on Rails"), который дает вам преимущества фреймворка Rails и использования виртуальной машины Java.

Наша команда недавно задала тот же вопрос, и мы решили использовать GWT, тем более что плагин designer сделал работу с GWT более доступной для специалистов в команде, не связанных с java.Кто бы ни сделал этот выбор, просто будьте осторожны, вы НЕ используете плагин GWT Designer !!Он не обновлялся (по-видимому, по крайней мере год) для создания приложения GWT, совместимого с IE8.

Наша команда почти завершила разработку макетов приложений, которые отлично работали в Chrome, FF и Safari.Затем они взорвались в IE.IE 7 загружал частичные страницы (но не включал составные), а IE8 даже не смог загрузить приложение.Он просто завис.

Плагин designer имеет кнопки, которые позволяют пользователю добавлять виджеты CellTable, несовместимые с IE (CellTable, DeckPanel, Горизонтальная панель, Вертикальная панель и другие).Это вызовет сильную боль, когда макеты придется переделывать на java без помощи дизайнера.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top