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

#java #javascript #jquery-ui #gwt #sproutcore

#java #javascript #jquery-пользовательский интерфейс #gwt #sproutcore

Вопрос:

Я работаю над клиентским Java-приложением, для которого я хочу создать веб-пользовательский интерфейс (который будет обслуживаться браузером из локального приложения). Рискуя чрезмерно упростить, это инструмент для ведения микроблогов, который будет поддерживать функциональность, аналогичную Twitter и Facebook. У него открытый исходный код, и вы можете прочитать больше в нашей wiki.

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

До сих пор я рассматривал Sproutcore и GWT.

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

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

Еще я думал об использовании CoffeeScript (который кажется ему более приемлемым, чем JavaScript, и для него есть разработчики Maven), возможно, вместе с jQuery-UI.

Какие еще варианты мне следует рассмотреть?

Ответ №1:

Рекомендовать два больших фреймворка javascript Sencha и Cappuccino.

У них есть обширный инструментарий пользовательского интерфейса «из коробки». В последнем встроен фреймворк MVC, в первом встроена общая библиотека JavaScript. Оба варианта настоятельно рекомендуются.

Также, как рекомендуется, jQuery UI является разумным инструментарием. Лично я бы выбрал Sencha за его богатый инструментарий пользовательского интерфейса и легкий фреймворк MVC, такой как Backbone. Боюсь, для этого действительно требуется хорошее изучение JavaScript.

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

Ответ №2:

Взгляните на Vaadin, основанный на GWT, но более простой в использовании. Я использую его уже 2 года, и я тоже не дизайнер.

Комментарии:

1. Такие серверные фреймворки подойдут, если вы не планируете вручную взаимодействовать с пользовательским интерфейсом на клиентском JavaScript. Если вам придется вручную взаимодействовать с автоматически сгенерированным HTML, это быстро превратится в кошмар .

2. Райнос, ты можешь привести конкретный пример? Зачем мне вручную взаимодействовать с javascript клиентского формата с помощью Vaadin?

Ответ №3:

Взгляните на jQuery amp; jQuery UI (jQuery Modile, если вы хотите развернуть на портативных устройствах)

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

Ответ №4:

Мне не нравится писать простой JavaScript, поэтому я немного расскажу вам о фреймворках на основе Java. Недавно я выбрал Google Web Toolkit.

Плюсы:

  • множество материалов
  • Eclipse плагин Google
  • Очень интуитивно понятный API
  • сторонние библиотеки
  • Необычные виджеты оптимизированный JavaScript
  • множество обобщений
  • очень активное сообщество
  • потрясающие асинхронные обратные вызовы

Минусы:

  • очень медленная отладка, которая рано или поздно сведет вас с ума
  • много устаревшего кода для столь молодого фреймворка

Смешанные чувства:

  • Вам не обязательно писать декларативный пользовательский интерфейс (вы можете выполнять разработку, подобную Swing), но ваш код становится все больше и менее обслуживаемым, поэтому вполне вероятно, что вы в конечном итоге освоите какой-нибудь декларативный пользовательский интерфейс, такой как UI Binder
  • Визуальный конструктор для GWT в чем-то хорош, но очень нестабилен (eclipse) : (

Некоторые соображения:

Создайте несколько прототипов с помощью Vaadin. Попробуйте выполнить некоторую отладку. Затем попробуйте GWT и выполните отладку в проекте аналогичного размера. Рассматривайте отладку как ОЧЕНЬ важный фактор принятия решения, потому что отладка GWT была для меня самой неприятной вещью.

Рассмотрите JSF какой-нибудь хороший фреймворк с богатыми компонентами для JSF, такой как RichFaces, ICEfaces, PrimeFaces и т.д. (Но ваше приложение больше не будет «легким» и «маленьким», если вас это действительно волнует). Убедитесь, что вам абсолютно комфортно работать со средой (IDE плагины), там ничто не сравнится с JSF (сегодня я бы выбрал RichFaces Seam, если можно использовать полную Java EE).

Комментарии:

1. В целом, мне нравится GWT, НО: 1. документация в некоторых частях отстой 2. для небольших приложений она полностью раздута 3. легко писать спагетти-код, если вы не используете UiBinder 4. стандартная библиотека виджетов могла бы быть лучше

2. @Вспомогательный метод: Сегодня я, вероятно, больше не выбрал бы GWT из-за отладки. Возможно, только для какого-нибудь очень легкого и быстро выполняемого интерфейса или исключительно для внутреннего интерфейса с асинхронными вызовами.

Ответ №5:

Если вы не хотите изучать javascript, я рекомендую вам GWT с Sencha-GWT (GXT), вы можете разработать все свое приложение на языке Java, а также отладить свой код на java.

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

Также вы можете смешать его с hibernate и giled для сохранения ваших данных, а giled помогает вам сериализовать объекты hibernate.

Ответ №6:

Я писал приложение на SproutCore для внешнего интерфейса и серверной части Java. На мой взгляд, это работает идеально.

Серверная часть может перестать беспокоиться о содержимом HTML и JavaScript на стороне клиента, если запрос является XHR или простым запросом / ответом. Я могу реализовать серверные части, используя простые старые Java-сервлеты, и беспокоиться только о данных, которые передаются между клиентом и сервером (по большей части в формате JSON).

Клиент стал быстрым и отзывчивым, а в SproutCore имеется большое количество компонентов, которые вы можете смешивать и подбирать.

Другими словами, с помощью SproutCore (и Cappuccino, и других полноценных фреймворков MVC JavaScript) вы можете позволить своему клиенту делать то, что у него получается лучше всего: визуализировать HTML, CSS и JavaScript, оставляя вашему серверу беспокоиться о том, что у него получается лучше всего: извлекать, хранить и обновлять данные. Если вам интересно, исходный код для этого проекта доступен с лицензией GPLv3: https://github.com/joachimhs/EurekaJ

Я написал статью о различных подходах между серверным MVC и клиентским MVC здесь:http://haagen.name/2011/05/24/The_RIA_MVC_Model.html.

Также SproutCore поставляется с лицензией MIT, поэтому его можно использовать без (m) каких-либо ограничений.